介面和抽象類
阿新 • • 發佈:2021-01-03
技術標籤:C語言
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;
}
執行結果