您的位置:首页 > 移动开发 > 微信开发

小程序(九)找出数组中出现最多的数字以及它的出现次数

2013-07-18 12:06 411 查看
例如,输入为整型数组 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐