c语言编程笔录

首页 > C语言 > c语言

c语言

c语言统计候选人的得票数

更新时间:2023-06-20

前言

在本问题中,我们需要使用C语言编写一个程序来统计候选人的得票数。该程序将读取候选人的选票,并计算每个候选人获得的得票数。以下是代码实现和解释。

1. 定义候选人结构体

typedef struct {
    char name[50];
    int votes;
} Candidate;

在这段代码中,我们使用了C语言的结构体来定义候选人。结构体包含了候选人的姓名以及得票数两个字段。

2. 读取选票并统计得票数

int main() {
    int numCandidates;
    printf("请输入候选人数量: ");
    scanf("%d", &numCandidates);

    // 创建候选人数组
    Candidate candidates[numCandidates];

    // 读取每个候选人的姓名
    for (int i = 0; i < numCandidates; ++i) {
        printf("请输入第%d个候选人的姓名: ", i+1);
        scanf("%s", candidates[i].name);
        candidates[i].votes = 0;  // 初始化得票数为0
    }

    // 读取选票,统计得票数
    int numVotes;
    printf("请输入选票数量: ");
    scanf("%d", &numVotes);

    for (int i = 0; i < numVotes; ++i) {
        int vote;
        printf("请输入第%d个选票的候选人编号(1-%d): ", i+1, numCandidates);
        scanf("%d", &vote);

        // 检查选票是否有效
        if (vote < 1 || vote > numCandidates) {
            printf("无效的候选人编号,请重新输入。\n");
            continue;
        }

        // 增加候选人得票数
        candidates[vote-1].votes++;
    }

    // 打印每个候选人的得票数
    printf("各候选人得票数如下:\n");
    for (int i = 0; i < numCandidates; ++i) {
        printf("%s:%d票\n", candidates[i].name, candidates[i].votes);
    }

    return 0;
}

这段代码中,我们首先读取用户输入的候选人数量,并根据数量创建候选人数组。然后我们使用循环读取每个候选人的姓名,并将得票数初始化为0。

接下来,我们读取选票数量,并使用循环读取每张选票的候选人编号。我们检查选票是否有效,然后根据候选人编号增加相应候选人的得票数。

最后,我们打印出每个候选人的得票数。

3. 示例运行

请输入候选人数量: 3
请输入第1个候选人的姓名: 张三
请输入第2个候选人的姓名: 李四
请输入第3个候选人的姓名: 王五
请输入选票数量: 5
请输入第1个选票的候选人编号(1-3): 2
请输入第2个选票的候选人编号(1-3): 1
请输入第3个选票的候选人编号(1-3): 2
请输入第4个选票的候选人编号(1-3): 3
请输入第5个选票的候选人编号(1-3): 1
各候选人得票数如下:
张三:2票
李四:2票
王五:1票

4. 解释代码的用途和规范

上述代码使用C语言实现了统计候选人得票数的功能。以下是代码的用途和规范的解释:

1. 我们使用结构体Candidate来表示候选人对象,其中包含了候选人的姓名和得票数。这样可以更好地组织和管理候选人数据。

2. 用户通过输入候选人数量和每个候选人的姓名来初始化候选人数组。这样可以根据实际情况动态创建数组,避免了固定大小的限制。

3. 我们使用循环读取每个选票的候选人编号,并根据编号增加相应候选人的得票数。这样可以高效地处理大量选票数据。

4. 我们在读取选票编号时,进行了有效性检查。如果候选人编号无效,我们会给出提示并要求重新输入。这样可以确保数据的准确性。

5. 最后,我们打印出每个候选人的得票数,使得统计结果清晰可见。

以上是实现统计候选人得票数的C语言代码,并对代码的用途和规范进行了解释。通过这段代码,我们可以方便地统计候选人的得票数,并输出结果。