c语言编写程序实现以下功能,有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
时间: 2023-12-15 15:09:54 浏览: 91
c语言学生成绩管理系统
好的,以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define N 10 // 学生人数
#define M 3 // 课程数
struct student {
char id[10]; // 学号
char name[20]; // 姓名
float score[M]; // 成绩
float avg; // 平均分
};
int main() {
struct student stu[N];
int i, j, max_idx;
float avg_score[M] = {0}; // 每门课程的平均分
float max_avg = 0; // 最高平均分
// 输入学生信息
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%s", &stu[i].id);
printf("姓名:");
scanf("%s", &stu[i].name);
for (j = 0; j < M; j++) {
printf("第%d门课成绩:", j+1);
scanf("%f", &stu[i].score[j]);
avg_score[j] += stu[i].score[j]; // 更新每门课程的总分
}
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / M; // 计算平均分
if (stu[i].avg > max_avg) { // 更新最高平均分及其对应的学生信息
max_avg = stu[i].avg;
max_idx = i;
}
}
// 输出每门课程的平均分
printf("\n每门课程的平均分如下:\n");
for (j = 0; j < M; j++) {
avg_score[j] /= N;
printf("第%d门课程平均分:%.2f\n", j+1, avg_score[j]);
}
// 输出平均分最高的学生信息
printf("\n平均分最高的学生信息如下:\n");
printf("学号:%s\n", stu[max_idx].id);
printf("姓名:%s\n", stu[max_idx].name);
printf("各门课成绩:%.2f %.2f %.2f\n", stu[max_idx].score[0], stu[max_idx].score[1], stu[max_idx].score[2]);
printf("平均分:%.2f\n", stu[max_idx].avg);
return 0;
}
```
程序运行示例:
```
请输入第1个学生的信息:
学号:1001
姓名:张三
第1门课成绩:80
第2门课成绩:85
第3门课成绩:90
请输入第2个学生的信息:
学号:1002
姓名:李四
第1门课成绩:70
第2门课成绩:75
第3门课成绩:80
请输入第3个学生的信息:
学号:1003
姓名:王五
第1门课成绩:90
第2门课成绩:95
第3门课成绩:100
请输入第4个学生的信息:
学号:1004
姓名:赵六
第1门课成绩:85
第2门课成绩:90
第3门课成绩:95
请输入第5个学生的信息:
学号:1005
姓名:钱七
第1门课成绩:75
第2门课成绩:80
第3门课成绩:85
请输入第6个学生的信息:
学号:1006
姓名:孙八
第1门课成绩:70
第2门课成绩:75
第3门课成绩:80
请输入第7个学生的信息:
学号:1007
姓名:周九
第1门课成绩:80
第2门课成绩:85
第3门课成绩:90
请输入第8个学生的信息:
学号:1008
姓名:吴十
第1门课成绩:90
第2门课成绩:95
第3门课成绩:100
请输入第9个学生的信息:
学号:1009
姓名:郑一
第1门课成绩:85
第2门课成绩:90
第3门课成绩:95
请输入第10个学生的信息:
学号:1010
姓名:王二
第1门课成绩:75
第2门课成绩:80
第3门课成绩:85
每门课程的平均分如下:
第1门课程平均分:81.50
第2门课程平均分:86.00
第3门课程平均分:90.50
平均分最高的学生信息如下:
学号:1003
姓名:王五
各门课成绩:90.00 95.00 100.00
平均分:95.00
```
阅读全文