运用C语言,有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
时间: 2023-12-15 18:00:06 浏览: 68
可以使用C语言的结构体来保存每个学生的信息,然后通过循环输入学生的信息,计算平均成绩和最高平均成绩的学生信息。
以下是一个实现的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_GRADES 3
struct student {
int id;
char name[20];
int grades[NUM_GRADES];
float avg_grade;
};
int main() {
struct student students[NUM_STUDENTS];
float avg_grades[NUM_GRADES] = {0};
float max_avg_grade = 0;
int max_avg_grade_index = 0;
// 输入每个学生的信息并计算平均成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩:");
for (int j = 0; j < NUM_GRADES; j++) {
scanf("%d", &students[i].grades[j]);
avg_grades[j] += students[i].grades[j];
}
students[i].avg_grade = (float)(students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / NUM_GRADES;
printf("\n");
}
// 计算平均成绩
for (int i = 0; i < NUM_GRADES; i++) {
avg_grades[i] /= NUM_STUDENTS;
}
// 找到平均成绩最高的学生
for (int i = 0; i < NUM_STUDENTS; i++) {
if (students[i].avg_grade > max_avg_grade) {
max_avg_grade = students[i].avg_grade;
max_avg_grade_index = i;
}
}
// 打印结果
printf("三门课的平均成绩为:%.2f, %.2f, %.2f\n", avg_grades[0], avg_grades[1], avg_grades[2]);
printf("平均成绩最高的学生信息为:\n");
printf("学号:%d\n", students[max_avg_grade_index].id);
printf("姓名:%s\n", students[max_avg_grade_index].name);
printf("成绩:%d, %d, %d\n", students[max_avg_grade_index].grades[0], students[max_avg_grade_index].grades[1], students[max_avg_grade_index].grades[2]);
printf("平均成绩:%.2f\n", students[max_avg_grade_index].avg_grade);
return 0;
}
```
该代码会先定义一个`student`结构体,包含学号、姓名、成绩和平均成绩等信息。然后通过循环输入每个学生的信息,保存在一个数组`students`中,并且计算每门课程的平均成绩。接着再通过循环找到平均成绩最高的学生,保存在一个变量`max_avg_grade_index`中。最后打印出平均成绩和平均成绩最高的学生的信息。
阅读全文