解题思路:本题看代码应该能懂
注意事项:数据不少,注意保持头脑清醒!!我算平均值时,一言难尽。
参考代码:
#include<stdio.h>
struct stu {
char num[10];
char name[10];
int gd1; //第一门成绩
int gd2; //第二门成绩
int gd3; //第三门成绩
double t; //每个学生的总分
};
void print(struct stu p); // 用于输出
int get_max(struct stu *p,int n); //寻找总分最高的学生,返回的是对应的下标
int main()
{
int n;scanf("%d",&n);
getchar(); // 消耗可能的空格
struct stu student[n+1];
double s1,s2,s3;
s1 = s2 = s3 = 0; //记录每门课的成绩总和,用于计算平均分
// 输入各项数据
for(int i = 0; i < n; i++) {
scanf("%s%s%d%d%d",\
student[i].num,student[i].name,&student[i].gd1,&student[i].gd2,&student[i].gd3
);
student[i].t = student[i].gd1+student[i].gd2+student[i].gd3;
//没输入一次,加上各科分数
s1 += student[i].gd1;
s2 +=student[i].gd2;
s3 += student[i].gd3;
}
//计算平均分
double a1 = s1/n;double a2 = s2/n;double a3 = s3/n;
//输出平均分
printf("%0.f %.0f %.0f\n",a1,a2,a3);
int j = get_max(student,n);
print(student[j]);
return 0;
}
void print(struct stu student) {
printf("%s %s %d %d %d\n",
student.num,student.name,student.gd1,student.gd2,student.gd3);
return ; //void类型语句 return 可以不写
}
int get_max(struct stu *p,int n) {
int cnt = 0;
double max = p[0].t;
for(int i = 1; i < n; i++) {
if(max < p[i].t) {
max = p[i].t;
cnt = i;
}
}
return cnt; //返回最高分学生对应的下标
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复