如何设计一个程序来统计两人竞选选举中的选票分布情况?用c语言编写
时间: 2024-10-21 10:16:05 浏览: 23
C语言大作业班干选举系统
设计一个程序来统计两个人竞选选举中的选票分布,首先你需要创建一个数据结构来存储候选人的名字和对应的得票数。这里我们可以使用C语言的结构体(struct)来实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体,表示候选人及其得票数
typedef struct {
char name[50]; // 候选人姓名
int votes; // 得票数
} Candidate;
// 函数声明用于增加投票
void addVote(Candidate *candidates, int choice);
int main() {
// 初始化两个候选人的数据
Candidate candidate1 = {"候选人A", 0};
Candidate candidate2 = {"候选人B", 0};
// 创建一个数组来保存所有候选人,初始大小为2,可以动态扩展
Candidate *allCandidates = (Candidate*)malloc(sizeof(Candidate) * 2);
allCandidates[0] = candidate1;
allCandidates[1] = candidate2;
// 主循环获取用户输入并更新选票
while (true) {
int vote;
printf("请输入您的选择(1-%s, 2-%s): ", candidate1.name, candidate2.name);
scanf("%d", &vote);
// 验证输入的有效性
if (vote == 1 || vote == 2) {
addVote(allCandidates, vote - 1); // 减一是因为数组索引从0开始
} else {
printf("无效的选择,请重新输入。\n");
}
}
// 结束程序前输出选票结果
printf("\n最终的选票分布:\n");
for (int i = 0; i < 2; i++) {
printf("%s: %d 票\n", allCandidates[i].name, allCandidates[i].votes);
}
free(allCandidates); // 释放内存
return 0;
}
// 函数实现增加选票
void addVote(Candidate *candidates, int choice) {
candidates[choice].votes += 1;
}
```
这个程序会持续接收用户的投票直到结束,然后显示每个候选人的得票数。请注意,这是一个简单的示例,实际应用可能需要处理更多的边界情况以及错误检查。
阅读全文