大一c语音数据结构 请问一下那个第三个调用函数输入性别课程号,好像我写的函数好像逻辑有些不对,请问怎么改

#include"stdio.h"
int happy(int q);
int scroe(int p);
int acc(char k,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(char k,int b) //选定性别 课程平求均成绩
{
int sum3=0;
int r=0;
for(int g=0;g<4;g++)
{
if(s[g].sex=='f'==k)
{
sum3=sum3+s[g].a[b];
}
else if(s[g].sex=='m'==k)
{
sum3=sum3+s[g].a[b];
}
}
r=sum3/4;
}

int main()
{
int s,w,u;
int x,y,z;
char v;
printf("选择课程号;0或1或2 输入课程号:") ;
scanf("%d",&x);
s=happy(x); //调用指定课程平均成绩
printf("%d",s);
printf("输入学生学号0-2查询平均成绩");
scanf("%d",&y);
w=score(y); //调用指定学生平均成绩
printf("%d",w);
printf("输入性别'f'或'm'和课程号:");
scanf("%c,%d",&v,&z);
u=acc(v,z); //调用选定性别和课程号
printf("%d",u);
return 0;
}
//跑下来代码无报错,但是第三个调用函数出来不了结果,感觉自己逻辑有些问题,就是要求输入性别和指定课程号可以求改性别指定课程的平均

最后的除数不对,你除了4,实际上应该除以指定的性别的人数

int acc(char sex, int course) //选定性别 课程平求均成绩
{
    int sum = 0;
    int count = 0;
    for (int i = 0; i < 4; i++)
    {
        if (s[i].sex == sex)
        {
            sum += s[i].a[course];
            count++;
        }
    }
    return sum / count;
}