C语言:为啥这样作不对呢呜呜呜 跪求解答

来源:百度知道 编辑:UC知道 时间:2024/06/27 03:54:05
编写程序,定义一个结构体类型,含学生的姓名,学号和数学成绩,给5名学生输入以上信息,并按数学成绩从高到低排序

#include<stdio.h>
struct STUDENT
{char name[10],num[10];
int math;
};
main()
{struct STUDENT stu[5]={{"yaofang","081013",88},
{"zhangbin","081015",76},
{"wanglin","081034",34},
{"lili","081021",56},
{"jeccy","081010",78}};

struct STUDENT temp;
int i,j;

for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(stu[j].math>stu[i].math)
temp=stu[j];stu[j]=stu[i];stu[i]=temp;}

printf("数学成绩由高到低为\n");
for(i=0;i<5;i++)
printf("%s,%s,%d\n",stu[i].name,stu[i].num,stu[i].math);
}

排序时候把结构体的其他信息也进行交换,可是为什么显示的结果不对呢?呜呜呜

你忘加括号了啊!!!!!

这里
“for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(stu[j].math>stu[i].math)
temp=stu[j];stu[j]=stu[i];stu[i]=temp;}


if 条件句 没有加括号 所以只执行if后面接着的一句

后面的单独执行了4次

这个错误很不容易看出来 以后要注意啊!!!!
帮你改完了

#include<stdio.h>
struct STUDENT
{
char name[10],num[10];
int math;
};
int main()
{
struct STUDENT stu[5]=
{
{"yaofang","081013",88
},
{"zhangbin","081015",76},
{"wanglin","081034",34},
{"lili","081021",56},
{"jeccy","081010",78}
};

struct STUDENT temp;
int i,j;

for (i=0;i<4;i++)
{
for (j=i+1;j<5;j++)
if (stu[j].math>stu[i].math)