用C语言struct stud { int num; //学号 char name[10]; //姓名 int score[3]; //3门课成绩 int sum; //总分 }; 输入格式: 先输入不超过10的一个正整数N,然后每行输入一个学生的信息(学号、姓名、三门课成绩)。学号在整数范围内,姓名长度小于10个字符。 输出格式: 首先输出每个学生的信息(包括学号、姓名、三门课成绩、总分),数据项之间空1格,每人一行;再输出全部成绩的平均分;最后输出总分最高(假设没有相同总分)同学的学号、姓名、三门
时间: 2024-01-22 20:20:36 浏览: 152
课成绩和总分,数据项之间空1格,一行输出。
以下是实现该需求的C语言代码:
```c
#include <stdio.h>
#include <string.h>
struct stud {
int num; // 学号
char name[10]; // 姓名
int score[3]; // 3门课成绩
int sum; // 总分
};
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
struct stud students[n]; // 学生数组
int i, j;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息(学号 姓名 3门课成绩):\n", i + 1);
scanf("%d %s %d %d %d", &students[i].num, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].sum = students[i].score[0] + students[i].score[1] + students[i].score[2]; // 计算总分
}
// 输出每个学生的信息
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总分\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[i].num, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].sum);
}
// 计算平均分
int sum = 0;
for (i = 0; i < n; i++) {
sum += students[i].sum;
}
double avg = (double) sum / n;
printf("平均分:%.2lf\n", avg);
// 找出总分最高的学生
int max_sum = 0;
int max_index = -1;
for (i = 0; i < n; i++) {
if (students[i].sum > max_sum) {
max_sum = students[i].sum;
max_index = i;
}
}
printf("总分最高的学生:\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[max_index].num, students[max_index].name, students[max_index].score[0], students[max_index].score[1], students[max_index].score[2], students[max_index].sum);
return 0;
}
```
运行示例:
```
请输入学生数量:3
请输入第1个学生的信息(学号 姓名 3门课成绩):
1001 Tom 90 80 70
请输入第2个学生的信息(学号 姓名 3门课成绩):
1002 Jerry 85 90 95
请输入第3个学生的信息(学号 姓名 3门课成绩):
1003 Lucy 70 75 80
学号 姓名 成绩1 成绩2 成绩3 总分
1001 Tom 90 80 70 240
1002 Jerry 85 90 95 270
1003 Lucy 70 75 80 225
平均分:245.00
总分最高的学生:
1002 Jerry 85 90 95 270
```
阅读全文