用c语言写有三个候选人,每个选民只能投一票,写一程序,用结构体存储数据,求出得票结果。
时间: 2024-03-14 10:47:07 浏览: 83
好的,我可以为您编写这个程序。以下是示例代码:
```c
#include <stdio.h>
#define MAX_CANDIDATES 3
#define MAX_VOTERS 100
typedef struct {
char name[20];
int votes;
} candidate;
int main() {
candidate candidates[MAX_CANDIDATES] = {
{"Candidate A", 0},
{"Candidate B", 0},
{"Candidate C", 0}
};
int total_votes = 0;
int invalid_votes = 0;
int num_voters;
printf("Enter the number of voters: ");
scanf("%d", &num_voters);
for (int i = 0; i < num_voters; i++) {
printf("Voter %d, please enter your vote (1, 2, or 3): ", i+1);
int vote;
scanf("%d", &vote);
if (vote < 1 || vote > MAX_CANDIDATES) {
printf("Invalid vote.\n");
invalid_votes++;
} else {
candidates[vote-1].votes++;
total_votes++;
}
}
printf("\nResults:\n");
for (int i = 0; i < MAX_CANDIDATES; i++) {
printf("%s: %d votes (%.2f%%)\n", candidates[i].name, candidates[i].votes, (float)candidates[i].votes/total_votes*100);
}
printf("Total votes: %d\n", total_votes);
printf("Invalid votes: %d\n", invalid_votes);
return 0;
}
```
程序中使用了一个结构体 `candidate` 来存储每个候选人的名字和得票数。在主函数中,先定义了一个 `candidates` 数组来存储所有候选人的信息。然后使用一个循环,让每个选民输入自己的投票选项。如果选项无效,就计为一张无效票;否则,将对应候选人的得票数加一。
最后,程序输出所有候选人的得票数,以及总票数和无效票数。注意要将得票数转换为浮点数,以便计算得票率。
阅读全文