用c语言编写有10个学生,每个学生的数据包括学号 姓名、3门课程的成绩,从键盘输入10个 学生数据,要求输出3门课程总平均成绩, 以及最高分的学生的数据(包括学号、姓 名、3门课程成绩、平均分数)
时间: 2023-12-15 10:24:10 浏览: 100
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
以下是使用 C 语言编写的解决方案:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_SUBJECTS 3
struct student {
int id;
char name[20];
float grades[NUM_SUBJECTS];
float avg_grade;
};
int main() {
struct student students[NUM_STUDENTS];
float subject_totals[NUM_SUBJECTS] = {0};
float highest_grade = 0;
int highest_grade_index = 0;
// 获取学生数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第 %d 个学生的学号、姓名和成绩:\n", i+1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
// 计算学生平均成绩
students[i].avg_grade = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / NUM_SUBJECTS;
// 更新每门课程的总成绩
for (int j = 0; j < NUM_SUBJECTS; j++) {
subject_totals[j] += students[i].grades[j];
}
// 查找最高分的学生
if (students[i].avg_grade > highest_grade) {
highest_grade = students[i].avg_grade;
highest_grade_index = i;
}
}
// 计算每门课程的平均成绩
float subject_averages[NUM_SUBJECTS];
for (int i = 0; i < NUM_SUBJECTS; i++) {
subject_averages[i] = subject_totals[i] / NUM_STUDENTS;
}
// 输出课程平均成绩
printf("三门课程的平均成绩分别为:%.2f %.2f %.2f\n", subject_averages[0], subject_averages[1], subject_averages[2]);
// 输出最高分的学生信息
printf("最高分的学生信息为:\n");
printf("学号:%d\n", students[highest_grade_index].id);
printf("姓名:%s\n", students[highest_grade_index].name);
printf("成绩:%.2f %.2f %.2f\n", students[highest_grade_index].grades[0], students[highest_grade_index].grades[1], students[highest_grade_index].grades[2]);
printf("平均分数:%.2f\n", students[highest_grade_index].avg_grade);
return 0;
}
```
这个程序定义了一个 `student` 结构体,用于存储每个学生的学号、姓名和成绩。程序首先从键盘读入每个学生的数据,然后计算每个学生的平均成绩和每门课程的总成绩。接着,程序计算每门课程的平均成绩,并输出。最后,程序查找最高分的学生,并输出该学生的信息。
阅读全文