编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。思路
时间: 2024-02-18 13:06:29 浏览: 23
可以使用一个结构体数组来表示3个候选人的姓名和得票结果,其中每个结构体包含一个字符串变量来存储候选人的姓名和一个整型变量来存储该候选人的得票数。程序需要一个循环来读取每个选民输入的候选人姓名,并根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序需要输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。
以下是一个简单的实现代码(C++):
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Candidate {
string name;
int votes;
};
int main() {
// 初始化候选人信息
Candidate candidates[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalid_votes = 0;
// 读取选民输入并统计得票数
string input;
while (cin >> input) {
bool candidate_found = false;
for (int i = 0; i < 3; i++) {
if (input == candidates[i].name) {
candidates[i].votes++;
candidate_found = true;
break;
}
}
if (!candidate_found) {
invalid_votes++;
}
}
// 输出统计结果并写入文件
ofstream outfile("result.txt");
for (int i = 0; i < 3; i++) {
cout << candidates[i].name << ": " << candidates[i].votes << " votes" << endl;
outfile << candidates[i].name << " " << candidates[i].votes << endl;
}
cout << "Invalid votes: " << invalid_votes << endl;
outfile << "Invalid votes: " << invalid_votes << endl;
outfile.close();
return 0;
}
```
该程序先定义了一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。