huashu21 2023-12-07 22:32 采纳率: 77.8%
浏览 10
已结题

C语言,投票候选人问题

img

img

img


题目和代码是这样,输出明显不对但是不知道是哪里不对,求指点qwq,刚学C没多久,总是有一些地方不会写

  • 写回答

3条回答 默认 最新

  • 关注

    n的初始化放在vote函数或者begin函数中,另外,你用scanf("%s")读取名字,那么输入名字的时候不能有空格。
    还有就是,vote函数中,比较名字的时候,需要遍历p数组的m个人进行比较,应该再 加一层for循环才对。
    代码修改如下:

    #include <stdio.h>
    #include <string.h>
    #define m 5
    struct VOT
    {
        char name[10];
        int n;
    };
    void begin(VOT* p)
    {
        int i=0;
        printf("候选人为:");
        for(i=0;i<m;i++)
        {
            scanf("%s",p[i].name);//读取名字,名字中不能有空格
            p[i].n = 0; //这里初始化n的值为0
        }
    }
    void vote(VOT *p,int n)
    {
        printf("投标:\n");
        int i,j;
        char s[10];
        for(i=0;i<n;i++)
        {
            scanf("%s",s); //读取名字,名字中不能有空格
            //比较名字
            for(j=0;j<m;j++) //需要遍历m个人
            {
                if(strcmp(s,p[j].name)==0)
                {
                    p[j].n++;
                    break;
                }
            }
        }
        //输出结果
        printf("投票结果为:\n");
        for(i=0;i<m;i++)
            printf("%s %d\n",p[i].name,p[i].n);
    }
    int main()
    {
        VOT vot[m],*p=vot;
        begin(p);
        vote(p,10);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月17日
  • 已采纳回答 12月9日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit