假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(1<=n<=10)个学生的成绩信息,计算并输出平均分最高的学生信息,平均分保留两位小数。如果平均分最高的学生有多个,按输入顺序输出第一个学生的信息。
输入格式:
输入整数n(1<=n<=10),在下面n行输入n个学生的信息,包括学号、姓名、三门课程成绩(整数)。
输出格式:
在一行中输出平均分最高的学生信息:学号、姓名、平均分(保留两位小数)。
输入样例:
3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
输出样例:
num:102,name:Wang,average:89.67
题解
#include<stdio.h>
#define N 47
struct student{
char num[N],nam[N];
int s1,s2,s3,sum;
};
int main(){
int i,n,max=0,maxid=0;
struct student a[N];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s%s%d%d%d",a[i].num,a[i].nam,&a[i].s1,&a[i].s2,&a[i].s3);
a[i].sum=a[i].s1+a[i].s2+a[i].s3;
if(a[i].sum>max){
max=a[i].sum;
maxid=i;
}
}
printf("num:%s,name:%s,average:%.2lf",a[maxid].num,a[maxid].nam,a[maxid].sum/3.0);
}
老规矩定义结构体,组记得开的够大不然会报错;
1、老操作for循环扫描结构体,在循环中顺便完成成绩相加(sum=s1+s2+s3)同时判断是否是最大值;
2、循环结束之后就可以直接输出了,注意题目给的格式,以及平均成绩使用%.2lf输出。