本题目要求先输入正整数N,然后输入N个类型为结构体stud的数组元素,计算每个学生的总分,输出每个学生的学号、姓名、三门课的成绩及总分;计算全部成绩的平均分并输出;输出总分最高同学的各项信息。 struct stud { int num; //学号 char name[10]; //姓名 int score[3]; //3门课成绩 int sum; //总分 };
时间: 2024-01-20 22:02:57 浏览: 68
不用结构体实现数组输入输出.zip_remove1tt_数组输入输出
以下是实现该功能的代码,具体注释见代码中:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体
struct stud {
int num; // 学号
char name[10]; // 姓名
int score[3]; // 3门课成绩
int sum; // 总分
};
int main() {
int n, i, j;
struct stud s[100]; // 最多存储100个学生信息
scanf("%d", &n); // 输入学生个数
// 输入每个学生的信息
for (i = 0; i < n; i++) {
scanf("%d %s %d %d %d", &s[i].num, s[i].name, &s[i].score[0], &s[i].score[1], &s[i].score[2]);
s[i].sum = s[i].score[0] + s[i].score[1] + s[i].score[2]; // 计算总分
}
// 计算全部成绩的平均分
double avg = 0;
for (i = 0; i < n; i++) {
avg += s[i].sum;
}
avg /= n;
printf("平均分: %.2lf\n", avg);
// 寻找总分最高的同学
int max_sum = 0, max_index = 0;
for (i = 0; i < n; i++) {
if (s[i].sum > max_sum) {
max_sum = s[i].sum;
max_index = i;
}
}
// 输出每个同学信息和总分
for (i = 0; i < n; i++) {
printf("学号: %d, 姓名: %s, 成绩: ", s[i].num, s[i].name);
for (j = 0; j < 3; j++) {
printf("%d ", s[i].score[j]);
}
printf("总分: %d\n", s[i].sum);
}
// 输出总分最高的同学信息
printf("总分最高的同学: 学号: %d, 姓名: %s, 成绩: ", s[max_index].num, s[max_index].name);
for (j = 0; j < 3; j++) {
printf("%d ", s[max_index].score[j]);
}
printf("总分: %d\n", s[max_index].sum);
return 0;
}
```
注意事项:
1. 该代码假设输入的每个学生的姓名都不超过10个字符。
2. 该代码假设总分最高的同学只有一个,如果有多个则只输出其中一个。
阅读全文