例如,输入为整型数组 a[] = [2,3,4,55,65,]
则输出:
出现频次最多的数:5
该数次出现的次数:3
#include<stdio.h>
#include<stdlib.h>
int array_frequency(int *arr_input,int len,int nout,char *p,int &max,int &index)//对max,和index使用引用,可以使值传回函数
{
int k=0;
int num=0;
char *temp = (char *)malloc(sizeof(char)*(2*len));
for(int i=0;i<len;i++)//利用这个循环可以单独找出数组中的每个元素
{
if( arr_input[i]/10 == 0)
{
*p++ = arr_input[i] + '0';//将整型数字转化为字符
num++;
}
else
{
while( arr_input[i] != 0 )
{
*temp++ = arr_input[i]%10 + '0';
arr_input[i] = arr_input[i]/10;
k++;
}
temp--;
while(k--)
{
*p++ = *temp--;
num++;
}
k = 0;
}
}
*p = '\0';
p = p-num;
int b[10]={0};
char g;//注意p中元素是字符,不是整型数字
for(int j=0;j<num;j++)
{
g = *p++;
switch(g)
{
case '0': b[0]++; break;
case '1': b[1]++; break;
case '2': b[2]++; break;
case '3': b[3]++; break;
case '4': b[4]++; break;
case '5': b[5]++; break;
case '6': b[6]++; break;
case '7': b[7]++; break;
case '8': b[8]++; break;
case '9': b[9]++; break;
default: printf("error\n");
}
}
for(int m=0;m<10;m++)
if( max<=b[m])
{
max = b[m];
index = m;
}
return 0;
}
int main()
{
int arr_input[] = { 45, 8, 24, 442222};
int len = 4;
char *arr_output = (char *)malloc(sizeof(char)*(2*len));
int nout = -1;
int max=0;
int index = -1;
array_frequency(arr_input,len,nout,arr_output,max, index);
printf("出现频次最多的数字:\n");
printf("%d\n",index);
printf("该数字的出现频次:\n");
printf("%d",max);
getchar();
return 0;
}