c语言一个学生的信息包括姓名、年龄和语文、数学、英语三门课成绩 请以结构体的形式定义3个学生。计算每个学生的3门课平均成绩,并输出平 均成绩最高的那个学生信息。
时间: 2024-10-28 20:09:03 浏览: 22
首先,我们可以通过创建一个结构体`Student`来定义一个学生的个人信息,以及存储他们的成绩。然后,我们可以定义三个这样的结构体实例代表三位学生。接着,我们将计算每位学生的平均成绩,并找出平均成绩最高的那位学生。以下是详细的C语言代码实现:
```c
#include <stdio.h>
#include <string.h> // 包含字符串库,用于比较名字
// 定义学生结构体
typedef struct {
char name[50]; // 姓名
int age; // 年龄
float math_score; // 数学成绩
float chinese_score; // 语文成绩
float english_score; // 英语成绩
} Student;
// 计算单个学生的平均成绩
float calculate_average(Student s) {
return (s.math_score + s.chinese_score + s.english_score) / 3.0f;
}
// 比较两个学生的平均成绩
int compare_students(Student s1, Student s2) {
return compare_float(calculate_average(s1), calculate_average(s2));
}
// 比较浮点数
int compare_float(float a, float b) {
return a > b ? 1 : (a < b ? -1 : 0);
}
int main() {
// 创建三个学生实例
Student student1 = {"小明", 18, 90.0, 85.0, 95.0};
Student student2 = {"小红", 17, 92.0, 88.0, 96.0};
Student student3 = {"小李", 19, 93.0, 89.0, 98.0};
// 计算并输出每位学生的平均成绩
printf("学生1平均成绩: %.2f\n", calculate_average(student1));
printf("学生2平均成绩: %.2f\n", calculate_average(student2));
printf("学生3平均成绩: %.2f\n", calculate_average(student3));
// 找出平均成绩最高的学生
Student* max_student = &student1;
for (Student* student = &student2; student != &student3; student++) {
if (compare_students(*max_student, *student) < 0) {
max_student = student;
}
}
// 输出最高平均成绩的学生信息
printf("平均成绩最高的学生是: %s, 年龄: %d, 成绩: [数学%.2f, 语文%.2f, 英语%.2f]\n",
max_student->name, max_student->age, max_student->math_score, max_student->chinese_score, max_student->english_score);
return 0;
}
```
在这个程序中,我们首先定义了学生结构体,然后分别初始化了三个学生,计算并输出了他们的平均成绩,最后遍历所有学生找到平均成绩最高的,并输出相关信息。
阅读全文