二、编写程序 有3名学生,每名学生的数据包括学号、姓名、三门课的成绩,从键盘输入3名学生的的数据,要求输出三门课程总平均成绩,以及最高分学生的数据(包括学号、姓名、3门课程多的成绩以及平均成绩)(使用结构
时间: 2023-12-15 16:33:25 浏览: 234
以下是使用结构体编写的程序,实现输入3名学生的数据,计算三门课程总平均成绩,以及输出最高分学生的数据(包括学号、姓名、3门课程的成绩以及平均成绩):
```c
#include <stdio.h>
#include <string.h>
#define NUM 3
#define COURSE_NUM 3
struct Student {
int id;
char name[20];
int score[COURSE_NUM];
float average;
};
void setScore(struct Student *stu) {
int i;
for (i = 0; i < COURSE_NUM; i++) {
printf("请输入%s的成绩:", i == 0 ? "数学" : (i == 1 ? "语文" : "英语"));
scanf("%d", &stu->score[i]);
}
}
float average(struct Student *stu) {
int i;
float sum = 0;
for (i = 0; i < COURSE_NUM; i++) {
sum += stu->score[i];
}
stu->average = sum / COURSE_NUM;
return stu->average;
}
void set(struct Student *stu, int id, char *name) {
stu->id = id;
strcpy(stu->name, name);
}
int main() {
struct Student stu[NUM];
int i, j, max_index = 0;
float sum = 0, max_score = 0;
for (i = 0; i < NUM; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &stu[i].id);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", stu[i].name);
setScore(&stu[i]);
sum += average(&stu[i]);
if (stu[i].average > max_score) {
max_score = stu[i].average;
max_index = i;
}
}
printf("三门课程总平均成绩为:%.2f\n", sum / NUM);
printf("最高分学生的数据为:\n");
printf("学号:%d\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("数学成绩:%d\n", stu[max_index].score[0]);
printf("语文成绩:%d\n", stu[max_index].score[1]);
printf("英语成绩:%d\n", stu[max_index].score[2]);
printf("平均成绩:%.2f\n", stu[max_index].average);
return 0;
}
```
阅读全文