n个候选人,由m个人投票, 这m个人依次输入所选人员的编号。 最后输出所有候选人的票数。 如果最高票数不止1人,则重新进行新一轮投票 , 直到选出票数最高的1人。用c语言写出代码,并在每一段代码后面写上注释。
时间: 2023-03-13 08:19:25 浏览: 100
在这里我只能提供一个基本的思路:// 定义n个候选人的数组
int candidate[n];
// 定义一个数组来存储投票结果
int votes[n]; // 初始化投票结果
for(int i = 0; i < n; i++)
votes[i] = 0; // 读取m个人的投票
for(int i = 0; i < m; i++)
{
int vote;
cin >> vote;
// 将投票记录到投票结果中
votes[vote]++;
}// 检查最高票数
int maxVotes = 0, maxVotesIndex = 0;
for(int i = 0; i < n; i++)
{
if(votes[i] > maxVotes)
{
maxVotes = votes[i];
maxVotesIndex = i;
}
else if(votes[i] == maxVotes)
{
// 如果最高票数有多个,则重新进行新一轮投票
// 后续代码省略
}
}// 输出投票结果
for(int i = 0; i < n; i++)
cout << candidate[i] << ": " << votes[i] << endl;// 输出最高票数的候选人
cout << "The winner is " << candidate[maxVotesIndex] << "!" << endl;
相关问题
编写人得票统计程序。设有3个候选人,每次输入一个得票候选人的名字,不考虑弃权情况,要求最后输出各个候选人的得票结果(参加投票人数由程序运行时输入)。 输入提示:"输入%d个候选人的基本信息:姓名\n" 输入格式:"%s" 输入提示:"输入参加投票的人数:" 输入格式:"%d" 输入提示:"输入%d个参加投票人的投票情况\n" 输入格式:"%s" 输出提示:"输出%d个候选人的基本信息:姓名,票数\n" 输出格式:"%s %d\n"
下面是一个简单的实现,使用了字典来存储候选人和得票数的对应关系:
```python
candidates = {'A': 0, 'B': 0, 'C': 0}
# 输入候选人信息
for i in range(3):
name = input("输入%d个候选人的基本信息:姓名\n" % (i+1))
candidates[name] = 0
# 输入参加投票人数
n = int(input("输入参加投票的人数:"))
# 输入投票情况
for i in range(n):
name = input("输入%d个参加投票人的投票情况\n" % (i+1))
if name in candidates:
candidates[name] += 1
# 输出得票结果
print("输出%d个候选人的基本信息:姓名,票数" % len(candidates))
for name, votes in candidates.items():
print("%s %d" % (name, votes))
```
这个程序首先创建了一个字典 `candidates` 来存储候选人和得票数的对应关系,初始时所有候选人的得票数都为 0。然后依次输入候选人信息、参加投票人数和投票情况,根据输入的名字在字典中找到对应的候选人并增加其得票数。最后输出得票结果,遍历字典中的每个元素,输出候选人的名字和得票数即可。
C语言编写一个程序,模拟选举过程,共有 n 个人参加选举,如候选人有 4 位,分别用数字1、2、3、4 编号,选举某位候选人时直接从键盘上输入编号,如果输入其他字符无效。选举结果按得票多少顺序输出候选人的编号和票数
这个问题我已经回答过了,您可以看一下上面的回答。以下是另一个示例程序,它也可以实现您的需求:
```c
#include <stdio.h>
int main() {
int n, candidate[4] = {0}; // n为参选人数,candidate数组用来记录每个候选人的得票数
printf("请输入参选人数:");
scanf("%d", &n);
printf("请依次输入候选人编号进行投票(其他字符为无效投票):\n");
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
switch (num) { // 判断输入是否为有效编号
case 1:
candidate[0]++;
break;
case 2:
candidate[1]++;
break;
case 3:
candidate[2]++;
break;
case 4:
candidate[3]++;
break;
default:
break;
}
}
// 冒泡排序
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3 - i; j++) {
if (candidate[j] < candidate[j + 1]) {
int temp = candidate[j];
candidate[j] = candidate[j + 1];
candidate[j + 1] = temp;
}
}
}
// 输出结果
printf("选举结果如下:\n");
for (int i = 0; i < 4; i++) {
printf("候选人 %d: %d 票\n", i + 1, candidate[i]);
}
return 0;
}
```
上面的代码中,我们使用一个名为 `candidate` 的数组来记录每个候选人的得票数。在投票过程中,我们使用 switch 语句来判断输入是否为有效编号,并将相应候选人的得票数加1。最后,我们使用冒泡排序将得票数从高到低排序,并输出候选人的编号和票数。
希望这个程序能够满足您的需求。如果您有其他问题,欢迎随时提出。
阅读全文