更新时间2019-12-14 04:21:39
#include<stdio.h>#include<string.h>struct Student{int num;char name[20];float score[3];float aver;};struct Student stu[3]={{1,"wang",93,89,87},{2,"li",85,80,78},{3,"zhao",65,70,59}};int main(){ int i,j,m=0,n=0; float sum=0,average; struct Student stu[3]; for(i=0;i<10;i++); { stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; sum=sum+stu[i].aver; } average=sum/3.0; printf("%f ",average); for(i=0;i<3;i++) for(j=0;j<3;j++) if(stu[i].score[j]>stu[m].score[n])m=i,n=j; printf("成绩最高的同学是:学号:%d 姓名:%s 三门课成绩:%5.1f,%5.1f,%5.1f 平均成绩:%6.2f ", stu[m].num,stu[m].name,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].aver); return 0;}
改好的程序(错的太多了)
#include<stdio.h>
#include<string.h>
struct Student
{
int num;
char name[20];
float score[3];
float aver;
};
struct Student stu[3] = { {
1, "wang", 93, 89, 87
}, {
2, "li", 85, 80, 78
}, {
3, "zhao", 65, 70, 59
}
};
int main()
{
int i, j, m = 0, n = 0;
float sum = 0, average;
// struct Student stu[3]; //这个是多余的
for (i = 0; i < 3; i++) //你只定义了3个人,怎么会用到10,另外,后面多分号了
{
stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
sum = sum + stu[i].aver;
}
average = sum / 3.0;
printf("%f ", average);
sum=0; //借用一下
for (i = 0; i < 3; i++)
// for (j = 0; j < 3; j++)
//这里更不对了,你把A同学的一门成绩与B同学的另一门成绩比较?
// if (stu[i].score[j] > stu[m].score[n])
// m = i, n = j;
if (sum< stu[i].aver ) //判平均成绩最高的就可以了
{
m=i;
sum= stu[i].aver;
}
printf("成绩最高的同学是:学号:%d 姓名:%s 三门课成绩:%5.1f,%5.1f,%5.1f 平均成绩:%6.2f ",
stu[m].num, stu[m].name, stu[m].score[0], stu[m].score[1],
stu[m].score[2], stu[m].aver);
return 0;
}
结果