帮我用c语言做一下:N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
时间: 2023-03-22 10:03:38 浏览: 128
好的,以下是用C语言实现的一个函数,它会在主函数中调用并计算一个整数数组的平均值,并返回这个平均值所在链表结构体的头节点:
```
#include <stdio.h>
#include <stdlib.h>
struct node {
int value;
struct node *next;
};
struct node *fun(int arr[], int n, int h) {
float avg = 0;
struct node *head = NULL;
struct node *tail = NULL;
int i;
for (i = 0; i < n; i++) {
avg += arr[i];
}
avg = avg / n;
for (i = 0; i < n; i++) {
if (arr[i] >= avg) {
struct node *new_node = (struct node*)malloc(sizeof(struct node));
new_node->value = arr[i];
new_node->next = NULL;
if (head == NULL) {
head = new_node;
tail = new_node;
} else {
tail->next = new_node;
tail = new_node;
}
}
}
return head;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = 5;
int h = 3;
struct node *result = fun(arr, n, h);
printf("The resulting linked list is: ");
while (result != NULL) {
printf("%d ", result->value);
result = result->next;
}
printf("\n");
return 0;
}
```
这个函数的功能是求出整数数组 `arr` 的平均值,然后将数组中所有大于等于平均值的元素放入一个新的链表结构体中,并返回这个链表结构体的头节点。主函数中调用这个函数并打印结果。
希望这个函数符合您的需求,如果您有任何问题或需要进一步的帮助,请告诉我。
阅读全文