题目描述
校园里目前有 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,然后逐行输入每个学生所属的班级编号,程序会统计每个班级的学生人数并找出最多的人数。
在线运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END