编写程序:有三个学生,每个学生的数据包括学号、姓名、两门课的成绩。 ●编程要求: (1)从键盘输入三个学生的各项数据; (2)要求打印出每个学生的平均成绩,以及平均分最高的学生的各项数据(包括 学号、姓名、两门课成绩、平均分)。c语言
时间: 2024-01-06 08:05:52 浏览: 94
以下是C语言的程序,实现了输入三个学生的数据,计算每个学生的平均成绩,并输出平均分最高的学生的各项数据(包括学号、姓名、两门课成绩、平均分):
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 3
#define NAME_LEN 20
struct Student {
int id;
char name[NAME_LEN];
float score1;
float score2;
float avg_score;
};
void setScore(struct Student *s, float score1, float score2) {
s->score1 = score1;
s->score2 = score2;
s->avg_score = (score1 + score2) / 2;
}
void set(struct Student *s, int id, char *name) {
s->id = id;
strncpy(s->name, name, NAME_LEN);
}
int main() {
struct Student students[NUM_STUDENTS];
int i;
float max_avg_score = 0;
int max_avg_score_index = 0;
// 输入每个学生的数据
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &students[i].id);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的两门课成绩:", i + 1);
scanf("%f %f", &students[i].score1, &students[i].score2);
setScore(&students[i], students[i].score1, students[i].score2);
}
// 计算每个学生的平均成绩,并找到平均分最高的学生
for (i = 0; i < NUM_STUDENTS; i++) {
if (students[i].avg_score > max_avg_score) {
max_avg_score = students[i].avg_score;
max_avg_score_index = i;
}
}
// 输出每个学生的平均成绩
for (i = 0; i < NUM_STUDENTS; i++) {
printf("学生%d的平均成绩为:%.2f\n", i + 1, students[i].avg_score);
}
// 输出平均分最高的学生的各项数据
printf("平均分最高的学生是:\n");
printf("学号:%d\n", students[max_avg_score_index].id);
printf("姓名:%s\n", students[max_avg_score_index].name);
printf("两门课成绩:%.2f %.2f\n", students[max_avg_score_index].score1, students[max_avg_score_index].score2);
printf("平均分:%.2f\n", students[max_avg_score_index].avg_score);
return 0;
}
```
阅读全文