C语言某班评选优秀学生,有五位候选人 Zhang、Wang、zhao、Li和 Qian,25 人参与投票。编写计票程序,输出每位候选人的得票数和票数最高的候选人的姓名,要求使用结构体类型表示每位候选人的信息。
时间: 2024-09-21 07:11:33 浏览: 69
在C语言中,我们可以创建一个结构体类型`Candidate`来存储每位候选人的姓名及其初始得票数。首先,我们需要定义这个结构体,并定义一个数组来存储所有候选人的信息。然后,我们编写一个计票函数,遍历投票数组并更新每个候选人的得票数。最后,找出得票最多的候选人。
```c
#include <stdio.h>
#include <string.h>
// 定义结构体Candidate
typedef struct {
char name[30];
int votes;
} Candidate;
// 计票函数
void count_votes(Candidate candidates[], int voters, int num_candidates) {
for (int i = 0; i < voters; i++) {
scanf("%s", candidates[i % num_candidates].name); // 避免超过num_candidates的范围
candidates[i % num_candidates].votes++; // 更新投票数
}
}
// 打印结果
void print_results(Candidate candidates[], int num_candidates) {
printf("投票结果如下:\n");
for (int i = 0; i < num_candidates; i++) {
printf("%s 得票数:%d\n", candidates[i].name, candidates[i].votes);
}
int max_votes = candidates[0].votes;
char winner_name[30];
for (int i = 1; i < num_candidates; i++) {
if (candidates[i].votes > max_votes) {
max_votes = candidates[i].votes;
strcpy(winner_name, candidates[i].name);
}
}
printf("\n票数最多的候选人是:%s, 得票数:%d\n", winner_name, max_votes);
}
int main() {
const int num_candidates = 5;
Candidate candidates[num_candidates];
// 初始化候选人名字
for (int i = 0; i < num_candidates; i++) {
candidates[i].name = "张王赵李钱"[i];
candidates[i].votes = 0;
}
// 输入25次投票
int voters = 25;
count_votes(candidates, voters, num_candidates);
print_results(candidates, num_candidates);
return 0;
}
```
阅读全文