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

来源:互联网 发布:剑三军爷捏脸数据 编辑:程序博客网 时间:2024/06/03 01:51

例如,输入为整型数组 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;}


原创粉丝点击