发现几个错误,但是怎么写这个程序自已搞吧,我看到一大堆,真头痛
错误1:
struct score
{ float sum,aver;}; //这后面加上分号
错误2:
struct t; 这是什么意思?要创建结构体的变量,直接使用struct定义时后面的名字就行了比如student t或者score t;你的struct t这种错误还不止一处,在paixun()这个函数里也有。
错误3:
main函数里调用paixun()函数,是不是要带上足够的参数?你一个都不带怎么行。
struct score的定义后面忘加分号了
paixun函数声明的是有参数的,你调用时没写参数
paixun函数里的struct t要改成struct student t。而且struct只需要在定义时写,后面使用t的时候直接写t就行了,不用写struct t
试试这个
#include
#define N 10
void paixun(int i,int j,struct student stu[N],struct score sco[N]);
struct student
{
long number;
float score[3];
struct score;} ;
struct score
{ float sum,aver;};
struct student stu[N];
struct score sco[N];
struct t;
int i,j;
void main()
{
for(i=1;i<=N;i++)
{ printf("please input %dth student's number and three score: \n",i);
scanf("%ld%f%f%f",&stu[i].number,&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
}
for(i=1;i<=N;i++)
{for(j=1;j<=3;j++)
{ sco[i].sum+=stu[i].score[j];
sco[i].aver+=sco[i].sum/3;}
}
paixun(N,N,stu,sco);
}
void paixun(int i,int j,struct student stu[N],struct score sco[N])
{ for(i=1;i<=N;i++)
for(j=i;j<=N-i;j++)
if(sco[i].sum>sco[i+1].sum)
{struct student t=stu[i];
stu[i]=stu[i+1];
stu[i+1]=t;}
for(i=1;i<=N;i++)
printf("%dth student's score:%d%ld%f%f%f,sum=%f,aver=%f\n",i,stu[i].number,stu[i].score[1],stu[i].score[2],stu[i].score[3],sco[i].sum,sco[i].aver );
}
struct student
{
long number;
float score[3];
struct score;} ;
struct score
{ float sum,aver;}
难道是这两个定义的位置问题,换一下位置试试