問題 E: C語言11.8
問題 E: C語言11.8
時間限制: 1 Sec 內存限制: 32 MB獻花: 119 解決: 100
[獻花][花圈][TK題庫]
題目描述
有10個學生,每個學生的數據包括學號、姓名、3門課程的成績。讀入這10個學生的數據,要求輸出3門課程的總平均成績,以及個人平均分最高的學生的數據(包括學號、姓名、3門課程成績、平均分數)。
輸入
共有10行,每行包含了一個學生的學號(整數)、名字(長度不超過19的無空格字符串)和3門課程的成績(0至100之間的整數),用空格隔開。
輸出
第一行包含了3個實數,分別表示3門課程的總平均成績,保留2位小數,每個數之後輸出一個空格。
第二行輸出個人平均分最高的學生的數據,與輸入數據格式相同。如果有多位個人平均分最高的學生,輸出按照輸入順序第一個最高分的學生數據。
請註意行尾輸出換行。
樣例輸入
101 AAA 80 81 82
102 BBB 83 84 85
103 CCC 86 87 88
104 DDD 89 90 91
105 EEE 92 93 94
106 FFF 80 90 100
107 GGG 85 90 95
108 HHH 80 85 90
109 III 90 91 92
110 JJJ 91 88 87
樣例輸出
85.60 87.90 90.40
105 EEE 92 93 94
參考代碼:
#include<stdio.h>
struct student{
int id;
char name[20];
int c1,c2,c3;
}stu[10];
int main(){
int n=10;
double cnt1=0,cnt2=0,cnt3=0;
int average[10];
for(int i=0;i<n;i++){
scanf("%d %s %d %d %d",&stu[i].id,stu[i].name,&stu[i].c1,&stu[i].c2,&stu[i].c3);
cnt1+=stu[i].c1;
cnt2+=stu[i].c2;
cnt3+=stu[i].c3;
average[i]=(stu[i].c1+stu[i].c2+stu[i].c3)/3;
}
cnt1/=10.0;
cnt2/=10.0;
cnt3/=10.0;
int max=0;
int i,k;
for(i=0;i<n;i++){
if(average[i]>max){
max=average[i];
k=i; //k用來保存當average[i]最大時的i
}
}
printf("%.2f %.2f %.2f\n",cnt1,cnt2,cnt3);
printf("%d %s %d %d %d\n",stu[k].id,stu[k].name,stu[k].c1,stu[k].c2,stu[k].c3);
return 0;
}
問題 E: C語言11.8