我定义了一个结构体数组,并且初始化了数据,怎么查找最大值?

来源:百度知道 编辑:UC知道 时间:2024/07/03 21:50:49
这是我的代码
int i;
int m=stu[0].sx;
int e;
for(i=1;i<=10;i++)
{
if(stu[i].sx>m)
e=stu[i].sx;
else
{
e=m;
}
}
printf("数学最高分是:%d",e);
}

但为什么不能用?编译通过,但结果失败

这样就好了,,,
int i;
int m=stu[0].sx;
int e;
for(i=1;i<=10;i++)
{
if(stu[i].sx>m)
m=stu[i].sx; //修改处
else
{
m=m; //修改处,当然你可以取消该代码
}
}
e=m;//修改处
printf("数学最高分是:%d",e);
}

没有必要用到e变量
int i;
int m=stu[0].sx;
for(i=1;i<=10;i++)
{
if(stu[i].sx>m)
m=stu[i].sx;
}
printf("数学最高分是:%d",m);

只要数据初始化正确,就可能有正确结果了

你的错误在于,每次循环对与m做比较,而m只是数组中第一个元素的值。也就是说,只要比数组中的元素比第一个元素大,就会把这个值赋给e。所以你得到的结果是数组中最后一个大于m的数值。
如数组中的数为72 70 80 75 88 62 77
那么你的程序得到的结果就是77
你的程序可以这样改:

int i;
int m=stu[0].sx;
//int e;
for(i=1;i<=10;i++)
{
if(stu[i].sx>m)
m=stu[i].sx; //将e改为m
//else
//{
//e=m;
//}
}
printf("数学最高分是:%d",e);
}

stu[0].sx储存的是什么

那个e貌似没用 直接用m来存储最大值就ok了