与醴同舟 2022-03-27 09:13 采纳率: 50%
浏览 58
已结题

统计投票程序,数据异常

问题:有三个候选人,每个选民只能投票选一人,要求统计编一个统计选票的程序,先后输入被选人的名字,最后输入个人得票结果

#include<string.h>                                                        //字符数组头文件
#include<stdio.h>

struct Person                                                            //声明结构体
{    char name[20];
    int count;        }
leader[3]{ "Li",0,"Zhang",0,"Sun",0 };                                    //定义结构体并初始化

int main()
{
    int i, j;                                                            //循环变量
    char leader_name[20];                                                //定义字符数组

    for(i=1;i<=10;i++)                                                    //十次循环,十张选票
    {
        scanf_s("%s", leader_name);                                        //输入名字
        for (j = 0; j < 3; j++)                                            //对比统计
            if (strcmp(leader_name, leader[j].name) == 0)
                leader[j].count++;
    }

    printf("\nResult:\n");                                                
    for (i = 0; i < 3; i++)
        printf("%5s:%d\n,leader[i].name,leader[i].count");                //分别输出结构体成员
    return 0;
}


输入Li + enter
运行结果

img

  • 写回答

1条回答 默认 最新

  • a5156520 2022-03-27 09:47
    关注

    我在Dev-C++用scanf代替scanf_s,发现可以正常运行,除了最后打印那里格式字符串稍微改了一下。

    
    #include<string.h>                                                        //字符数组头文件
    #include<stdio.h>
     
    struct Person                                                            //声明结构体
    {    char name[20];
        int count;        }
    leader[3]{ "Li",0,"Zhang",0,"Sun",0 };                                    //定义结构体并初始化
     
    int main()
    {
        int i, j;                                                            //循环变量
        char leader_name[20];                                                //定义字符数组
     
        for(i=1;i<=10;i++)                                                    //十次循环,十张选票
        {
            scanf("%s", leader_name);                                        //输入名字
            for (j = 0; j < 3; j++)                                            //对比统计
                if (strcmp(leader_name, leader[j].name) == 0)
                    leader[j].count++;
        }
     
        printf("\nResult:\n");                                                
        for (i = 0; i < 3; i++)
            printf("%5s:%d\n",leader[i].name,leader[i].count);                //分别输出结构体成员
        return 0;
    }
     
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 修改了问题 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 TSM320F2808PZA芯片 Bootloader
  • ¥30 谷歌浏览器出现开发者工具无法显示已创建的,但您可以调试已部署的代码。 状态代码 404, net::ERR HTTP RESPONSE CODE FAILURE
  • ¥15 chatgpt网页版侧边栏和模型切换点击没反应怎么办
  • ¥15 dev运行环境,c语言,报错是为什么?怎么改
  • ¥15 如何解决蓝牙通话音频突发失真问题
  • ¥15 安装opengauss数据库报错
  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas