【投票系统】结构共同体_投票系统
我自己写了一个投票系统,第一版用了一部分宏定义,代码运行起来没有问题,但是到第二版的时候,我想将投票候选人用宏定义表示,但解决确出现了一些小的差异,有没有懂得大神帮忙看一下代码,有没有什么问题?[*]1.第一版(运行起来没有问题的版)
#include <stdio.h>
#include <string.h>
#define NUM 3
#define QUANTLTY 10
void main()
{
int i,max,tem;
int temp;
int a={0,0,0};
struct person
{
char name;
}person1={"小米","小王","小张"};
printf("*******候选人投票系统********\n\n\n");
printf("当前的候选人是:");
for(i=0;i<NUM;i++)
{
printf("%s ",person1.name);
}
printf("\n\n\n");
printf("*****************************\n");
for(i=0;i<3;i++)
{
printf("******选%s请投“%d”********\n",person1.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++;
}
else if(temp==2)
{
a++;
}
else if(temp==3)
{
a++;
}
}
printf("\n\n\n");
printf("当前的投票结果是:\n\n\n");
for(i=0;i<NUM;i++)
{
printf("%s:%d\n",person1.name,a);
}
for(i=0,max=a;i<NUM-1;i++)
{
if(max<a)
{
max=a;
}
}
tem=i;
printf("\n\n\n投票最高者是:%s\n",person1.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={0,0,0};
struct person
{
char name;
}person1={"NAME1","NAME2","NAME3"};
printf("*******候选人投票系统********\n\n\n");
printf("当前的候选人是:");
for(i=0;i<NUM;i++)
{
printf("%s ",person1.name);
}
printf("\n\n\n");
printf("*****************************\n");
for(i=0;i<3;i++)
{
printf("******选%s请投“%d”********\n",person1.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++;
}
else if(temp==2)
{
a++;
}
else if(temp==3)
{
a++;
}
}
printf("\n\n\n");
printf("当前的投票结果是:\n\n\n");
for(i=0;i<NUM;i++)
{
printf("%s:%d\n",person1.name,a);
}
for(i=0,max=a;i<NUM-1;i++)
{
if(max<a)
{
max=a;
}
}
tem=i;
printf("\n\n\n投票最高者是:%s\n",person1.name);
}
1.这一版的问题主要出在结构共同体里面出现的是NAME1,NAME2,NAME3而不是姓名,怎么回事?
2.我发现了这个的一个bug也没有办法解决,就是我同时输入两个数字(比如输入 1 2),程序会默认参与了两次投票直接跳过一次投票,如何让一次投票只能投一个,其他的作废呢?
https://hbimg.huabanimg.com/0aa3a71d3372f2c342a27e4c645de6ec5b36f0d87cbd-Ipux0V_fw658/format/webp
这个是第一个宏定义出现的问题 https://hbimg.huabanimg.com/9546a281dbf572766d7ec07153bc9915cf57620b3928-mMD7JF_fw658/format/webp
这个是一次可以输入多个投票的bug 第一版那个最后一个for循环一定会导致获胜者是最后一个人,需要改进一下
页:
[1]