|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我自己写了一个投票系统,第一版用了一部分宏定义,代码运行起来没有问题,但是到第二版的时候,我想将投票候选人用宏定义表示,但解决确出现了一些小的差异,有没有懂得大神帮忙看一下代码,有没有什么问题?
- 1.第一版(运行起来没有问题的版)
- #include <stdio.h>
- #include <string.h>
- #define NUM 3
- #define QUANTLTY 10
- void main()
- {
- int i,max,tem;
- int temp;
- int a[NUM]={0,0,0};
- struct person
- {
- char name[20];
-
- }person1[NUM]={"小米","小王","小张"};
- printf("*******候选人投票系统********\n\n\n");
- printf("当前的候选人是:");
- for(i=0;i<NUM;i++)
- {
- printf("%s ",person1[i].name);
- }
- printf("\n\n\n");
- printf("*****************************\n");
- for(i=0;i<3;i++)
- {
- printf("******选%s请投“%d”********\n",person1[i].name,i);
- }
- printf("*****************************\n\n\n");
- for(i=1;i<=QUANTLTY;i++)
- {
- printf("第%d次投票,你投票给:",i);
- scanf("%d",&temp);
- if(temp>3||temp<1)
- {
- printf("\n输入错误!,你只能输入 :1,2,3;\n请重新输入!\n");
- i--;
- }
- printf("\n");
- if(temp==1)
- {
- a[0]++;
- }
- else if(temp==2)
- {
- a[1]++;
- }
- else if(temp==3)
- {
- a[2]++;
- }
- }
- printf("\n\n\n");
- printf("当前的投票结果是:\n\n\n");
- for(i=0;i<NUM;i++)
- {
- printf("%s:%d\n",person1[i].name,a[i]);
- }
- for(i=0,max=a[i];i<NUM-1;i++)
- {
- if(max<a[i++])
- {
- max=a[i++];
- }
- }
- tem=i;
-
- printf("\n\n\n投票最高者是:%s\n",person1[tem].name);
- }
复制代码
- 2.第二版(宏定义版)
- #include <stdio.h>
- #include <string.h>
- #define NUM 3
- #define QUANTLTY 10
- #define NAME1 小米
- #define NAME2 小王
- #define NAME3 小张
- void main()
- {
- int i,max,tem;
- int temp;
- int a[NUM]={0,0,0};
- struct person
- {
- char name[20];
-
- }person1[NUM]={"NAME1","NAME2","NAME3"};
- printf("*******候选人投票系统********\n\n\n");
- printf("当前的候选人是:");
- for(i=0;i<NUM;i++)
- {
- printf("%s ",person1[i].name);
- }
- printf("\n\n\n");
- printf("*****************************\n");
- for(i=0;i<3;i++)
- {
- printf("******选%s请投“%d”********\n",person1[i].name,i);
- }
- printf("*****************************\n\n\n");
- for(i=1;i<=QUANTLTY;i++)
- {
- printf("第%d次投票,你投票给:",i);
- scanf("%d",&temp);
- if(temp>3||temp<1)
- {
- printf("\n输入错误!,你只能输入 :1,2,3;\n请重新输入!\n");
- i--;
- }
- printf("\n");
- if(temp==1)
- {
- a[0]++;
- }
- else if(temp==2)
- {
- a[1]++;
- }
- else if(temp==3)
- {
- a[2]++;
- }
- }
- printf("\n\n\n");
- printf("当前的投票结果是:\n\n\n");
- for(i=0;i<NUM;i++)
- {
- printf("%s:%d\n",person1[i].name,a[i]);
- }
- for(i=0,max=a[i];i<NUM-1;i++)
- {
- if(max<a[i++])
- {
- max=a[i++];
- }
- }
- tem=i;
-
- printf("\n\n\n投票最高者是:%s\n",person1[tem].name);
- }
复制代码
1.这一版的问题主要出在结构共同体里面出现的是NAME1,NAME2,NAME3而不是姓名,怎么回事?
2.我发现了这个的一个bug也没有办法解决,就是我同时输入两个数字(比如输入 1 2),程序会默认参与了两次投票直接跳过一次投票,如何让一次投票只能投一个,其他的作废呢?
|
|