【求助】编写了一个结构体,函数调用总是显示不合法
您看看究竟是什么毛病,我愣是没看出来,可能比较长,但很多都是重复的。#include<stdio.h>
struct student
{
int num;
int total;
int Chi,mat,Eng,phy,che,bio,pol,his,geo;
};
int main()
{
void input(struct student stu[10]);
void tp(struct student stu[10]);
void chinese(struct student stu[10]);
void math(struct student stu[10]);
void english(struct student stu[10]);
void physics(struct student stu[10]);
void chemistry(struct student stu[10]);
void biology(struct student stu[10]);
void politics(struct student stu[10]);
void history(struct student stu[10]);
void geography(struct student stu[10]);
int i,m;
struct student stu[10],*p=stu;
input(p);
tp(p);
chinese(p);
math(p);
english(p);
physics(p);
chemistry(p);
biology(p);
politics(p);
history(p);
geography(p);
for(m=0;m<20;m++)
{
printf("如要查询学生成绩,请输入学生学号:");
scanf("%d",&i);
printf("\n");
printf("学号 语文 数学 英语 物理 化学 生物 政治 历史 地理\n");
printf("%d %d %d %d %d %d %d %d %d %d",stu[i].num,stu[i].Chi,stu[i].mat,stu[i].Eng,stu[i].phy,stu[i].che,stu[i].bio,stu[i].pol,stu[i].his,stu[i].geo);
return 0;
}
void input(struct student stu[10])
{
int i;
printf("请输入学生相应的信息\n");
printf("学号 语文 数学 英语 物理 化学 生物 政治 历史 地理\n");
for(i=0;i<9;i++)
scanf("%d %d %d %d %d %d %d %d %d %d",&stu[i].num,&stu[i].Chi,&stu[i].mat,&stu[i].Eng,&stu[i].phy,&stu[i].che,&stu[i].bio,&stu[i].pol,&stu[i].his,&stu[i].geo);
printf("\n");
}
void tp(struct student stu[10])
{
int i,number1,number2;
int max,min;
for(i=0;i<10;i++)
stu[i].total=stu[i].Chi+stu[i].mat+stu[i].Eng+stu[i].phy+stu[i].che+stu[i].bio+stu[i].pol+stu[i].his+stu[i].geo;
max=stu[0].total;
for(i=1;i<10;i++)
if(stu[i]>max)
{
max=stu[i].total;
number=i;
}
printf("最高分是%d 学号是%d\n",max,number1);
min=stu[0].total;
for(i=1;i<10;i++)
if(stu[i]<min)
{
min=stu[i].total;
number2=i;
}
printf("最低分是%d 学号是%d\n",min,number2);
}
void chinese(struct student stu[10])
{
int max,min;
int fail;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("语文最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("语文最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].Chi<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].Chi,stu[i].num);
}
void math(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("数学最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("数学最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].mat<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].mat,stu[i].num);
}
void english(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("英语最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("英语最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].Eng<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].Engu[i].num);
}
void physics(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("物理最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("物理最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].phy<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].phy,stu[i].num);
}
void chemistry(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("化学最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("化学最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].che<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].che,stu[i].num);
}
void biology(struct student stu[10])
{
int max,min;
int fail;
max=stu[0].bio;
for(i=1;i<10;i++)
if(stu[i].bio>max)
{
max=stu[i].bio;
number=i;
}
printf("生物最高分是%d 学号是%d\n",max,number1);
min=stu[0].bio;
for(i=1;i<10;i++)
if(stu[i].bio<min)
{
min=stu[i].bio;
number2=i;
}
printf("生物最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].bio<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].bio,stu[i].num);
}
void politics(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("政治最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("政治最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].pol<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].pol,stu[i].num);
}
void history(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("历史最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("历史最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].his<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].his,stu[i].num);
}
void geography(struct student stu[10])
{
int max,min;
max=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi>max)
{
max=stu[i].Chi;
number=i;
}
printf("地理最高分是%d 学号是%d\n",max,number1);
min=stu[0].Chi;
for(i=1;i<10;i++)
if(stu[i].Chi<min)
{
min=stu[i].Chi;
number2=i;
}
printf("地理最低分是%d 学号是%d\n",min,number2);
for(i=0;i<10;i++)
if(stu[i].geo<60)
printf("以下同学未及格,分数是%d 学号是%d\n",stu[i].geo,stu[i].num);
return 0;
}