每个学生信息存储在一个结结构体中,包括学号,数学,英语,计算机成绩,平均成绩五部分。Ave负责计算一个学生的平均成绩,Find负责找到平均成绩最高的学生,printf负责按表格的函数输出全部信息,内容左对齐,表头为“No,Math,Eng,Comp,Ave”,要求输出一个班平均成绩最高的学生(不少于8人)
来自chat gpt 3.5
#include <stdio.h>
#define MAX_STUDENTS 50
// 定义学生结构体类型
typedef struct {
int no; // 学号
int math; // 数学成绩
int eng; // 英语成绩
int comp; // 计算机成绩
double ave; // 平均成绩
} Student;
// 计算一个学生的平均成绩
void Ave(Student *stu) {
stu->ave = (double)(stu->math + stu->eng + stu->comp) / 3.0;
}
// 找到平均成绩最高的学生
Student *Find(Student *students, int n) {
Student *pMax = &students[0];
for (int i = 1; i < n; i++) {
if (students[i].ave > pMax->ave) {
pMax = &students[i];
}
}
return pMax;
}
// 按表格格式输出全部学生信息
void Printf(Student *students, int n) {
printf("%-5s %-6s %-6s %-6s %-6s\n", "No", "Math", "Eng", "Comp", "Ave");
for (int i = 0; i < n; i++) {
printf("%-5d %-6d %-6d %-6d %-6.2f\n",
students[i].no, students[i].math, students[i].eng,
students[i].comp, students[i].ave);
}
}
int main() {
// 读入学生信息
int n;
Student students[MAX_STUDENTS];
printf("请输入学生数(不超过 %d):", MAX_STUDENTS);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的信息(No,Math,Eng,Comp):", i+1);
scanf("%d %d %d %d", &students[i].no, &students[i].math,
&students[i].eng, &students[i].comp);
Ave(&students[i]);
}
// 找到平均成绩最高的学生,并输出全部学生信息
Student *pMax = Find(students, n);
printf("\n平均成绩最高的学生信息如下:\n");
Printf(pMax, 1);
printf("\n全部学生信息如下:\n");
Printf(students, n);
return 0;
}
这段代码中,我们首先定义了一个学生结构体类型 Student,其中包含学号、数学、英语、计算机成绩和平均成绩五个字段。然后编写了三个函数 Ave、Find 和 Printf,分别用于计算一个学生的平均成绩、找到平均成绩最高的学生和按表格格式输出全部学生信息。
在 main 函数中,我们首先读入学生信息并计算每个学生的平均成绩。然后使用 Find 函数找到平均成绩最高的学生,并使用 Printf 函数输出全部学生信息。最后程序返回 0 表示正常结束。