用c语言编写找众数(出现次数最多的数)(数字范围是[0, 100])
时间: 2023-11-22 10:53:45 浏览: 77
以下是使用 C 语言编写的找众数程序,数字范围是 [0,100]:
```c
#include <stdio.h>
int main()
{
int a[101] = {0}; // 初始化数组,用于统计每个数字出现的次数
int n, max = 0, mode; // n 为输入的数字数量,max 为数字出现的最大次数,mode 为众数
printf("请输入数字个数:");
scanf("%d", &n);
printf("请输入数字:\n");
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
a[num]++; // 统计数字出现的次数
if (a[num] > max) { // 更新最大出现次数和众数
max = a[num];
mode = num;
}
}
printf("众数是:%d,出现次数为:%d\n", mode, max);
return 0;
}
```
该程序首先将数字出现次数统计在一个长度为 101 的数组中,然后遍历输入的数字,更新数组中每个数字出现的次数。最后,找到出现次数最多的数字,输出其出现次数和众数即可。
相关问题
C语言实现找众数(出现次数最多的数)(数字范围是[0, 100]) 如: 输入:5 1 2 1 2 1 输出:1
以下是一种简单的实现方式:
```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。
用c语言帮我实现众数问题,实现可以自行定义数组个数和数值大小并输出出现次数最多数字的次数
好的,以下是用C语言实现众数问题的代码:
```c
#include <stdio.h>
int main()
{
int n, i, j, max_count = 0, mode;
printf("请输入数组长度: ");
scanf("%d", &n);
int arr[n], count[n];
printf("请输入数组元素: ");
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
count[i] = 0;
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (arr[j] == arr[i])
{
count[i]++;
}
}
}
for (i = 0; i < n; i++)
{
if (count[i] > max_count)
{
max_count = count[i];
mode = arr[i];
}
}
printf("出现次数最多的数字是 %d,出现了 %d 次。\n", mode, max_count);
return 0;
}
```
希望能够帮助你解决问题!