妖舍 2022-03-19 19:20 采纳率: 100%
浏览 234
已结题

请问如何用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();
}


  • 写回答

4条回答 默认 最新

  • yun6853992 2022-03-19 19:59
    关注

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

    比如 你的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;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding