C语言实现找众数(出现次数最多的数)(数字范围是[0, 100]) 如: 输入:5 1 2 1 2 1 输出:1
时间: 2023-11-22 11:51:49 浏览: 85
以下是一种简单的实现方式:
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM_RANGE 101 // 数字范围是[0, 100]
int main() {
int n;
scanf("%d", &n);
int *nums = (int *) malloc(n * sizeof(int));
int *counts = (int *) calloc(NUM_RANGE, sizeof(int));
// 统计每个数字出现的次数
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
counts[nums[i]]++;
}
// 找到出现次数最多的数字
int max_count = 0;
int mode = 0;
for (int i = 0; i < NUM_RANGE; i++) {
if (counts[i] > max_count) {
max_count = counts[i];
mode = i;
}
}
printf("%d\n", mode);
free(nums);
free(counts);
return 0;
}
```
首先,我们通过 `scanf` 读入数字的个数 `n`,然后动态分配两个数组 `nums` 和 `counts`,其中 `nums` 存储输入的数字,`counts` 存储每个数字出现的次数。
接下来,我们遍历 `nums` 数组,统计每个数字出现的次数,具体做法是将 `counts[nums[i]]` 加 1。
最后,我们遍历 `counts` 数组,找到出现次数最多的数字,并输出该数字。如果有多个数字出现次数相同,则输出其中任意一个数字即可。
注意,由于数字范围是 [0, 100],因此需要将 `counts` 数组的大小设置为 101,而不是 100。
阅读全文