现有选票如下,3,1,2,1,1,3,3,2,1,2,3,3,2,1,1,3,2,0,1,4,-1,-1是结束标志,设1选李,2选张,3选王,0和4为废票,谁会当选
时间: 2023-10-03 22:04:19 浏览: 37
根据给出的选票统计,可以编写一个简单的程序来计算每个候选人的得票数,并输出当选的候选人编号。下面是一个可能的实现:
```c
#include <stdio.h>
int main() {
int votes[4] = {0}; // 初始化每个候选人的得票数为 0
int candidate_id;
while (1) {
printf("请输入候选人编号(1代表李,2代表张,3代表王,0和4为废票,-1为结束标志):");
scanf("%d", &candidate_id);
if (candidate_id == -1) // 如果输入为 -1,结束统计
break;
if (candidate_id < 0 || candidate_id > 3) { // 如果输入不合法,提示错误
printf("无效的候选人编号!\n");
continue;
}
votes[candidate_id]++; // 给对应的候选人得票数加 1
}
// 输出每个候选人的得票数
printf("李得票数:%d\n", votes[1]);
printf("张得票数:%d\n", votes[2]);
printf("王得票数:%d\n", votes[3]);
// 计算当选的候选人编号
int max_votes = 0;
int elected_candidate_id = 0;
for (int i = 1; i <= 3; i++) {
if (votes[i] > max_votes) {
max_votes = votes[i];
elected_candidate_id = i;
}
}
// 输出当选的候选人编号
if (elected_candidate_id == 0) {
printf("没有当选的候选人!\n");
} else {
printf("当选的候选人是 %d 号候选人\n", elected_candidate_id);
}
return 0;
}
```
这个程序首先定义了一个长度为 4 的整型数组 `votes`,用于记录每个候选人的得票数(其中 `votes[0]` 表示废票数)。然后通过一个 `while` 循环,读取每个选民的投票,并将对应的候选人得票数加 1。最后输出每个候选人的得票数,并计算当选的候选人编号。
需要注意的是,如果得票最多的候选人不止一个,程序中并没有处理这种情况,而是默认选票最多的候选人当选。如果需要处理这种情况,可以在计算当选的候选人编号时对 `max_votes` 相等的情况进行处理。