1 个回答
提问:怎样在c语言中比较一个数组中元素的大小?
这个题按照您给的方法比较过大小后,程序运行后最大值最小值都为70,请问哪个地方出错了#include <stdio.h>#include <string.h>struct student { char name[20]; float score;};int main( ){ int i,_max,_min; struct student stu[5]={{"wang",98.8},{"li",67.9},{"zhang",56},{"lu",78.7},{"liu",70}}; float max=stu[0].score,min=stu[0].score; for(i=1;i<4;i++) { if(stu[i].score>max) { max=stu[i].score; _max=i; } } printf("MAX:%-10s %8.2f\n", stu[i].name, stu[i].score); for(i=1;i<4;i++) { if(stu[i].score<max) { min=stu[i].score; _min=i; } } printf("MIN:%-10s %8.2f\n", stu[i].name, stu[i].score); return 0;}
网友回答:
上面这个太复杂了,不需要
你可以使用冒泡排序法。
这样将最小的放在最前面,最大的放在最后面。
下面是我修改好的程序:
#include <stdio.h>
#include <string.h>
struct student
{
char name[20];
float score;
};
int main( )
{
int i,_max,_min,j;
struct student t;
struct student stu[5]={{"wang",98.8},{"li",67.9},{"zhang",56},{"lu",78.7},{"liu",70}};
float max=stu[0].score,min=stu[0].score;
for (i=1;i<5;i++)
{
for (j=0;j<5-i;j++)
{
if (stu[j].score>stu[j+1].score)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
printf("MAX:%-10s %8.2f\n", stu[4].name, stu[4].score);
printf("MIN:%-10s %8.2f\n", stu[0].name, stu[0].score);
return 0;
}
下面是结果图:
这样简单多了
还有问题吗,谢谢采纳,Thanks♪(・ω・)ノ