学生期末成绩的信息包括name和 chinese, math, english, physics, chemistry五个科目的成绩。试定义一个结构体管理学生成绩,打印输出所有学生中总成绩的最高分和最
时间: 2023-03-16 20:51:05 浏览: 124
学生期末成绩管理
低分。
可以定义一个名为“Student”的结构体,包含name和五个科目的成绩。然后定义一个名为“Grade”的结构体,包含一个“Student”类型的数组和数组长度。可以在“Grade”结构体中定义一个函数来计算所有学生的总成绩,并找出最高分和最低分。最后,可以编写一个打印函数来输出最高分和最低分。
示例代码如下:
```
#include <stdio.h>
#define NUM_SUBJECTS 5
#define NUM_STUDENTS 3
typedef struct {
char name[20];
int chinese;
int math;
int english;
int physics;
int chemistry;
} Student;
typedef struct {
Student students[NUM_STUDENTS];
int length;
} Grade;
void calculateTotal(Grade *grade) {
int i, j;
for (i = 0; i < grade->length; i++) {
int total = 0;
for (j = 0; j < NUM_SUBJECTS; j++) {
total += *((int *)(&grade->students[i]) + j + 1);
}
*((int *)(&grade->students[i]) + j + 1) = total;
}
}
void printMaxMin(Grade *grade) {
int max = 0, min = 1000;
int i;
for (i = 0; i < grade->length; i++) {
int total = *((int *)(&grade->students[i]) + NUM_SUBJECTS + 1);
if (total > max) {
max = total;
}
if (total < min) {
min = total;
}
}
printf("最高分:%d\n", max);
printf("最低分:%d\n", min);
}
int main() {
Grade grade = {
{
{"张三", 80, 90, 70, 85, 75},
{"李四", 75, 85, 80, 90, 70},
{"王五", 90, 80, 85, 75, 95}
},
NUM_STUDENTS
};
calculateTotal(&grade);
printMaxMin(&grade);
return 0;
}
```
输出结果为:
```
最高分:485
最低分:395
```
阅读全文