编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。
时间: 2024-02-24 08:58:25 浏览: 13
好的,我可以帮你解决这个问题。以下是一个示例代码,实现了所需的功能:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Candidate {
string name;
int votes = 0;
};
int main() {
Candidate candidates[3] = { {"zhang"}, {"li"}, {"wang"} };
int invalid_votes = 0;
for (int i = 0; i < 10; i++) {
cout << "请输入你的投票:";
string vote;
cin >> vote;
bool vote_valid = false;
for (int j = 0; j < 3; j++) {
if (vote == candidates[j].name) {
candidates[j].votes++;
vote_valid = true;
break;
}
}
if (!vote_valid) {
invalid_votes++;
}
}
ofstream outfile("result.txt");
for (int i = 0; i < 3; i++) {
cout << candidates[i].name << " 得票数:" << candidates[i].votes << endl;
outfile << candidates[i].name << " 得票数:" << candidates[i].votes << endl;
}
cout << "废票数:" << invalid_votes << endl;
outfile << "废票数:" << invalid_votes << endl;
outfile.close();
return 0;
}
```
代码中使用了结构体数组 `candidates` 存储了3个候选人的姓名和得票数,然后通过循环实现了10个选民的投票过程。如果选民输入的候选人姓名匹配成功,则为该候选人增加一票;否则,废票数加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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![jpg](https://img-home.csdnimg.cn/images/20210720090814.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)