大一c语言有5个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。要求用结构体变量和结构体变量的指针作函数参数。
时间: 2024-03-15 08:44:26 浏览: 60
使用结构体数组,利用函数实现按学生学号和姓名的查询操作.c
好的,这是一个关于结构体的问题。首先,我们可以定义一个结构体类型来存储学生信息:
```c
typedef struct student {
int id;
char name[20];
float score[3];
float avg_score;
} Student;
```
然后,我们可以定义一个函数来计算学生的平均成绩:
```c
void calculate_avg_score(Student *s) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += s->score[i];
}
s->avg_score = sum / 3;
}
```
接着,我们可以定义一个函数来比较学生的平均成绩并返回平均成绩最高的学生:
```c
Student *find_highest_avg_score(Student *students, int n) {
Student *highest = &students[0];
for (int i = 1; i < n; i++) {
if (students[i].avg_score > highest->avg_score) {
highest = &students[i];
}
}
return highest;
}
```
最后,在主函数中,我们可以定义5个学生结构体变量,初始化它们的成员,然后调用上述函数来查找平均成绩最高的学生,最后输出该学生的信息:
```c
int main() {
Student students[5] = {
{1, "Tom", {80, 90, 95}, 0},
{2, "Jerry", {85, 88, 92}, 0},
{3, "Alice", {75, 82, 90}, 0},
{4, "Bob", {90, 92, 88}, 0},
{5, "David", {78, 85, 92}, 0}
};
for (int i = 0; i < 5; i++) {
calculate_avg_score(&students[i]);
}
Student *highest = find_highest_avg_score(students, 5);
printf("ID: %d\nName: %s\nScore: %f %f %f\nAverage Score: %f\n",
highest->id, highest->name, highest->score[0], highest->score[1], highest->score[2], highest->avg_score);
return 0;
}
```
这样就可以输出平均成绩最高的学生的信息了。
阅读全文