C语言 某班评选优秀学生,有五位候选人 Zhang、Wang、zhao、Li和 Qian,25 人参与投 夏。编写计票程序,输出每位候选人的得票数和票数最高的候选人的姓名,要求使用结构体 类型表示每位候选人的信息。
时间: 2024-09-22 18:08:24 浏览: 81
在C语言中,你可以通过定义一个结构体类型来表示每个候选人,包括他们的姓名和得票数。首先,定义一个结构体`Candidate`:
```c
#include <stdio.h>
#include <string.h>
// 结构体定义
typedef struct {
char name[20]; // 候选人姓名
int votes; // 得票数
} Candidate;
void countVotes(Candidate candidates[], int numCandidates, int voters) {
for (int i = 0; i < numCandidates; i++) {
candidates[i].votes = 0;
}
// 计票过程,假设投票数组voters存储了每个学生的投票选择
int voteIndex;
for (int i = 0; i < voters; i++) {
scanf("%d", &voteIndex);
if (voteIndex >= 0 && voteIndex < numCandidates) {
candidates[voteIndex].votes++;
} else {
printf("Invalid vote from voter %d.\n", i+1);
}
}
// 找出票数最多的候选人
int maxVotes = 0;
char winner[20];
for (int i = 0; i < numCandidates; i++) {
if (candidates[i].votes > maxVotes) {
maxVotes = candidates[i].votes;
strcpy(winner, candidates[i].name);
}
}
printf("Results:\n");
for (int i = 0; i < numCandidates; i++) {
printf("%s: %d votes\n", candidates[i].name, candidates[i].votes);
}
printf("The candidate with the most votes is: %s (%d)\n", winner, maxVotes);
}
int main() {
const int numCandidates = 5;
Candidate candidates[numCandidates] = {"Zhang", 0, "Wang", 0, "Zhao", 0, "Li", 0, "Qian", 0};
int numVoters;
printf("Enter number of voters: ");
scanf("%d", &numVoters);
countVotes(candidates, numCandidates, numVoters);
return 0;
}
```
这个程序首先初始化候选人结构体,然后读取每个学生的投票选择并更新相应候选人的票数。最后找出票数最多的候选人,并打印所有候选人的得票情况以及票数最高的候选人。
阅读全文