有5个学生,每个学生的**包括:学号、姓名、三门课成绩,编写程序要求从键盘输入学生们的**,并输出成

时间:2020.04.28 发布人:U3211612261

有5个学生,每个学生的**包括:学号、姓名、三门课成绩,编写程序要求从键盘输入学生们的**,并输出成

已解决问题

谷歌U3211612261用户在2020.04.28提交了关于“油条有5个学生,每个学生的**包括:学号、姓名、三门课成绩,编写程序要求从键盘输入学生们的**,并输出成”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T21:46:06。

成绩报表(包括每人的学号,姓名、三门成绩及平均分数),还要求输出平均分在前3名的学生姓名及平均成绩。

#include<stdio.h>

structstu_type

{char**m[20];

charname[10];

floatscore[3];

float**er;

}student[5];

intmain()

{

inti,k,m,j;

structstu_typen;

for(i=0;i<=4;i++)

{

scanf("%s%s%f%f%f",student[i].**m,student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);

student[i].**er=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3;

}

for(i=0;i<=4;i++)

{

printf("%s%s%.2f%.2f%.2f%.2f\n",student[i].**m,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].**er);

}

for(j=0;j<=4;j++)

{k=j;

for(m=j+1;m<=4;m++)

{if(student[m].**er>student[k].**er)

k=m;

if(k!=-1)

{

n=student[k];

student[k]=student[j];

student[j]=n;

}

}

}

for(j=0;j<=2;j++)

{printf("%s%s%.2f%.2f%.2f%.2f\n",student[j].**m,student[j].name,student[j].score[0],student[j].score[1],student[j].score[2],student[j].**er);}

return0;

}

请问我的程序哪里出错了?

希望大家能够帮助她。

详细问题描述及疑问:

成绩报表(包括每人的学号,姓名、三门成绩及平均分数),还要求输出平均分在前3名的学生姓名及平均成绩。

#include<stdio.h>

structstu_type

{char**m[20];

charname[10];

floatscore[3];

float**er;

}student[5];

intmain()

{

inti,k,m,j;

structstu_typen;

for(i=0;i<=4;i++)

{

scanf("%s%s%f%f%f",student[i].**m,student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);

student[i].**er=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3;

}

for(i=0;i<=4;i++)

{

printf("%s%s%.2f%.2f%.2f%.2f\n",student[i].**m,student[i].name,student[i].score[0],student[i].score[1],student[i].score[2],student[i].**er);

}

for(j=0;j<=4;j++)

{k=j;

for(m=j+1;m<=4;m++)

{if(student[m].**er>student[k].**er)

k=m;

if(k!=-1)

{

n=student[k];

student[k]=student[j];

student[j]=n;

}

}

}

for(j=0;j<=2;j++)

{printf("%s%s%.2f%.2f%.2f%.2f\n",student[j].**m,student[j].name,student[j].score[0],student[j].score[1],student[j].score[2],student[j].**er);}

return0;

}

请问我的程序哪里出错了?

期待您的答案,谢了,下次有事儿别忘了找我 !
希望以下的回答,能够帮助你。

第1个回答

用户名:木斯皮尔翰  

显示运行结果图:

关键还是在于你的if语句不严谨,你的if(student[m].**er>student[k].**er)

缺少一个{},因为你的下一个if语句是在这个ifif(student[m].**er>student[k].**er)语句成立的时候,才执行的。

总之,如果if不成立,你的第二个if(k!=-1)交换也能执来自行,所以你只有加上才可以。

下面是我加上后的运行结果:

这下就对了。