8、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
时间: 2024-03-10 19:50:53 浏览: 78
根据题目要求,可以先定义一个结构体表示学生信息,包括学号和成绩:
```c
typedef struct {
int id;
float score;
} Student;
```
然后编写函数 `fun`,该函数的输入参数为学生数组 `a` 和学生数量 `n`,输出参数为指向最低分学生的指针 `p`:
```c
void fun(Student a[], int n, Student **p)
{
// 初始化最低分为第一个学生的成绩
float minScore = a[0].score;
// 遍历学生数组,查找最低分
for (int i = 1; i < n; i++) {
if (a[i].score < minScore) {
// 更新最低分及其对应的学生指针
minScore = a[i].score;
*p = &a[i];
}
}
}
```
在函数中,我们先将第一个学生的成绩赋值给 `minScore`,然后遍历数组,如果发现更低的成绩,则更新 `minScore` 和最低分对应的学生指针 `p`。最终,指针 `p` 指向的就是成绩最低的学生的记录。
主函数可以这样调用 `fun` 函数:
```c
int main()
{
// 定义学生数组
Student students[] = {
{1, 90},
{2, 80},
{3, 70},
{4, 60},
{5, 50},
};
// 调用函数查找最低分学生
Student *p;
fun(students, 5, &p);
// 输出最低分学生的学号和成绩
printf("id: %d, score: %.2f\n", p->id, p->score);
return 0;
}
```
输出结果如下:
```
id: 5, score: 50.00
```
阅读全文