#include"stdio.h"
int happy(int q);
int scroe(int p);
int acc(int b);
int acb(int b);
struct Student
{
int no; //学号
char mame[8]; //姓名
char sex; //性别
float a[3]; //三科成绩
};
struct Student s[4]={
{1,"小明",'m',100,100,100},
{2,"小王",'f',90,90,60},
{3,"张三",'m',80,60,50},
{4,"老王",'f',70,30,40}
};
int happy(int q) //指定课程求平均成绩
{
int sum1=0;
int l;
for(int i=0;i<4;i++)
{
sum1=sum1+s[i].a[q];
}
l=sum1/4;
return l;
}
int score(int p) //指定学生求平均成绩
{
int sum2=0;
int k;
for(int j=0;j<3;j++)
{
sum2=sum2+s[p].a[j];
}
k=sum2/3;
return k;
}
int acc(int b) //选定女性课程平求均成绩
{
int sum3=0,ox,ol=0;
for(int g=0;g<4;g++)
{
switch(s[g].sex)
{
case 'f':
{
sum3=sum3+s[g].a[b];
ol++;
break;
}
case 'm':
{
break;
}
}
}
ox=sum3/ol;
return ox;
}
int acb(int b) //选定男性课程平求均成绩
{
int sum3=0,ax,ol=0;
for(int g=0;g<4;g++)
{
switch(s[g].sex)
{
case 'm' :
{
sum3=sum3+s[g].a[b];
break;
}
case 'f' :
{
break;
}
}
}
ax=sum3/2;
return ax;
}
int main()
{
int nb;
int s,w,u,t;
int x,y,z,d;
int v;
printf("选择菜单:指定课程求平均成绩,指定学生求平均成绩,选定性别 课程平求均成绩分别输入1,2,3:");
scanf("%d",&nb);
if(nb==1)
{
printf("选择课程号;0或1或2 输入课程号:") ;
scanf("%d",&x);
s=happy(x); //调用指定课程平均成绩
printf("%d",s);
}else if(nb==2)
{
printf("输入学生学号0-3查询平均成绩");
scanf("%d",&y);
w=score(y); //调用指定学生平均成绩
printf("%d",w);
}else if(nb==3)
{
printf("输入性别'f'或'm'用1,2代替:");
scanf("%d",&v);
if(v==1)
{
printf("输入课程号:");
scanf("%d",z);
u=acc(z); //调用选定女性和课程号
printf("女性该课程成绩%d",u);
}
if(v==2)
{
printf("输入课程号:");
scanf("%d",d);
t=acb(d); //调用选定男性和课程号
printf("男性该课程成绩%d",t);
}
}
return 0;
}
//就是输入3选择第指定性别指定课程,不管是男生还是女生选定课程输出都无结果,逻辑感觉没错,编译器也没有报错,不明白错哪了