2. 编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。
时间: 2024-02-24 13:57:31 浏览: 122
候选人得票统计,用c语言编写的代码
下面是一个简单的 C 语言程序,实现了统计候选人得票数的功能,同时将结果保存到文本文件中。
```c
#include <stdio.h>
#include <string.h>
#define MAX_CANDIDATES 3
#define MAX_VOTERS 10
struct candidate {
char name[20];
int votes;
};
int main() {
struct candidate candidates[MAX_CANDIDATES] = {
{"zhang", 0},
{"li", 0},
{"wang", 0}
};
int invalid_votes = 0;
for (int i = 0; i < MAX_VOTERS; i++) {
char input[20];
printf("Voter %d, please enter your vote: ", i+1);
scanf("%s", input);
// convert name to lowercase
for (int j = 0; j < strlen(input); j++) {
input[j] = tolower(input[j]);
}
// check if name is valid
int valid = 0;
for (int j = 0; j < MAX_CANDIDATES; j++) {
if (strcmp(input, candidates[j].name) == 0) {
candidates[j].votes++;
valid = 1;
break;
}
}
if (!valid) {
invalid_votes++;
}
}
// output results to console and file
printf("Results:\n");
FILE *fp = fopen("results.txt", "w");
for (int i = 0; i < MAX_CANDIDATES; i++) {
printf("%s: %d votes\n", candidates[i].name, candidates[i].votes);
fprintf(fp, "%s: %d votes\n", candidates[i].name, candidates[i].votes);
}
printf("Invalid votes: %d\n", invalid_votes);
fprintf(fp, "Invalid votes: %d\n", invalid_votes);
fclose(fp);
return 0;
}
```
程序首先定义了一个结构体 `candidate`,其中包含候选人的姓名和得票数两个成员变量。然后定义了一个长度为 `MAX_CANDIDATES` 的结构体数组 `candidates`,用于存储三个候选人的信息。
程序通过一个 for 循环,模拟了 10 个选民的投票过程。每个选民输入一个候选人的名字,程序首先将名字转换为小写字母,然后遍历候选人数组,查找是否有与输入名字匹配的候选人。如果匹配成功,则将对应候选人的得票数加一;否则,废票数加一。
投票结束后,程序将结果输出到控制台和文件中。输出的格式为“候选人姓名: 得票数”,并在最后输出废票数。
程序的输出效果如下:
```
Voter 1, please enter your vote: zhang
Voter 2, please enter your vote: Zhang
Voter 3, please enter your vote: Li
Voter 4, please enter your vote: wang
Voter 5, please enter your vote: WANG
Voter 6, please enter your vote: ZHANG
Voter 7, please enter your vote: Zhang
Voter 8, please enter your vote: Li
Voter 9, please enter your vote: Li
Voter 10, please enter your vote: John
Results:
zhang: 3 votes
li: 3 votes
wang: 1 votes
Invalid votes: 3
```
同时,程序将结果写入了名为 `results.txt` 的文本文件中。文件内容如下:
```
zhang: 3 votes
li: 3 votes
wang: 1 votes
Invalid votes: 3
```
阅读全文