用C语言的结构体编程。某班有5名学生,每名学生的数据包括学号、姓名、3 门课程的成绩。从键盘输入5名学生数据,输出5名同学平均成绩, 以及平均分最高的学生的数据(包括学号、姓名、 3 门课成绩、平均成绩)。
时间: 2023-12-15 14:23:48 浏览: 83
以下是用C语言的结构体编程来实现该功能的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NUM 5
#define MAX_NAME_LEN 20
struct student {
int id;
char name[MAX_NAME_LEN];
double score[3];
double avg_score;
};
int main() {
struct student stu[MAX_NUM];
double max_avg_score = 0.0;
int max_avg_score_index = 0;
double total_avg_score = 0.0;
// 输入学生数据
for (int i = 0; i < MAX_NUM; i++) {
printf("请输入第%d名学生的学号、姓名、3门课程成绩(用空格分隔):\n", i + 1);
scanf("%d %s %lf %lf %lf", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
total_avg_score += stu[i].avg_score;
if (stu[i].avg_score > max_avg_score) {
max_avg_score = stu[i].avg_score;
max_avg_score_index = i;
}
}
// 输出平均成绩和平均分最高的学生的数据
printf("5名同学的平均成绩为:%.2lf\n", total_avg_score / MAX_NUM);
printf("平均分最高的学生为:\n");
printf("学号:%d\n", stu[max_avg_score_index].id);
printf("姓名:%s\n", stu[max_avg_score_index].name);
printf("3门课程成绩:%.2lf %.2lf %.2lf\n", stu[max_avg_score_index].score[0], stu[max_avg_score_index].score[1], stu[max_avg_score_index].score[2]);
printf("平均成绩:%.2lf\n", stu[max_avg_score_index].avg_score);
return 0;
}
```
该程序定义了一个名为`student`的结构体,其中包含学生的学号、姓名、3门课程的成绩和平均成绩。程序首先定义了一些常量和变量,然后通过`for`循环从键盘输入5名学生的数据,并计算出每个学生的平均成绩,并累加所有学生的平均成绩,同时找出平均分最高的学生的下标。最后,程序输出5名同学的平均成绩和平均分最高的学生的数据。
阅读全文