int main(void){
struct Student{
int id[8];
int math;
int eng;
int com;
float all;
}student[11];
float aver=0.0,aver1=0.0,aver2=0.0,aver3=0.0;
float mathaver=0.0,engaver=0.0,comaver=0.0;
float mathall=0.0,engall=0.0,comall=0.0;
for(int i=0;i<10;i++){
printf("请输入第%d位学生的学号:",i+1);
scanf("%s",student[i].id);
printf("请输入第%d位学生的数学成绩:",i+1);
scanf("%d",&student[i].math);
printf("请输入第%d位学生的英语成绩:",i+1);
scanf("%d",&student[i].eng);
printf("请输入第%d位学生的计算机成绩:",i+1);
scanf("%d",&student[i].com);
}
for(int i=0;i<10;i++){
mathall+=student[i].math;
}
for(int i=0;i<10;i++){
engall+=student[i].eng;
}
for(int i=0;i<10;i++){
comall+=student[i].com;
}
mathaver=mathall/10.0;
engaver=engall/10.0;
comaver=comall/10.0;
printf("\n\n数学、英语、计算机成绩这三门课的平均成绩分别为:%.2f,%.2f,%.2f\n\n",mathaver,engaver,comaver);
printf("以下为按照总成绩由高往低排序后10位同学的信息===========================\n\n");
for(int i=0;i<10;i++){
student[i].all=student[i].math+student[i].eng+student[i].com;
}
for(int i=0;i<9;i++){
for(int j=i+1;j<10;j++){
if(student[i].all>student[j].all){
student[11]=student[i];
student[i]=student[j];
student[j]=student[11];
}
}
}
for(int i=0;i<10;i++){
printf("第%d位学生: 学号为:%s\t",i+1,student[i].id);
printf("数学成绩:%d\t",student[i].math);
printf("英语成绩:%d\t",student[i].eng);
printf("计算机成绩:%d\t",student[i].com);
aver=(student[i].math+student[i].eng+student[i].com)/3;
printf("平均分:%.2f\n\n",i+1,aver);
}
题目如上,输入了三次都是显示进程结束。
感谢解答。