2020-12-31
44行
结构体数组的使用。有n(2<n<10)个学生,每个学生的数据包括学号(长度为12的字符串)、姓名(长度为12的字符串)、3门课程的成绩。从键盘输入n个学生的数据,要求输出3门课程的总平均成绩,以及最高分的学生的学号、姓名、3门课程成绩、平均分数。
要求:
1)输入n的值以及n个学生的上述信息,每个学生一行,各项数据之间用一个空格分隔;
2)输出学生信息成绩表,输出格式:%10s%10s%9.2f%9.2f%9.2f%8.2f;对应下述表头信息
No. name score[1] score[2] score[3] average
3)全班平均分、最高分数学生三门成绩及其平均分采用%6.2f格式输出,最高分数学生的学号和姓名均采用%10s的格式输出。
运行参考示例:
输入1:
3
1004 zhang 85 78 84
1002 chen 77 67 58
1006 zhao 96 89 88
输出1:
No. name score[1] score[2] score[3] average
1004 zhang 85.00 78.00 84.00 82.33
1002 chen 77.00 67.00 58.00 67.33
1006 zhao 96.00 89 00 88.00 91.00
average= 80.22
The highest score is: 1006 zhao
His scores are: 96.00 89.00 88.00,average: 91.00
#include<stdio.h>
int main()
{
struct students
{
char num[12];
char name[12];
float score1;
float score2;
float score3;
}stu[10];
int n,i,k;
float sum,sum1;
float average=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
}
printf("No. name score[1] score[2] score[3] average\n");
for(i=0;i<n;i++)
{
sum=stu[i].score1+stu[i].score2+stu[i].score3;
sum/=3.0;
printf("%10s%10s%9.2f%9.2f%9.2f%8.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,sum);
average+=stu[i].score1+stu[i].score2+stu[i].score3;
if(i==0)
{
sum1=sum;
}
else
{
if(sum>sum1)
{
k=i;
sum1=sum;
}
}
}
printf("average=%6.2f\n",average/=(3*n));
printf("The highest score is:%10s%10s\n",stu[k].num,stu[k].name);
printf("His scores are:%6.2f%6.2f%6.2f%,average:%6.2f\n",stu[k].score1,stu[k].score2,stu[k].score3,sum1);
return 0;
}
运行结果