请高手指点一下
#include<stdio.h>#include<stdlib.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num; /*学号*/
char name; /*姓名*/
float MT; /*数学成绩*/
float EN; /*英语成绩*/
float PH; /*物理成绩*/
float sum; /*总分*/
double ave;
struct student *next;
};
int n;
struct student *creat()
{
struct student *head,*p1,*p2;
n=0;
head=NULL;
p1=(struct student *)malloc(LEN);
scanf("%ld,%s,%f,%f,%f",&p1->num,&p1->name,&p1->MT,&p1->EN,&p1->PH);
p1->sum=p1->MT+p1->EN+p1->PH;
p1->ave=p1->sum/3.0;
p1->next=NULL;
while(p1->num!=0)
{
++n;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%ld,%s,%f,%f,%f",&p1->num,&p1->name,&p1->MT,&p1->EN,&p1->PH);
p1->sum=p1->MT+p1->EN+p1->PH;
p1->ave=p1->sum/3.0;
p1->next=NULL;
}
free(p1);
return(head);
}
/*****************************************************/
struct student *fun1(struct student *head)
{ int i,j;
struct student *p1,*p2;
p2=head;
for(i=1;i<n;i++)
for(j=1;j<n-i;j++)
if(p2->sum>((p2->next)->sum))
{
p1=p2->next;
p2->next=p1->next;
p1->next=head;
p2=p1;
}
p1=head;
int b=1;
for(i=0;i<n;i++)
{
printf("学生成绩表:\n");
printf("名次\t学号\t姓名\t数学成绩\t英语成绩\t物理成绩\n");
printf("%d\t%d\t%s\t%d\t%d\t%d\n",b++,p1->num,p1->name,p1->MT,p1->EN,p1->PH);
if(p1->next!=NULL)
p1=p1->next;
}
}
/******************************************************/
struct student *find(struct student *head,long num)
{
struct student *p1;
if(head==NULL)
{
printf("\n 链表为空,没有学生信息可查\n");
goto end;
}
p1=head;
while(num!=p1->num&&p1!=NULL)
{
p1=p1->next;
}
if(p1!=NULL)
printf("找到,学号:%ld,数学:%5.2f,英语:%5.2f,物理:%5.2f\n",num,p1->MT,p1->EN,p1->PH);
else
printf("没找到学号:%d的成绩信息\n",num);
end:
return(head);
}
/*****************************************************/
void main()
{ int num;
printf("请输入学生的学号,名字,数学成绩、英语成绩、物理成绩:\n");
struct student *creat();
fun1();
printf("请输入要查找的学生的学号:\n");
scanf("%ld",num);
struct student *find(struct student *head,long num);
}
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.cpp
C:\Documents and Settings\5-1\桌面\a.cpp(98) : error C2660: 'fun1' : function does not take 0 parameters
Error executing cl.exe.
a.obj - 1 error(s), 0 warning(s)
此程序是用来统计学生成绩,按总分成绩由高到低排出成绩的名次,打印出名次表,表格内包括学生编号、各科分数、总分和平均分
任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数
我是新手,不会改这个错误,程序里面也可能有逻辑错误,请高手帮忙