用vs的c语言结构体写一个候选人得票统计的程序
时间: 2024-06-08 20:10:02 浏览: 144
好的,以下是一个简单的候选人得票统计程序,使用了结构体来存储候选人信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CANDIDATES 10
// 候选人信息结构体
typedef struct {
char name[20];
int votes;
} Candidate;
int main() {
Candidate candidates[MAX_CANDIDATES]; // 候选人数组
int num_candidates; // 候选人数量
int i, j;
// 输入候选人数量并初始化候选人信息
printf("请输入候选人数量(最多%d个):", MAX_CANDIDATES);
scanf("%d", &num_candidates);
if (num_candidates < 1 || num_candidates > MAX_CANDIDATES) {
printf("输入错误!\n");
return 1;
}
for (i = 0; i < num_candidates; i++) {
printf("请输入第%d个候选人的姓名:", i + 1);
scanf("%s", candidates[i].name);
candidates[i].votes = 0;
}
// 输入选票
printf("请输入选票(输入0表示结束):\n");
while (1) {
int vote;
printf("请输入投给第几号候选人:");
scanf("%d", &vote);
if (vote == 0) {
break;
}
if (vote < 1 || vote > num_candidates) {
printf("输入错误!\n");
continue;
}
candidates[vote - 1].votes++;
}
// 输出结果
printf("候选人得票统计结果:\n");
for (i = 0; i < num_candidates; i++) {
printf("%s:%d票\n", candidates[i].name, candidates[i].votes);
}
return 0;
}
```
在这个程序中,我们首先定义了一个候选人信息结构体,包含了候选人的姓名和得票数。然后在 `main` 函数中,我们通过输入候选人数量并初始化候选人信息,再输入选票并统计得票数,最后输出结果。
需要注意的地方包括:
- 我们使用 `#define` 定义了一个常量 `MAX_CANDIDATES`,表示最多允许的候选人数量;
- 在输入候选人姓名时,使用了 `%s` 格式化字符串,它可以读入一个字符串,但要注意避免缓冲区溢出;
- 在输入选票时,使用了一个无限循环,并在输入 0 时跳出循环;
- 每次输入选票前,都要进行合法性检查,避免输入了不存在的候选人编号;
- 输出结果时,使用了 `%s` 和 `%d` 格式化字符串,分别表示字符串和整数输出。
阅读全文