编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。
例如:
Input vote 1:li
Input vote 2:li
Input vote 3:Zhang
Input vote 4:wang
Input vote 5:zhang
Input vote 6:Wang
Input vote 7:Zhang
Input vote 8:wan
Input vote 9:li
Input vote 10:lii
Election results:
li:3
zhang:3
wang:2
Wrong election:2
输入格式:
"Input vote %d:"
"%s"
输出格式:
"Election results:\n"
"%8s:%d\n"
"Wrong election:%d\n"
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define MAXN 10
#define MAXP 3
struct Candidat
{
char name[10];
int ticket;
};
char *toUpper (char *str);
int main (void)
{
struct Candidat candidate[MAXP] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int wrong = 0;
int i;
for (i = 0; i < MAXN; i ++)
{
printf ("Input vote %d:", i + 1);
char vote[10];
scanf ("%s", vote);
bool bFlag = false;
if (strcmp (toUpper (vote), "ZHANG") == 0)
{
candidate[0].ticket ++;
bFlag = true;
}
if (strcmp (toUpper (vote), "LI") == 0)
{
candidate[1].ticket ++;
bFlag = true;
}
if (strcmp (toUpper (vote), "WANG") == 0)
{
candidate[2].ticket ++;
bFlag = true;
}
if (bFlag == false)
{
wrong ++;
}
}
printf ("Election results:\n");
printf ("%8s:%d\n", candidate[1].name, candidate[1].ticket);
printf ("%8s:%d\n", candidate[0].name, candidate[0].ticket);
printf ("%8s:%d\n", candidate[2].name, candidate[2].ticket);
printf ("Wrong election:%d\n", wrong);
return 0;
}
char
*toUpper (char *str)
{
char *p = str;
while (*p != '\0')
{
if (*p >= 'a' && *p <= 'z')
{
*p -= 32;
}
p ++;
}
return str;
}
(完全一样就离谱)
这段代码定义了一个结构体数组来表示3个候选人,并通过循环读取选民输入,统计每个候选人的得票数。如果输入的姓名不匹配,则计为废票。最后,程序会打印出每个候选人的得票结果和废票数量。
29万+

被折叠的 条评论
为什么被折叠?



