用c语言设计一个灵活的投票系统,能够完成至少 2 个候选人的投票统计工作:(1) 输入候选人个数和选举人个数;(2) 输入候选人姓名;(3) 投票:每个投票人输 入一次候选人的姓名;(4) 统计各个候选人的的票情况。
时间: 2024-03-07 07:47:06 浏览: 22
好的,下面是一个示例代码,可以实现上述功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CANDIDATES 10
#define MAX_VOTERS 100
// 候选人结构体
typedef struct candidate {
char name[20]; // 候选人姓名
int votes; // 候选人得票数
} Candidate;
// 投票人结构体
typedef struct voter {
char name[20]; // 投票人姓名
char choice[20]; // 投票人选择的候选人姓名
} Voter;
int main() {
int num_candidates, num_voters;
Candidate candidates[MAX_CANDIDATES];
Voter voters[MAX_VOTERS];
// 输入候选人个数和选举人个数
printf("请输入候选人个数:");
scanf("%d", &num_candidates);
printf("请输入选举人个数:");
scanf("%d", &num_voters);
// 输入候选人姓名
printf("请逐个输入候选人姓名:\n");
for (int i = 0; i < num_candidates; i++) {
printf("请输入第%d个候选人姓名:", i + 1);
scanf("%s", candidates[i].name);
candidates[i].votes = 0;
}
// 投票
printf("请逐个输入选举人姓名和选择的候选人姓名:\n");
for (int i = 0; i < num_voters; i++) {
printf("请输入第%d个选举人姓名和选择的候选人姓名:", i + 1);
scanf("%s %s", voters[i].name, voters[i].choice);
// 统计候选人得票数
for (int j = 0; j < num_candidates; j++) {
if (strcmp(voters[i].choice, candidates[j].name) == 0) {
candidates[j].votes++;
break;
}
}
}
// 统计票情况
printf("得票情况如下:\n");
for (int i = 0; i < num_candidates; i++) {
printf("%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
return 0;
}
```
该代码定义了两个结构体,分别是候选人和投票人,使用了循环逐个输入候选人姓名和选举人信息,并在投票过程中统计了每个候选人的得票数,在最后输出得票情况。该代码可以根据实际需求进行扩展,例如增加多种投票方式,增加候选人信息等。