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

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

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值