用C语言写出完整代码(5)一个学生的数据包含学号、姓名和4门课程的成绩。输入数据,计算学生的平均成绩,输出学生学号、姓名、各门课程的成绩和平均成绩。要求使用结构体实现。 (6)一个班的学生的数据包含学号、姓名和4门课
时间: 2024-02-22 16:55:25 浏览: 101
程的成绩。输入数据,计算每个学生的平均成绩和班级的平均成绩,输出每个学生的学号、姓名、各门课程的成绩和平均成绩,以及班级的平均成绩。同样要求使用结构体实现。
```c
#include <stdio.h>
#define MAX_STUDENTS 100
// 定义学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
float grades[4]; // 4门课程的成绩
float avg; // 平均成绩
} Student;
// 计算学生的平均成绩
void calc_avg(Student *s) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += s->grades[i];
}
s->avg = sum / 4;
}
int main() {
Student students[MAX_STUDENTS];
int num_students;
printf("请输入学生人数:");
scanf("%d", &num_students);
// 输入每个学生的信息
for (int i = 0; i < num_students; i++) {
printf("请输入第 %d 个学生的学号、姓名和各门课程的成绩:\n", i+1);
scanf("%d %s %f %f %f %f", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2], &students[i].grades[3]);
// 计算该学生的平均成绩
calc_avg(&students[i]);
}
// 计算班级的平均成绩
float class_avg = 0;
for (int i = 0; i < num_students; i++) {
class_avg += students[i].avg;
}
class_avg /= num_students;
// 输出每个学生的信息和平均成绩
for (int i = 0; i < num_students; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f %.2f %.2f %.2f,平均成绩:%.2f\n", students[i].id, students[i].name, students[i].grades[0], students[i].grades[1], students[i].grades[2], students[i].grades[3], students[i].avg);
}
// 输出班级平均成绩
printf("班级平均成绩:%.2f\n", class_avg);
return 0;
}
```
阅读全文