C语言编程题
设计程序,N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87, 则平均分应当是:78.625
#include <stdio.h>
#include <stdlib.h>
#define N 8
struct slist
{ double s;
struct slist *next;
};
typedef struct slist STREC;
double fun( STREC *h )
{
STREC *p;
double sum=0,avg;
int n=0;
p=h->next;
while(p)
{
sum=sum+p->s;
n++;
p=p->next;
avg=sum/n;
}
return avg;
}
STREC * creat( double *s) //创建带头结点的单链表
{ STREC *h,*p,*q; int i=0;
h=p=(STREC*)malloc(sizeof(STREC)); p->s=0;
while(i<N)
{ q=(STREC*)malloc(sizeof(STREC));
q->s=s[i]; i++; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist( STREC *h) //输出链表
{ STREC *p;
p=h->next; printf("head");
do
{ printf("->%4.1f",p->s); p=p->next; }
while(p!=0);
printf("\n\n");
}
void main()
{ double s[N]={85,76,69,85,91,72,64,87},ave;
STREC *h;
h=creat( s ); outlist(h);
ave=fun( h );
printf("ave= %6.3f\n",ave);
}
运行示例
C语言不迷路。
需要分析可以到微信公众号发送问题或者在评论区留言,有问必答!
想了解我的C语言学习笔记等更多知识请关注公众号:
量子云基地