用结构体写出一个投票系统,要求如下:
有三个人参加投票选举,分别为张三,李四,王二,投票者共有10人,不投票视为弃票,但是投票者并不一定要投给参加选举的人,可以投给其他人,最后输出张三,李四,王二获得的票数,和弃票的票数,和不参加选举的人的票数!(用C语言中的结构体)
用结构体写出一个投票系统,要求如下:
有三个人参加投票选举,分别为张三,李四,王二,投票者共有10人,不投票视为弃票,但是投票者并不一定要投给参加选举的人,可以投给其他人,最后输出张三,李四,王二获得的票数,和弃票的票数,和不参加选举的人的票数!(用C语言中的结构体)
我之前提供了解答 https://ask.csdn.net/questions/7428442,你也不屑于点一下采纳。
下面加了结构体。希望你能点一下采纳。
#include <stdio.h>
#include <string.h>
typedef struct candidate
{
char name[256];
int vote;
int flag;
} candidate;
int main()
{
printf("投票系统。\n请输入你投票得候选人名字。\n你可以头指定候选人:张三, 李四, 王五。\n你也可以投别的名字。\n弃权请直接按回车键。\n");
candidate c[10];
int n = 3;
int a = 0;
int i, j;
char buffer[256];
strcpy(c[0].name, "张三");
c[0].vote = 0;
c[0].flag = 1;
strcpy(c[1].name, "李四");
c[1].vote = 0;
c[1].flag = 1;
strcpy(c[2].name, "王五");
c[2].vote = 0;
c[2].flag = 1;
for (i = 0; i < 10; ++i)
{
printf("第%d名投票人投票。请输入你投票给的候选人名字:", i + 1);
fgets(buffer, 256, stdin);
buffer[strlen(buffer) - 1] = '\0'; // remove linebreak
if (buffer[0] == 0)
{
++a;
}
else
{
j = 0;
while (j < n && strcmp(c[j].name, buffer) != 0)
++j;
if (j < n)
{
++c[j].vote;
}
else
{
strcpy(c[n].name, buffer);
c[n].vote = 1;
c[n].flag = 0;
++n;
}
}
}
printf("投票结果:\n");
for (i = 0; i < n; ++i)
{
if (c[i].flag)
printf("候选人 %s 得票数:%d\n", c[i].name, c[i].vote);
else
printf("非候选人 %s 得票数:%d\n", c[i].name, c[i].vote);
}
printf("弃权票数:%d", a);
return 0;
}
// output
投票系统。
请输入你投票得候选人名字。
你可以头指定候选人:张三, 李四, 王五。
你也可以投别的名字。
弃权请直接按回车键。
第1名投票人投票。请输入你投票给的候选人名字:张三
第2名投票人投票。请输入你投票给的候选人名字:李四
第3名投票人投票。请输入你投票给的候选人名字:王五
第4名投票人投票。请输入你投票给的候选人名字:赵六
第5名投票人投票。请输入你投票给的候选人名字:
第6名投票人投票。请输入你投票给的候选人名字:张三
第7名投票人投票。请输入你投票给的候选人名字:张三
第8名投票人投票。请输入你投票给的候选人名字:
第9名投票人投票。请输入你投票给的候选人名字:李四
第10名投票人投票。请输入你投票给的候选人名字:刘七
投票结果:
候选人 张三 得票数:3
候选人 李四 得票数:2
候选人 王五 得票数:1
非候选人 赵六 得票数:1
非候选人 刘七 得票数:1
弃权票数:2