编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中
时间: 2024-02-24 21:58:41 浏览: 45
好的,我可以为您提供这个编程问题的解答。
以下是基于C++语言的程序代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Candidate {
string name; // 候选人姓名
int votes; // 候选人得票数
};
int main() {
const int NUM_CANDIDATES = 3;
Candidate candidates[NUM_CANDIDATES] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalidVotes = 0;
for (int i = 1; i <= 10; i++) {
cout << "请第 " << i << " 个选民输入候选人的姓名:";
string candidateName;
cin >> candidateName;
bool validCandidate = false;
for (int j = 0; j < NUM_CANDIDATES; j++) {
if (candidateName == candidates[j].name) {
candidates[j].votes++;
validCandidate = true;
break;
}
}
if (!validCandidate) {
invalidVotes++;
cout << "输入的候选人姓名无效,按废票处理!" << endl;
}
}
cout << endl << "得票结果如下:" << endl;
for (int i = 0; i < NUM_CANDIDATES; i++) {
cout << candidates[i].name << ":" << candidates[i].votes << " 票" << endl;
}
cout << "废票:" << invalidVotes << " 票" << endl;
// 将统计结果写入文件
ofstream outfile("result.txt");
for (int i = 0; i < NUM_CANDIDATES; i++) {
outfile << candidates[i].name << ":" << candidates[i].votes << " 票" << endl;
}
outfile << "废票:" << invalidVotes << " 票" << endl;
outfile.close();
return 0;
}
```
运行程序后,会提示用户输入10个选民的投票结果,最后输出各候选人的得票结果和废票数,并将统计结果写入文件 `result.txt` 中。
注意:为了简化程序,这里假设所有的选民输入的候选人姓名都是合法的。实际中应该添加输入验证功能,防止非法输入。
阅读全文