寝室长选举统计选票的程序案例

题目描述

某个寝室选举寝室长,有3位候选人,有6名同学参与投票,而且只能投一个人,要求采用结构体编写统计选票的程序。先输入候选人名字,再输入同学所投的候选人名字,最后根据每位候选人的得票数排序输出显示

实现代码

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

// 定义候选人结构体
typedef struct {
    char name[20];  // 候选人名字
    int votes;      // 候选人票数
} Candidate;

int main()
{
    Candidate candidates[3] = {  // 初始化3个候选人
        { "张三", 0 },
        { "李四", 0 },
        { "王五", 0 }
    };

    int numVoters;  // 投票人数
    printf("请输入投票人数:");
    scanf("%d", &numVoters);

    // 处理每个投票人
    for (int i = 0; i < numVoters; i++)
    {
        char voteName[20];  // 存储投票人所投的候选人名字
        printf("请输入第%d位投票人所投的候选人名字:", i + 1);
        scanf("%s", voteName);

        // 遍历候选人数组,找到被投票者并增加其票数
        for (int j = 0; j < 3; j++)
        {
            if (strcmp(candidates[j].name, voteName) == 0)
            {
                candidates[j].votes++;
                break;
            }
        }
    }

    // 排序
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2 - i; j++) {
            if (candidates[j].votes < candidates[j + 1].votes) {
                Candidate temp = candidates[j];
                candidates[j] = candidates[j + 1];
                candidates[j + 1] = temp;
            }
        }
    }

    // 输出得票情况
    printf("得票情况:\n");
    for (int i = 0; i < 3; i++)
    {
        printf("%s:%d票\n", candidates[i].name, candidates[i].votes);
    }

    return 0;
}

实现说明:

  1. 定义候选人结构体,包含名字和票数两个成员变量。
  2. 初始化3个候选人,每个人的票数都为0。
  3. 使用 scanf 输入投票人数,然后依次处理每个投票人的投票。
  4. 对于每位投票人,使用 scanf 输入所投的候选人名字,然后遍历候选人数组,找到被投票者并增加其票数。
  5. 使用冒泡排序对候选人数组按照票数从高到低进行排序。
  6. 遍历排好序的候选人数组,输出每个候选人的名字和票数。
© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享