请用c语言已知学生的记录由学号和分数构成,从键盘输入若干名学生的数据,调用自定义函数fun(),找出分数最高的学生。要求采用结构体数组来保存学生的记录,通过形参指针将找到的结果传回主函数,在主函数中输出结果。
时间: 2024-03-01 09:50:49 浏览: 84
好的,下面是代码:
```c
#include <stdio.h>
#define MAXSIZE 100
struct Student {
int id;
int score;
};
void fun(struct Student *stu, int n, struct Student **max) {
*max = &stu[0]; // 假设第一个学生的成绩最高
for (int i = 1; i < n; i++) {
if (stu[i].score > (*max)->score) {
*max = &stu[i]; // 如果有更高的成绩,更新最高成绩的指针
}
}
}
int main() {
struct Student stu[MAXSIZE];
int n;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请依次输入每个学生的学号和分数:\n");
for (int i = 0; i < n; i++) {
scanf("%d %d", &stu[i].id, &stu[i].score);
}
struct Student *max;
fun(stu, n, &max);
printf("分数最高的学生为:学号%d,分数%d\n", max->id, max->score);
return 0;
}
```
程序中定义了一个结构体 `Student` 来保存学生的记录,包括学号和分数。在 `fun` 函数中,通过传入结构体数组的指针和学生人数,找到分数最高的学生,并将其指针通过形参指针传回主函数。在主函数中,输出找到的学生的学号和分数。
阅读全文