C语言编写程序处理学校学生放学问题案例

题目描述

校园里目前有 N 名学生,这些学生属于 M 个班级。第 i 个人属于第Aᵢ个班级。突然,放学铃声响起, 你还没来得及思索, 就已经有 K 名学生已经冲出了学校。你不知道已经跑出学校的学生属于哪些班级, 但是, 你想知道,目前还没出校的学生中, 最多有多少学生是属于同一个班级的。

输入

第一行三个正整数N(1<N ≤10的5次方),M (1≤M ≤N),K(1 <K ≤N)含义如上所述。

第二行N个正整数A:(1≤ Aᵢ≤M),含义如上所述。

输出描述

一个整数,表示目前学校里最多有多少同学是属于同一个班级的。

输入案例

6 3 3

3 1 2 3 3 2

输出案例

3

源代码

#include <stdio.h>
#include <stdlib.h> // 添加 stdlib.h 头文件

int main() {
    int N, M, K;
    printf("请输入学生总数N、班级数M和已经跑出学校的学生数K:");
    scanf("%d %d %d", &N, &M, &K);

    int *classroom = (int *)calloc(M, sizeof(int)); // 分配 M 个班级的学生人数数组,并初始化为 0
    if (classroom == NULL) {
        printf("内存分配失败\n");
        return -1;
    }

    printf("请逐行输入每个学生所属的班级编号:\n");
    for (int i = 0; i < N; i++) {
        int class_num;
        scanf("%d", &class_num);
        classroom[class_num - 1]++;  // 统计每个班级的学生人数
    }

    int max_num = 0;
    for (int i = 0; i < M; i++) {
        if (classroom[i] > max_num) {
            max_num = classroom[i];  // 找出最大的人数
        }
    }

    printf("目前还没出校的学生中,最多有 %d 个学生属于同一个班级\n", max_num);

    free(classroom);  // 释放动态分配的内存空间

    return 0;
}

在这个简单的程序中,我们首先输入学生总数 N、班级数 M 和已经跑出学校的学生数 K,然后逐行输入每个学生所属的班级编号,程序会统计每个班级的学生人数并找出最多的人数。

在线运行截图

图片[1]-C语言编写程序处理学校学生放学问题案例-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享