设计程序,N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
时间: 2024-09-09 18:12:02 浏览: 46
要编写这样一个函数,首先需要定义学生的成绩结构体,其中包含学生成绩和指向下一个学生的指针。然后,编写函数`fun`来遍历链表,累加所有学生的成绩,并计算学生的数量。最后,根据累加的总成绩除以学生人数得到平均分,并由函数返回这个值。
以下是一个简单的示例代码:
```c
#include <stdio.h>
// 定义学生的成绩结构体
typedef struct Student {
int score; // 学生成绩
struct Student *next; // 指向下一个学生的指针
} Student;
// 函数声明
double fun(Student *h);
int main() {
// 假设这里已经创建了一个带头节点的链表,并且h指向链表的头节点
// ... 创建链表的代码 ...
// 调用fun函数计算平均分
double average = fun(h);
printf("The average score is: %.2f\n", average);
// ... 其他代码 ...
return 0;
}
// fun函数定义
double fun(Student *h) {
if (h == NULL || h->next == NULL) {
// 链表为空或只有一个节点,直接返回0或该节点的分数
return h == NULL ? 0 : h->next->score;
}
Student *current = h->next; // 从第一个学生节点开始
int sum = 0; // 用于累加成绩
int count = 0; // 学生计数
while (current != NULL) {
sum += current->score; // 累加成绩
count++; // 学生数量加1
current = current->next; // 移动到下一个学生节点
}
return (double)sum / count; // 返回平均分
}
```
注意:在实际应用中,你可能需要先创建链表,并在`main`函数中填充学生的成绩数据,然后再调用`fun`函数来计算平均分。
阅读全文