鱼C论坛

 找回密码
 立即注册
查看: 1270|回复: 3

[技术交流] 【投票系统】结构共同体_投票系统

[复制链接]
发表于 2021-12-8 14:54:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我自己写了一个投票系统,第一版用了一部分宏定义,代码运行起来没有问题,但是到第二版的时候,我想将投票候选人用宏定义表示,但解决确出现了一些小的差异,有没有懂得大神帮忙看一下代码,有没有什么问题?

  • 1.第一版(运行起来没有问题的版)
    1. #include <stdio.h>
    2. #include <string.h>

    3. #define NUM 3
    4. #define QUANTLTY 10

    5. void main()
    6. {
    7. int i,max,tem;
    8. int temp;
    9. int a[NUM]={0,0,0};
    10. struct person
    11. {
    12.   char name[20];
    13.   
    14. }person1[NUM]={"小米","小王","小张"};
    15. printf("*******候选人投票系统********\n\n\n");
    16. printf("当前的候选人是:");
    17. for(i=0;i<NUM;i++)
    18. {
    19.   printf("%s ",person1[i].name);
    20. }
    21. printf("\n\n\n");
    22. printf("*****************************\n");
    23. for(i=0;i<3;i++)
    24. {
    25. printf("******选%s请投“%d”********\n",person1[i].name,i);
    26. }
    27. printf("*****************************\n\n\n");
    28. for(i=1;i<=QUANTLTY;i++)
    29. {
    30.   printf("第%d次投票,你投票给:",i);
    31.   scanf("%d",&temp);
    32.   if(temp>3||temp<1)
    33.   {
    34.    printf("\n输入错误!,你只能输入 :1,2,3;\n请重新输入!\n");
    35.    i--;
    36.   }
    37.   printf("\n");
    38.   if(temp==1)
    39.   {
    40.    a[0]++;
    41.   }
    42.   else if(temp==2)
    43.   {
    44.    a[1]++;
    45.   }
    46.   else if(temp==3)
    47.   {
    48.    a[2]++;
    49.   }
    50. }
    51. printf("\n\n\n");
    52. printf("当前的投票结果是:\n\n\n");
    53. for(i=0;i<NUM;i++)
    54. {
    55. printf("%s:%d\n",person1[i].name,a[i]);
    56. }
    57. for(i=0,max=a[i];i<NUM-1;i++)
    58. {
    59.   if(max<a[i++])
    60.   {
    61.    max=a[i++];
    62.   }
    63. }
    64. tem=i;

    65. printf("\n\n\n投票最高者是:%s\n",person1[tem].name);  
    66. }
    复制代码


  • 2.第二版(宏定义版)
    1. #include <stdio.h>
    2. #include <string.h>

    3. #define NUM 3
    4. #define QUANTLTY 10
    5. #define NAME1 小米
    6. #define NAME2 小王
    7. #define NAME3 小张

    8. void main()
    9. {
    10. int i,max,tem;
    11. int temp;
    12. int a[NUM]={0,0,0};
    13. struct person
    14. {
    15.   char name[20];
    16.   
    17. }person1[NUM]={"NAME1","NAME2","NAME3"};
    18. printf("*******候选人投票系统********\n\n\n");
    19. printf("当前的候选人是:");
    20. for(i=0;i<NUM;i++)
    21. {
    22.   printf("%s ",person1[i].name);
    23. }
    24. printf("\n\n\n");
    25. printf("*****************************\n");
    26. for(i=0;i<3;i++)
    27. {
    28. printf("******选%s请投“%d”********\n",person1[i].name,i);
    29. }
    30. printf("*****************************\n\n\n");
    31. for(i=1;i<=QUANTLTY;i++)
    32. {
    33.   printf("第%d次投票,你投票给:",i);
    34.   scanf("%d",&temp);
    35.   if(temp>3||temp<1)
    36.   {
    37.    printf("\n输入错误!,你只能输入 :1,2,3;\n请重新输入!\n");
    38.    i--;
    39.   }
    40.   printf("\n");
    41.   if(temp==1)
    42.   {
    43.    a[0]++;
    44.   }
    45.   else if(temp==2)
    46.   {
    47.    a[1]++;
    48.   }
    49.   else if(temp==3)
    50.   {
    51.    a[2]++;
    52.   }
    53. }
    54. printf("\n\n\n");
    55. printf("当前的投票结果是:\n\n\n");
    56. for(i=0;i<NUM;i++)
    57. {
    58. printf("%s:%d\n",person1[i].name,a[i]);
    59. }
    60. for(i=0,max=a[i];i<NUM-1;i++)
    61. {
    62.   if(max<a[i++])
    63.   {
    64.    max=a[i++];
    65.   }
    66. }
    67. tem=i;

    68. printf("\n\n\n投票最高者是:%s\n",person1[tem].name);  
    69. }
    复制代码

    1.这一版的问题主要出在结构共同体里面出现的是NAME1,NAME2,NAME3而不是姓名,怎么回事?
    2.我发现了这个的一个bug也没有办法解决,就是我同时输入两个数字(比如输入 1 2),程序会默认参与了两次投票直接跳过一次投票,如何让一次投票只能投一个,其他的作废呢?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-8 15:05:46 | 显示全部楼层

                               
登录/注册后可看大图

这个是第一个宏定义出现的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-8 15:06:37 | 显示全部楼层

                               
登录/注册后可看大图

这个是一次可以输入多个投票的bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 20:39:28 | 显示全部楼层
第一版那个最后一个for循环一定会导致获胜者是最后一个人,需要改进一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 17:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表