编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。
时间: 2023-05-31 14:18:25 浏览: 297
### 回答1:
可以使用以下代码实现:
#include <stdio.h>
#include <string.h>
#define CANDIDATE_NUM 3
#define VOTER_NUM 10
struct Candidate {
char name[10];
int votes;
};
int main() {
struct Candidate candidate[CANDIDATE_NUM] = {
{"zhang", },
{"li", },
{"wang", }
};
char vote_name[10];
int invalid_votes = ;
printf("请输入10个选民的投票结果:\n");
for (int i = ; i < VOTER_NUM; i++) {
printf("第%d个选民的投票结果:", i + 1);
scanf("%s", vote_name);
if (strcasecmp(vote_name, candidate[].name) == ) {
candidate[].votes++;
} else if (strcasecmp(vote_name, candidate[1].name) == ) {
candidate[1].votes++;
} else if (strcasecmp(vote_name, candidate[2].name) == ) {
candidate[2].votes++;
} else {
invalid_votes++;
}
}
printf("\n各候选人的得票结果如下:\n");
for (int i = ; i < CANDIDATE_NUM; i++) {
printf("%s: %d票\n", candidate[i].name, candidate[i].votes);
}
printf("废票数:%d\n", invalid_votes);
return ;
}
程序中使用结构体数组candidate表示3个候选人的姓名和得票结果。在主函数中,先初始化候选人数组,然后循环读入10个选民的投票结果。使用strcasecmp函数比较输入的候选人姓名和候选人数组中的姓名,如果相同,则将对应候选人的得票数加1;否则,废票数加1。最后输出各候选人的得票结果和废票数。
### 回答2:
下面是一份Python的代码示例,能够实现题目所述的功能:
```python
class Candidate:
def __init__(self, name):
self.name = name
self.votes = 0
candidates = [Candidate("zhang"), Candidate("li"), Candidate("wang")]
for i in range(10):
vote = input("请选民输入候选人姓名:").lower()
for candidate in candidates:
if candidate.name == vote:
candidate.votes += 1
break
else:
print("废票")
print("得票结果:")
for candidate in candidates:
print(candidate.name, ":", candidate.votes)
```
在这个代码中,我们定义了一个叫做`Candidate`的类,在初始化的时候设置了候选人的姓名和得票数属性。我们用一个列表来存储这3个候选人的信息。
然后我们用一个简单的循环来问每个选民输入候选人姓名,并检查这个名字是否匹配之前定义的候选人。如果匹配,我们就增加这个候选人的得票数。如果没有匹配,我们就报告这张票是废票。
最后我们输出所以候选人的得票结果,包括姓名和得票数。
### 回答3:
题目要求编程统计候选人的得票数,首先需要定义一个结构体数组candidate,来表示3个候选人的姓名和得票结果。
```c++
struct Candidate {
string name; //候选人姓名
int votes; //得票数
} candidate[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}}; //定义结构体数组
```
以上定义了一个包含3个元素的结构体数组candidate,每个元素包含一个字符串name表示候选人姓名,和一个整数votes表示候选人的得票数,初始值都为0。
然后,需要循环10次,每次从标准输入读入一个字符串,表示选民的投票结果。如果字符串为"zhang"、"li"、"wang"中的一个,就将对应的候选人的得票数增加1;如果不是这三个字符串,则将计入废票,不进行统计。
```c++
for(int i = 1; i <= 10; i++) {
string vote;
cin >> vote;
if(vote == "zhang" || vote == "Zhang") {
candidate[0].votes++;
}
else if(vote == "li" || vote == "Li") {
candidate[1].votes++;
}
else if(vote == "wang" || vote == "Wang") {
candidate[2].votes++;
}
else {
cout << "废票" << endl;
}
}
```
最后,输出每个候选人的得票结果和废票信息。
```c++
for(int i = 0; i < 3; i++) {
cout << candidate[i].name << "得票数:" << candidate[i].votes << endl;
}
```
完整代码如下:
```c++
#include <iostream>
using namespace std;
struct Candidate {
string name; //候选人姓名
int votes; //得票数
} candidate[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}}; //定义结构体数组
int main() {
for(int i = 1; i <= 10; i++) {
string vote;
cin >> vote;
if(vote == "zhang" || vote == "Zhang") {
candidate[0].votes++;
}
else if(vote == "li" || vote == "Li") {
candidate[1].votes++;
}
else if(vote == "wang" || vote == "Wang") {
candidate[2].votes++;
}
else {
cout << "废票" << endl;
}
}
for(int i = 0; i < 3; i++) {
cout << candidate[i].name << "得票数:" << candidate[i].votes << endl;
}
return 0;
}
```
阅读全文