解题思路:本题看代码应该能懂
注意事项:数据不少,注意保持头脑清醒!!我算平均值时,一言难尽。
参考代码:
#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语言代码)浏览:739 |
1126题解浏览:649 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:654 |
蛇行矩阵 (C语言代码)浏览:560 |
剪刀石头布 (C语言代码)浏览:1519 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:587 |
简单的a+b (C语言代码)浏览:491 |
班级人数 (C语言代码)浏览:981 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1029 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |