用C语言编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。
时间: 2024-02-25 21:55:00 浏览: 53
2022年3月电子学会少儿编程青少年软件编程C语言三级
5星 · 资源好评率100%
好的,这是一个简单的C语言编程问题,我可以帮你解决。以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 20
#define NUM_CANDIDATES 3
#define NUM_VOTERS 10
typedef struct {
char name[MAX_NAME_LENGTH];
int votes;
} candidate_t;
candidate_t candidates[NUM_CANDIDATES] = {
{"zhang", 0},
{"li", 0},
{"wang", 0}
};
int main() {
int i, j;
int invalid_votes = 0;
char voter_choice[MAX_NAME_LENGTH];
// 让每个选民投票
for (i = 0; i < NUM_VOTERS; i++) {
printf("请输入第%d位选民的投票:", i+1);
scanf("%s", voter_choice);
// 检查选民的投票是否有效
int valid_vote = 0;
for (j = 0; j < NUM_CANDIDATES; j++) {
if (strcasecmp(voter_choice, candidates[j].name) == 0) {
candidates[j].votes++;
valid_vote = 1;
break;
}
}
if (!valid_vote) {
invalid_votes++;
}
}
// 输出投票结果
printf("\n各候选人的得票结果如下:\n");
for (i = 0; i < NUM_CANDIDATES; i++) {
printf("%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
printf("废票数: %d\n", invalid_votes);
// 写入文本文件
FILE *fp = fopen("voting_results.txt", "w");
fprintf(fp, "各候选人的得票结果如下:\n");
for (i = 0; i < NUM_CANDIDATES; i++) {
fprintf(fp, "%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
fprintf(fp, "废票数: %d\n", invalid_votes);
fclose(fp);
return 0;
}
```
这个程序使用了一个结构体数组来存储3个候选人的姓名和得票结果。在主函数中,程序让每个选民输入他们的投票,然后检查投票是否有效,对于有效的投票,程序将相应的候选人的得票数加1,对于无效的投票,程序将废票数加1。最后,程序输出各候选人的得票结果和废票数,并将结果写入文本文件中。
希望这个程序能够帮助你解决问题。
阅读全文