本题目要求统计候选人的得票数。设有3个候选人zhang、li、wang,10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。 #include<stdio.h> #include<string.h> #define NUM_ELECTORATE 10 #define NUM_CANDIDATE 3 struct candidate { char name[20]; int count; }c[3] = {"li",0, "zhang",0, "wang",0}; int main() { int i, j, flag , wrong = 0; char name[20]; for (i=0; i<NUM_ELECTORATE; i++) { scanf("%s", name); flag = 1; for (j=0; j<NUM_CANDIDATE; j++) if ( 5 分 ) { 5 分 ; flag = 0; } if (flag) wrong++; /* 废票计数 */ } printf("Election results:\n"); for (i=0; i<NUM_CANDIDATE; i++) printf("%s:%d\n", 5 分 ); printf("Wrong election:%d\n", wrong); return 0; }
时间: 2024-01-21 14:03:08 浏览: 154
完整的代码如下:
```
#include<stdio.h>
#include<string.h>
#define NUM_ELECTORATE 10
#define NUM_CANDIDATE 3
struct candidate {
char name[20];
int count;
} c[3] = {{"li", 0}, {"zhang", 0}, {"wang", 0}};
int main() {
int i, j, flag, wrong = 0;
char name[20];
for (i = 0; i < NUM_ELECTORATE; i++) {
scanf("%s", name);
flag = 1;
for (j = 0; j < NUM_CANDIDATE; j++)
if (strcmp(name, c[j].name) == 0) {
c[j].count++;
flag = 0;
}
if (flag)
wrong++; /* 废票计数 */
}
printf("Election results:\n");
for (i = 0; i < NUM_CANDIDATE; i++)
printf("%s:%d\n", c[i].name, c[i].count);
printf("Wrong election:%d\n", wrong);
return 0;
}
```
解析:
首先定义了一个结构体 `candidate`,包含候选人的姓名和得票数。然后定义了一个结构体数组 `c`,用来存储三个候选人的姓名和得票结果。
接下来,通过循环输入选民的投票结果。输入选民输入的候选人姓名 `name`,将 `flag` 设为 1,表示该票作废。然后遍历候选人数组 `c`,如果输入的候选人姓名和某个候选人的姓名一致,将该候选人的得票数加 1,并将 `flag` 设为 0,表示该票有效。最后,如果 `flag` 为 1,说明该票作废,将废票计数 `wrong` 加 1。
最后,输出候选人的得票结果和废票信息。遍历候选人数组 `c`,输出每个候选人的姓名和得票数。最后输出废票计数 `wrong` 即可。
阅读全文