2022届计算机学院学生会主席投票选举系统 C语言实现
2022届计算机学院学生会主席投票选举系统 C语言实现
2022届计算机学院学生会主席投票选举工作定于5月6日在教学楼前隆重举行。本次投票将采用电脑统计选票的方式,当投票选举正式开始后,同学们将排队一一走到电脑前,投上自己神圣的一票:在电脑前输入一个姓名,然后输入回车表示确认。当所有同学投票结束,工作人员只需要输入'*'并回车确认,表示投票结束,电脑立即显示出得票最高的同学姓名,该同学将当选为新一届计算机与通信工程学院学生会主席。假定票数相等时先输入的姓名为主席。选举大会的准备工作正在紧张进行,编程统计投票的工作就交给你了。
本题为单实例测试。
输入
输入包含多行,每行是一个由小写英文字母组成的字符串,表示一个姓名,遇到'*'时表示输入结束。
你可以假定,参加投票学生的人数不超过200人,每个学生姓名字符串的长度小于20。
输出
输出为一个字符串,当选为学生会主席的学生姓名。
C语言代码
#include <stdio.h>
#include <string.h>
int main() {
char name[201][21]; // 存储所有参加投票的学生姓名
int vote[201] = {0}; // 存储每个学生的得票数
int max_vote = 0; // 存储当前得票最高的票数
int max_index = 0; // 存储当前得票最高的学生的下标
int i = 0; // 循环计数器
// 循环读入每个学生的姓名
for (i = 0; ; i++) {
scanf("%s", name[i]);
if (strcmp(name[i], "*") == 0) break; // 输入结束
}
// 循环统计每个学生的得票数
for (i = 0; i < 200 && strcmp(name[i], "*") != 0; i++) {
vote[i]++;
if (vote[i] > max_vote) { // 更新得票最高的学生
max_vote = vote[i];
max_index = i;
}
}
// 输出当选为学生会主席的学生姓名
printf("%s\n", name[max_index]);
return 0;
}
代码解释
-
声明变量: 代码首先声明了几个变量,包括用来存储学生姓名的二维数组
name,用来存储每个学生得票数的数组vote,用来存储当前最高得票数的变量max_vote,用来存储当前最高得票学生的下标的变量max_index,以及用于循环计数的变量i。 -
读取输入: 代码使用循环读取每个学生的名字,并将它们存储在数组
name中。当遇到 '*' 字符时,表示输入结束,循环结束。 -
统计投票: 代码使用循环遍历数组
name,统计每个学生的得票数并存储在数组vote中。在统计过程中,如果当前学生的得票数超过max_vote,则更新max_vote和max_index。 -
输出结果: 最后,代码根据
max_index输出当选为学生会主席的学生姓名。
代码分析
这段代码使用简单的数组和循环来统计投票结果,代码结构清晰,易于理解。代码使用了 strcmp() 函数比较字符串,确保了代码的正确性。
改进建议
- 可以使用结构体来存储每个学生的信息,例如姓名和得票数,以便更好地组织数据。
- 可以使用哈希表来存储学生姓名和得票数,以便更快速地查找和更新信息。
- 可以使用文件读写功能,将投票结果存储到文件中,方便后期查询和分析。
结论
这段代码成功实现了 2022 届计算机学院学生会主席投票选举系统的功能,能够快速准确地统计投票结果,并输出当选主席的姓名。通过一些改进,可以进一步优化代码,使其更加高效和易于维护。
原文地址: https://www.cveoy.top/t/topic/ojJM 著作权归作者所有。请勿转载和采集!