一个班的学生的数据包含学号、姓名和4门课程的成绩。输入数据,计算学生的 绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,输出平均成绩最高的 据。要求使用c语言结构体实现。
时间: 2024-04-26 07:27:10 浏览: 98
好的,以下是使用C语言结构体实现的程序,可以输入学生数据,并计算每个学生的平均成绩,输出所有学生的学号、姓名、各门课程的成绩和平均成绩,最后输出平均成绩最高的学生的信息:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 50 // 最大学生数
// 定义学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
float score[4]; // 四门课程成绩
float avg_score; // 平均成绩
} Student;
// 计算每个学生的平均成绩
void calc_avg_score(Student *stu) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += stu->score[i];
}
stu->avg_score = sum / 4;
}
int main() {
Student stu[MAX_STUDENT_NUM]; // 学生数组
int n; // 学生数
// 输入学生数据
printf("请输入学生数(不超过%d个):", MAX_STUDENT_NUM);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和四门课程成绩(用空格隔开):", i+1);
scanf("%d %s", &stu[i].id, stu[i].name);
for (int j = 0; j < 4; j++) {
scanf("%f", &stu[i].score[j]);
}
calc_avg_score(&stu[i]); // 计算平均成绩
}
// 输出所有学生的信息
printf("所有学生的信息如下:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,成绩:", stu[i].id, stu[i].name);
for (int j = 0; j < 4; j++) {
printf("%.1f ", stu[i].score[j]);
}
printf(",平均成绩:%.1f\n", stu[i].avg_score);
}
// 输出平均成绩最高的学生信息
int max_idx = 0;
for (int i = 1; i < n; i++) {
if (stu[i].avg_score > stu[max_idx].avg_score) {
max_idx = i;
}
}
printf("平均成绩最高的学生信息如下:\n");
printf("学号:%d,姓名:%s,成绩:", stu[max_idx].id, stu[max_idx].name);
for (int j = 0; j < 4; j++) {
printf("%.1f ", stu[max_idx].score[j]);
}
printf(",平均成绩:%.1f\n", stu[max_idx].avg_score);
return 0;
}
```
希望这个程序能够帮助你解决问题!
阅读全文