C语言,有三个候选人“Li”、“Zhang”、“Sun”,每个选民只能投一票,写一程序,用结构体数组来存储数据,求出投票结果
时间: 2023-12-26 22:07:00 浏览: 260
好的,以下是一个简单的 C 语言程序,使用结构体数组来存储候选人信息和投票结果:
```c
#include <stdio.h>
#include <string.h>
#define NUM_CANDIDATES 3
struct Candidate {
char name[20];
int votes;
};
int main() {
struct Candidate candidates[NUM_CANDIDATES];
int i, j, num_votes;
// 初始化候选人信息
strcpy(candidates[0].name, "Li");
candidates[0].votes = 0;
strcpy(candidates[1].name, "Zhang");
candidates[1].votes = 0;
strcpy(candidates[2].name, "Sun");
candidates[2].votes = 0;
// 读取投票结果
printf("请输入投票人数:");
scanf("%d", &num_votes);
for (i = 0; i < num_votes; i++) {
printf("请输入投票给的候选人姓名:");
char name[20];
scanf("%s", name);
for (j = 0; j < NUM_CANDIDATES; j++) {
if (strcmp(name, candidates[j].name) == 0) {
candidates[j].votes++;
break;
}
}
if (j == NUM_CANDIDATES) {
printf("候选人姓名错误!\n");
i--; // 重新读取一次
}
}
// 输出投票结果
printf("投票结果如下:\n");
for (i = 0; i < NUM_CANDIDATES; i++) {
printf("%s: %d 票\n", candidates[i].name, candidates[i].votes);
}
return 0;
}
```
该程序首先定义了一个结构体 `Candidate`,包含候选人的姓名和得票数。然后定义了一个结构体数组 `candidates`,用来存储所有候选人的信息和投票结果。
接着程序初始化了候选人信息,包括姓名和得票数。然后程序读取投票结果,依次输入每个投票人的候选人姓名,然后在候选人数组中查找该候选人,如果找到则将其得票数加一,如果未找到则输出错误信息并重新读取一次。
最后程序输出投票结果,依次输出每个候选人的姓名和得票数。
注意:本程序没有进行输入合法性检查,例如输入的投票人数应该大于等于 0,候选人姓名应该不超过 20 个字符等。实际应用中,需要进行更严格的输入检查和异常处理。
阅读全文