输出数组的所有众数,若没有众数要输出数组里面所有的数据,使用c语言
时间: 2024-05-03 13:19:30 浏览: 107
众数问题的C语言
5星 · 资源好评率100%
以下是使用C语言实现输出数组的众数或所有数据的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("请输入数组的长度: ");
scanf("%d", &n);
int *arr = (int*)malloc(sizeof(int) * n);
printf("请输入数组的元素: ");
for(int i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
int maxCount = 0, count = 0;
int *modes = (int*)malloc(sizeof(int) * n);
for(int i=0; i<n; i++)
{
count = 0;
for(int j=i+1; j<n; j++)
{
if(arr[i] == arr[j])
{
count++;
}
}
if(count > maxCount)
{
modes[0] = arr[i];
maxCount = count;
}
else if(count == maxCount)
{
modes[maxCount] = arr[i];
}
}
if(maxCount == 0)
{
printf("数组中没有众数,所有数据为: ");
for(int i=0; i<n; i++)
{
printf("%d ", arr[i]);
}
}
else
{
printf("数组的众数为: ");
for(int i=0; i<=maxCount; i++)
{
printf("%d ", modes[i]);
}
}
free(arr);
free(modes);
return 0;
}
```
代码说明:
1. 首先,我们通过 `scanf` 函数输入数组的长度和元素。
2. 接着,我们定义 `maxCount` 用于记录最大出现次数,`count` 用于统计当前元素的出现次数;定义 `modes` 数组用于存放众数。
3. 循环遍历数组,统计每个元素出现的次数,并更新 `maxCount` 和 `modes` 数组。
4. 最后,根据 `maxCount` 的值输出众数或所有元素。如果 `maxCount` 为0,则说明数组中没有众数,直接输出数组所有元素。
注意:此代码只能输出众数或所有元素,不能同时输出。如果要同时输出,可以在统计众数时同时记录所有元素的出现次数,并在输出时判断是否为众数。
阅读全文