该程序先定义了一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。c语言思路
时间: 2024-02-18 13:06:29 浏览: 60
以下是一个基于C语言的实现思路:
```c
#include <stdio.h>
#include <string.h>
struct Candidate {
char name[10];
int votes;
};
int main() {
// 初始化候选人信息
struct Candidate candidates[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalid_votes = 0;
// 读取选民输入并统计得票数
char input[10];
while (scanf("%s", input) != EOF) {
int candidate_found = 0;
for (int i = 0; i < 3; i++) {
if (strcmp(input, candidates[i].name) == 0) {
candidates[i].votes++;
candidate_found = 1;
break;
}
}
if (!candidate_found) {
invalid_votes++;
}
}
// 输出统计结果并写入文件
FILE *outfile = fopen("result.txt", "w");
for (int i = 0; i < 3; i++) {
printf("%s: %d votes\n", candidates[i].name, candidates[i].votes);
fprintf(outfile, "%s %d\n", candidates[i].name, candidates[i].votes);
}
printf("Invalid votes: %d\n", invalid_votes);
fprintf(outfile, "Invalid votes: %d\n", invalid_votes);
fclose(outfile);
return 0;
}
```
该程序与C++版本类似,也是使用一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。不同的是,C语言使用`scanf`来读取输入,使用`strcmp`来比较字符串,使用`fprintf`来写入文件。
阅读全文