请高手帮忙修改一下 万分感谢
#include <stdio.h>
#include<stdlib.h>
struct student
{
char name[10];
long num;
float score;
struct student * next;
};
int n;
struct student * head;
struct student * p1,* p2;
void input(struct student * p)
{
p1=p2=(struct student * )malloc(sizeof(struct student));
head=0;
for(n=1;p1->num!=0;n++)
{
printf("输入第%d个学生:\n",n);
printf("请输入学生的学号(学号为0时,终止输入):");
scanf("%d",&p1->num);
printf("姓名:");
scanf("%s",p1->name);
printf("分数:");
scanf("%f",&p1->score);
if(n==0)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
}
p2->next=0;
}
void average(struct student * p )
{
p=head;
int i;
float average=0;
for(i=0;i<n;i++)
{
average=average+p->score;
p=p->next;
}
average=average/n;
printf("平均成绩为%f分\n",average);
}
void max(struct student * p)
{
p=head;
int i;
float m=p->score;
for(i=0;i<n-1;i++)
{
if(m<p->next->score)
m=p->next->score;
p=p->next;
}
printf("最高成绩为%f分\n",m);
}
void min(struct student * p)
{
p=head;
int i;
float m=p->score;
for(i=0;i<n-1;i++)
{
if(m>p->next->score)
m=p->next->score;
p=p->next;
}
printf("最低成绩为%f分\n",m);
}
void output(struct student * p)
{
p=head;
FILE *fp;
char *filename;
char c[20];
int i;
printf("请输入要存储的文件路径:");
scanf("%s",c);
filename=c;
fp=fopen(filename,"w+");
for(i=0;i<n;i++)
{
fwrite(p,sizeof(struct student),1,fp);
}
printf("保存完毕");
fclose(fp);
}
void main()
{
struct student a;
struct student * p;
input(p);
average(p);
max(p);
min(p);
output(p);
}
执行完input后,按回车没反应 请高手帮忙改一下 详细点 告诉我原因 谢了