怎样用链表输出数组的内容?
1.用链表结构保存学生的成绩信息,成绩信息包括学号、姓名和3门课程的成绩。用create函数实现创建5个同学的成绩信息链表,用output函数以表格的形式输出5个
同学的成绩信息,用average函数实现计算每个同学的3门课程的平均成绩,
并通过数组返回。
#include "stdio.h"
#include "stdlib.h"
#define STUDENT struct student
#define LEN sizeof(STUDENT)
#define N 3
STUDENT
{
int num;
char name[20];
float score[3];
STUDENT *next;
};
float avg[N];
float average(STUDENT st[])
{
int i,j;
float t;
for(i=0;i<N;i++)
{
for(j=0;j<3;j++)
{
t+=st[i].score[j];
avg[i]=t/3.0;
}
}
return avg[i];
}
STUDENT *create(int n)
{
STUDENT *head,*last,*p;
int i,j;
head=last=NULL;
for(i=0;i<n;i++)
{
p=(STUDENT *)malloc(LEN);
printf("\nPlease input student%d number,name,score1 score2\tscore3:",i+1);
scanf("%d,%s",&p->num,&p->name);
for(j=0;j<3;j++)
{
scanf("%f",&p->score[j]);
}
p->next=NULL;
if(i==0)
head=last=p;
else
{
last->next=p;
last=p;
}
}
return head;
}
void output(STUDENT *head)
{
STUDENT *p;
p=head;
int i=0;
printf("number\tname\t\tscore\n");
while(p!=NULL)
{
printf("%d\t%s\t\t",p->num,p->name);
for(i=0;i<N;i++)
printf("%.2f\t%.2f\t%.2f",p->score[i]);
p=p->next;
}
}
main()
{
float avg[N];
int i;
STUDENT *head;
STUDENT *st;
head=create(N);
output(head);
for(i=0;i<N;i++)
{
avg[i]=average(st);
}
for(i=0;i<N;i++)
printf("%d\t%-20s\t%.1f\n",(st+i)->num,(st+i)->name,avg[i]);
}
这个实在是不会修改呀