请问如何用c统计男女人数

问题遇到的现象和发生背景

借鉴了一些网站上别人的开源代码又自己改了一些需求,现在遇到一个问题,我想要实现统计男女人数统计不同政治面貌的人的人数,但是实在是无从下手,麻烦各位帮忙看看应该怎么写吧 哭了实在搞不懂

问题相关代码
void input()                                                                                //录入信息
{   int i,renshu2=0;
    printf("请输入需要录入教师的人数:");
    scanf("%d",&renshu2);
    for (i=renshu;i<renshu+renshu2;i++)
    {
       printf("----------------------------------------------------------------------------------------------------\n");
        printf("请输入教师 %d的\教师编号 姓名 性别 出生年月 民族 政治面貌 电话 职称 学历:(空格分隔)\n",i+1);
         scanf("%s%s%s%s%s%s%s%s%s%s",Tc[i].Num,Tc[i].Name,Tc[i].Sex,Tc[i].Age,Tc[i].nation,Tc[i].zhengzhimianmao,Tc[i].dianhua,Tc[i].zhicheng,Tc[i].education);
    }
    renshu=renshu+renshu2;

    printf("\n--------------------------------◇输入结束,按回车返回主菜单◇--------------------------------------\n");
        getchar();
}


你的录入逻辑没有问题啊,如果录入完成,剩下的你说的统计相关信息,就是对录入信息做遍历和处理啊。

比如 你的input函数实现了一个对全局结构体数组 Tc的赋值操作,也就是信息录入动作。

接下来,如果你要统计男女的人数,可以专门写个函数做遍历。
具体就是int x=0,y=0; for(int i=0; i<renshu; i++) { if( strcmp(Tc[i].Sex,"男") ==0) x++; else y++;}

我按照你的逻辑简单实现了一下你可以梳理和优化: 我是在vs2019上测试的:

img

#include <stdio.h>
#include <string.h>
struct Teather {
    int num;       //编号
    char name[20]; //姓名  字符串
    char sex[3];   // 性别 字符串
    char age[9];   //出生年月 如19911101 八位  字符串
    char nation[5]; //民族
    char politics[5]; //政治面貌  字符串
    char phone[12];   //电话  11位
    char work[20];
    char education[20]; 
};

int renshu = 0;
#define NUM 20
struct Teather Tc[NUM];
void input()                                                                                //录入信息
{
    int i;
    printf("请输入需要录入教师的人数(20人以内):");
    scanf_s("%d", &renshu);
    for (i = 0; i < renshu; i++)
    {
        printf("----------------------------------------------------------------------------------------------------\n");
        printf("请输入教师 %d的 教师编号 姓名 性别 出生年月 民族 政治面貌 电话 职称 学历:(空格分隔)\n", i + 1);
        scanf_s("%d",&Tc[i].num);
        scanf_s("%s", Tc[i].name, 20);
        scanf_s("%s", Tc[i].sex, 3);
        scanf_s("%s", Tc[i].age, 9);
        scanf_s("%s", Tc[i].nation, 5);
        scanf_s("%s", Tc[i].politics, 5);
        scanf_s("%s", Tc[i].phone, 12);
        scanf_s("%s", Tc[i].work, 20);
        scanf_s("%s", Tc[i].education, 20);
        //Tc[i].num = i;
        //scanf_s("%s%s%s%s%s%s%s%s%s%s", Tc[i].name,20,  Tc[i].sex,3, Tc[i].Age, Tc[i].nation, Tc[i].zhengzhimianmao, Tc[i].dianhua, Tc[i].zhicheng, Tc[i].education);
    }
    
    printf("\n--------------------------------◇输入结束,按回车返回主菜单◇--------------------------------------\n");
    
}

void print()
{
    printf("录入信息是:\n");
    for (int i = 0; i < renshu; i++)
    {
        printf("%d ", Tc[i].num);
        printf("%s ", Tc[i].name);
        printf("%s ", Tc[i].sex);
        printf("%s ", Tc[i].age);
        printf("%s ", Tc[i].nation);
        printf("%s ", Tc[i].politics);
        printf("%s ", Tc[i].phone);
        printf("%s ", Tc[i].work);
        printf("%s ", Tc[i].education);
        printf("\n");
    }
}
int search(int flag)
{
    int man_res = 0;
    int woman_res = 0;
    for (int i = 0; i < renshu; i++)
    {
        if (strcmp(Tc[i].sex, "男") == 0)
        {
            man_res++;
        }
        else
        {
            woman_res++;
        }
    }
    if (flag == 0)
    {
        return man_res;
    }
    return woman_res;
}
int main(void)
{
    input();
    printf("男生个数为 :%d \n", search(0));
    printf("女生个数为 :%d \n", search(1));
    print();
    
    return 0;
}


你这个代码不完整,可以在for语句里面加判断语句,判断男女,再累加人数;

if(strcmp(Tc[i].Sex,'男')==0){
  renshu++;
}

你就遍历数组,比较对应属性变量的值啊

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632