编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。c语言
时间: 2024-02-18 09:06:00 浏览: 25
以下是一个简单的 C 语言程序,实现了统计候选人得票数、废票数并将结果写入文本文件的功能:
```c
#include <stdio.h>
#include <string.h>
#define CANDIDATE_NUM 3
#define VOTER_NUM 10
// 候选人结构体
typedef struct {
char name[20]; // 姓名
int votes; // 得票数
} Candidate;
int main() {
// 初始化候选人数组
Candidate candidates[CANDIDATE_NUM] = {
{"zhang", 0},
{"li", 0},
{"wang", 0}
};
int invalid_votes = 0; // 废票数
// 让选民进行投票
for (int i = 0; i < VOTER_NUM; i++) {
char name[20];
printf("请输入第%d位选民的投票:", i + 1);
scanf("%s", name);
// 查找候选人
int found = 0;
for (int j = 0; j < CANDIDATE_NUM; j++) {
if (strcasecmp(name, candidates[j].name) == 0) {
candidates[j].votes++; // 候选人得票数加1
found = 1;
break;
}
}
if (!found) {
invalid_votes++; // 废票数加1
}
}
// 输出统计结果
printf("候选人得票数统计结果如下:\n");
for (int i = 0; i < CANDIDATE_NUM; i++) {
printf("%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
printf("废票数: %d 票\n", invalid_votes);
// 将统计结果写入文件
FILE *fp;
fp = fopen("result.txt", "w");
fprintf(fp, "候选人得票数统计结果如下:\n");
for (int i = 0; i < CANDIDATE_NUM; i++) {
fprintf(fp, "%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
fprintf(fp, "废票数: %d 票\n", invalid_votes);
fclose(fp);
return 0;
}
```
程序中使用了一个 `Candidate` 结构体,用于表示候选人的姓名和得票数。在程序开始时,通过初始化结构体数组,初始化了三个候选人的信息。
在程序运行时,通过循环遍历每一个选民的投票,使用 `strcasecmp` 函数忽略大小写地查找候选人,若找到则将其得票数加1,否则废票数加1。
最后,程序输出统计结果并将结果写入文件。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)