帮我看一下这个程序中的问题(注释在程序上面了)?

[复制链接]
查看11 | 回复2 | 2010-7-31 07:58:11 | 显示全部楼层 |阅读模式
#include "stdio.h"
#include "string.h"
typedef struct student//结构体一定要先定义;
{
char num[5];
char name[10];
char sex[3];
int gold;
}ST;
void fun(ST *a,int n)
{
ST m=a[0];
int i;

printf("学号\t姓名\t性别\t得分\n");
for(i=0;i<n;i++)
{
if(m.gold<a.gold)
{

m=a;

printf("%s\t%s\t%s\t%d\n",m.num ,m.name,m.sex,m.gold);
} //为什么这句输出不能改为写在 main 函数中fun 的调用之后?
}
}
main()
{
ST a[3]=
{
{"01","悟空","男",59},
{"02","八戒","女",57},
{"03","沙僧","男",65}
};
int i;

printf("学号\t姓名\t性别\t得分\n");
for(i=0;i<3;i++)
{

printf("%s\t%s\t%s\t%d\n",a.num ,a.name,a.sex,a.gold);
}
fun(a,3);
}

回复

使用道具 举报

千问 | 2010-7-31 07:58:11 | 显示全部楼层
楼主你好!!!其实这是一个关于在作用域的问题!!楼主定义的结构体变量m是在fun()函数中的,也就是说m的作用域就是fun()函数的大括号内{},当fun()函数调用结束时,m就不起任何作用了,其实具体的说是m会被系统收回其内存空间,要想在fun()函数后再用变量m的值当然就不作用了。修改的第一种方法是:把结构体变量设置为全局变量。第二种,返回有一个结构体变量。我用第二中方法谢该如下:#include "stdio.h"#include "string.h"typedef struct student//结构体一定要先定义;{ char num[5]; char name[10];
回复

使用道具 举报

千问 | 2010-7-31 07:58:11 | 显示全部楼层
fun函数的作用是想找出得分最高者,此函数有两个输入变量,分别为结构体数组指针和数组元素个数,若要想输出语句能写在此函数调用之后,必须要让此函数有个输出,最简单的做法是将变量'm'设为全局变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行