C语言实现投票统计与结果输出:详解及代码示例313


本文将详细讲解如何使用C语言实现一个简单的投票统计系统,并输出最终的投票结果。我们将涵盖程序的设计思路、核心代码实现,以及对代码的优化和扩展。这篇文章适合C语言入门学习者和希望学习数据处理的开发者阅读。

一、程序设计思路

我们的投票统计程序需要实现以下功能:
读取候选人名单。
接受投票输入。
统计每位候选人的票数。
输出投票结果,包括每位候选人的得票数和得票率。
处理无效票。

为了实现这些功能,我们可以采用以下数据结构和算法:
数组:使用数组存储候选人名单和他们的票数。
循环:使用循环来接受投票输入和统计票数。
函数:将程序分解成多个函数,提高代码的可读性和可维护性。

二、代码实现

下面是一个完整的C语言代码示例,实现了上述功能:```c
#include
#include
#define MAX_CANDIDATES 10 // 最大候选人数
#define MAX_NAME_LENGTH 50 // 最大候选人姓名长度
// 定义候选人结构体
typedef struct {
char name[MAX_NAME_LENGTH];
int votes;
} Candidate;
// 函数声明
void getCandidates(Candidate candidates[], int *numCandidates);
void getVotes(Candidate candidates[], int numCandidates, int *invalidVotes);
void printResults(Candidate candidates[], int numCandidates, int invalidVotes);
int main() {
Candidate candidates[MAX_CANDIDATES];
int numCandidates, invalidVotes = 0;
// 获取候选人信息
getCandidates(candidates, &numCandidates);
// 获取投票信息
getVotes(candidates, numCandidates, &invalidVotes);
// 输出投票结果
printResults(candidates, numCandidates, invalidVotes);
return 0;
}
// 获取候选人信息
void getCandidates(Candidate candidates[], int *numCandidates) {
printf("请输入候选人数(最多%d人): ", MAX_CANDIDATES);
scanf("%d", numCandidates);
if (*numCandidates MAX_CANDIDATES) {
printf("候选人数输入错误!");
exit(1);
}
for (int i = 0; i < *numCandidates; i++) {
printf("请输入第%d位候选人姓名: ", i + 1);
scanf("%s", candidates[i].name);
candidates[i].votes = 0;
}
}
// 获取投票信息
void getVotes(Candidate candidates[], int numCandidates, int *invalidVotes) {
int vote;
printf("请输入投票信息(输入0-99结束投票,输入负数表示无效票):");
while (1) {
printf("请输入候选人编号(1-%d): ", numCandidates);
scanf("%d", &vote);
if (vote == 0) break; // 结束投票
if (vote < 0) {
(*invalidVotes)++;
continue;
}
if (vote > 0 && vote

2025-05-04


上一篇:C语言函数详解:从入门到进阶

下一篇:C语言实现炫酷终端动画:原理详解与代码示例