|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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),程序会默认参与了两次投票直接跳过一次投票,如何让一次投票只能投一个,其他的作废呢?
|
|