用C编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。
时间: 2024-02-24 19:58:43 浏览: 60
面向对象程序设计
好的,以下是基于C语言的程序代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_CANDIDATES 3
struct Candidate {
char name[10]; // 候选人姓名
int votes; // 候选人得票数
};
int main() {
struct Candidate candidates[NUM_CANDIDATES] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalidVotes = 0;
for (int i = 1; i <= 10; i++) {
printf("请第 %d 个选民输入候选人的姓名:", i);
char candidateName[10];
scanf("%s", candidateName);
int validCandidate = 0;
for (int j = 0; j < NUM_CANDIDATES; j++) {
if (strcasecmp(candidateName, candidates[j].name) == 0) {
candidates[j].votes++;
validCandidate = 1;
break;
}
}
if (!validCandidate) {
invalidVotes++;
printf("输入的候选人姓名无效,按废票处理!\n");
}
}
printf("\n得票结果如下:\n");
for (int i = 0; i < NUM_CANDIDATES; i++) {
printf("%s:%d 票\n", candidates[i].name, candidates[i].votes);
}
printf("废票:%d 票\n", invalidVotes);
// 将统计结果写入文件
FILE *outfile = fopen("result.txt", "w");
for (int i = 0; i < NUM_CANDIDATES; i++) {
fprintf(outfile, "%s:%d 票\n", candidates[i].name, candidates[i].votes);
}
fprintf(outfile, "废票:%d 票\n", invalidVotes);
fclose(outfile);
return 0;
}
```
运行程序后,会提示用户输入10个选民的投票结果,最后输出各候选人的得票结果和废票数,并将统计结果写入文件 `result.txt` 中。
注意:为了不区分候选人姓名的大小写,这里使用了 `strcasecmp` 函数。如果使用标准的 `strcmp` 函数,会区分大小写。
阅读全文