1343 - C语言程序设计教程(第三版)课后习题11.5
时间限制 : 1 秒
内存限制 : 128 MB
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)。使用结构体
题目输入
学生数量N占一行
每个学生的学号、姓名、三科成绩占一行,空格分开。
题目输出
各门课的平均成绩
最高分的学生的数据(包括学号、姓名、3门课成绩)
输入/输出样例
输入格式
2 1 blue 90 80 70 b clan 80 70 60
输出格式
85 75 65 1 blue 90 80 70
C++解答
#include<iostream> #include<string> #include<cstdio> using namespace std; struct student{ string num; string name; int score[3]; double average; }; student a[10000]; int ave[3]; void input(student a[],int n) { for (int i=0; i<n; i++) { cin>>a[i].num>>a[i].name>>a[i].score[0]>>a[i].score[1]>>a[i].score[2]; a[i].average=(a[i].score[0]+a[i].score[1]+a[i].score[2])/3; ave[0]+=a[i].score[0]; ave[1]+=a[i].score[1]; ave[2]+=a[i].score[2]; } for (int i=0; i<3; i++) ave[i]/=n; } int find(student a[],int n) { int maxt=0; for (int i=1; i<n; i++) if (a[i].average>a[maxt].average) maxt=i; return maxt; } int main() { int n; cin>>n; input(a,n); printf("%d %d %d\n",ave[0],ave[1],ave[2]); int t=find(a,n); cout<<a[t].num<<" "<<a[t].name<<" "<<a[t].score[0]<<" "<<a[t].score[1]<<" "<<a[t].score[2]<<endl; return 0; }