2022届计算机学院学生会主席投票选举系统 C语言实现

背景: 2022届计算机学院学生会主席投票选举工作即将开始,为了高效便捷地完成投票统计工作,需要开发一个程序来模拟选举过程,并最终输出当选主席的姓名。

程序功能: 该程序使用 C 语言实现,可以接收学生姓名作为投票输入,并统计得票数,最终输出得票最高的候选人姓名。

输入: 本题为单实例测试。输入包含多行,每行是一个由小写英文字母组成的字符串,表示一个姓名,遇到 '*' 时表示输入结束。你可以假定,参加投票学生的人数不超过 200 人,每个学生姓名字符串的长度小于 20。

输出: 输出为一个字符串——当选为学生会主席的学生姓名。

C语言代码:

#include <stdio.h>
#include <string.h>

#define MAX_N 200
#define MAX_LEN 20

int main()
{
    char names[MAX_N][MAX_LEN+1]; //存储所有参选者的姓名
    int votes[MAX_N]; //存储每个参选者的得票数
    int n = 0; //参选者人数
    char name[MAX_LEN+1]; //临时存储输入的姓名

    //读入参选者姓名
    while (scanf('%s', name) == 1) {
        if (strcmp(name, '*') == 0) {
            break; //输入结束
        }
        strcpy(names[n], name);
        votes[n] = 0; //初始得票数为0
        n++;
    }

    //进行投票
    while (scanf('%s', name) == 1) {
        if (strcmp(name, '*') == 0) {
            break; //投票结束
        }
        //查找该姓名对应的参选者编号
        int i;
        for (i = 0; i < n; i++) {
            if (strcmp(names[i], name) == 0) {
                votes[i]++;
                break;
            }
        }
        if (i == n) {
            //输入了一个不在参选者名单中的姓名,忽略
        }
    }

    //找出得票最高者
    int max_votes = 0;
    int max_index = 0;
    int i;
    for (i = 0; i < n; i++) {
        if (votes[i] > max_votes) {
            max_votes = votes[i];
            max_index = i;
        }
    }

    //输出当选者的姓名
    printf('%s\n', names[max_index]);

    return 0;
}

代码解析:

  1. 程序首先定义了两个数组:names 用于存储所有参选者的姓名,votes 用于存储每个参选者的得票数。
  2. 程序通过循环读取输入的姓名,并将每个姓名存储到 names 数组中,并初始化对应的 votes 为 0。
  3. 当遇到 '*' 时,表示输入结束,程序进入投票阶段。
  4. 在投票阶段,程序再次循环读取输入的姓名,并查找该姓名对应的参选者编号。如果找到,则将该参选者的得票数加 1。
  5. 循环结束后,程序遍历 votes 数组,找到得票最高的候选者,并输出该候选者的姓名。

程序使用方法:

  1. 将以上代码保存为一个名为 election.c 的文件。
  2. 使用 C 语言编译器编译该文件,生成可执行文件。
  3. 运行可执行文件,并按照提示输入参选者姓名和投票信息。
  4. 程序将输出得票最高的候选人姓名。

示例输入:

张三
李四
王五
*
张三
王五
李四
张三
*

示例输出:

张三

总结: 该程序模拟了学生会主席投票选举的过程,并使用 C 语言实现了统计得票数的功能,最终输出得票最高的候选人姓名。程序简洁易懂,易于实现,可以帮助学生会主席选举工作更加高效便捷。


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

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