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;
}

代码解释

  1. 声明变量: 代码首先声明了几个变量,包括用来存储学生姓名的二维数组 name,用来存储每个学生得票数的数组 vote,用来存储当前最高得票数的变量 max_vote,用来存储当前最高得票学生的下标的变量 max_index,以及用于循环计数的变量 i

  2. 读取输入: 代码使用循环读取每个学生的名字,并将它们存储在数组 name 中。当遇到 '*' 字符时,表示输入结束,循环结束。

  3. 统计投票: 代码使用循环遍历数组 name,统计每个学生的得票数并存储在数组 vote 中。在统计过程中,如果当前学生的得票数超过 max_vote,则更新 max_votemax_index

  4. 输出结果: 最后,代码根据 max_index 输出当选为学生会主席的学生姓名。

代码分析

这段代码使用简单的数组和循环来统计投票结果,代码结构清晰,易于理解。代码使用了 strcmp() 函数比较字符串,确保了代码的正确性。

改进建议

  1. 可以使用结构体来存储每个学生的信息,例如姓名和得票数,以便更好地组织数据。
  2. 可以使用哈希表来存储学生姓名和得票数,以便更快速地查找和更新信息。
  3. 可以使用文件读写功能,将投票结果存储到文件中,方便后期查询和分析。

结论

这段代码成功实现了 2022 届计算机学院学生会主席投票选举系统的功能,能够快速准确地统计投票结果,并输出当选主席的姓名。通过一些改进,可以进一步优化代码,使其更加高效和易于维护。


原文地址: https://www.cveoy.top/t/topic/ojJM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录