编写函数,返回在一个整数组中出现次数最多的数及其出现次数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写函数,返回在一个整数组中出现次数最多的数及其出现次数。相关的知识,希望对你有一定的参考价值。

用C语言编写函数,返回在一个整数组中出现次数最多的数及其出现次数。
——好的再追加积分

#include<stdio.h>
#include<windows.h>
#include<time.h>
#define N 1000
int Fun(int a[],int n,int x[])
//a[]是数组 n是数组个数 x[]是要保存的最大数字的值,先排序,利用同一个数字是否变化来决定出现的次数

int i,j,t,check,maxtime,maxsuffix; //check是检查何时变化数字的 maxtime是最大次数 maxsuffix是最大的哪个数是
int value[N][2]=0;//一个数组,value[][0]保存当前的数值 value[][1]保存这个数字出现的次数
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]) t=a[j];a[j]=a[j+1];a[j+1]=t; //排序
check=0;
/*
for(i=0;i<n;i++)

printf("%3d",a[i]);
if((i+1)%10==0) puts("\n");

*/
/////////////////////////////////算法:排序后数字是按次序存放,通过是否变化新数值来判断出现了多少次
for(i=0;i<n-1;i++)

if(a[i]!=a[i+1]) check=i; //要是这个数和下个数不相等 value数组进入下一位,出现新数字
value[check][0]=a[i]; //保存这个数的数值
value[check][1]++; //保存这个数的出现次数+1

////////////////////////////////////////////////////////////////////////////////////////////////////
maxtime=value[0][1]+1; //原来本身算一次
for(i=0;i<=check;i++)
if(maxtime<value[i][1]) maxtime=value[i][1];maxsuffix=value[i][0];
/////下面是当出现次数最多的数字不只一个时,保存所有的数值
j=0;
for(i=0;i<=check;i++)
if(maxtime==value[i][1]) x[j]=value[i][0];j++;

return(maxtime);


void main()

int a[100],*p=a,maxtime,maxvalue[10]=0;
int i;
srand(time(NULL));
for(i=0;i<100;i++)

a[i]=rand()%25+1;



maxtime=Fun(p,100,maxvalue);
//输出
for(i=0;i<100;i++)

printf("%3d",*(p+i));
if((i+1)%10==0) printf("\n");

/////////////////
for(i=0;i<10;i++)

if(maxvalue[i]!=0) printf("\n %d 出现了%d次.\n",maxvalue[i],maxtime);

参考技术A 说一下思路自己去敲代码吧。
假设整数数组为A,定义一个数组B用来存取每个整数出现的次数,用A数组中的每一个整数和A数组中每一个元素进行比较如果相同数组B相应元素加1,最后求数组B中的最大值就是出现次数最多的整数,假设是B【5】,那么这个整数就是A【5】。
参考技术B #include<stdio.h>
#include<stdlib.h>
void main()

int *x,n,i,j,y,t,m=0;
printf("输入个数\n");
scanf("%d",&n);
x=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++) scanf("%d",x+i);
for(i=0;i<n;i++)
t=0;
for(j=0;j<n;j++)
if (x[i]==x[j]) t=t++;
if(t>m) m=t;y=*x;

printf("次数最多的数%d 次数%d",y,m);
free(x);
参考技术C long findmax(int *num,int n)
int max,nmax=0,temp,ntemp=0;
for (int i=0;i<n;i++)
temp=*(num+i);
if (ntemp>nmax)
nmax=ntemp;
max=temp;

ntemp=0;
for (int j=0;j<n;j++)
if (temp==*(num+j)) ntemp++;

return max*n+nmax;

void main()
int a[6]=2,2,4,4,4,3;
int max,nmax;
long t;
t=findmax(&a[0],6);
nmax=t%6;
max=(int)t/6;
printf("%d,%d",max,nmax);
本回答被提问者采纳
参考技术D int main()

int a[10]=1,2,3,2,2,6,7,1,1,1;
int i,j,temp,n=sizeof(a)/sizeof(int);
for(i=n;i>0;i--)
for(j=0;j<i;j++)

if(a[j]>a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;



//以上是 冒泡 就不说了

//下边是找到哪个数出现的次数最多 并且 指出来 是谁!
int e=0,b=0,c=0,d=0;
for(i=0;i<n-1;i++)
if(a[i]==a[i+1])//记录同一个数出现的次数,当当前数与下一个数一样时 e++
e++;//这个e记录了 出现的次数
else//否则就 b++
b++;

if(b==1 && e>c)//每边一次数,b就会是1,并且e这次记录的次数大于c第三个数时
d=a[i];//d是次数最多的 这个数
c=e+1;//上边e的时候 少加了一次,这里补上加一
e=0;//重置为0
b=0;//重置为0




for(i=0;i<n;i++)

printf("%d ",a[i]);

puts("");

printf("cishu=%d,sz=%d \n",c,d);
return 0;

复制粘贴就可以了,我这个方法稳得一批,自己一看就明白。
加上注释更能通俗易懂 。看好你哦

java求数组中,某个值连续出现次数最多的数的次数

这次遇到的问题是,要在一个数组中找到连续出现次数最多的数的次数。

下面的数组,我想拿到0的连续出现次数最多的次数

连续出现3次,第一次0连续出现一次,第二次连续出现2次,第三次连续出现6次。我要拿到6次这个东西。

int[] s = 0,1,0,0,1,1,0,0,0,0,0,0;

分析一下

定义一个出现次数变量j,和一个出现最大次数max。

我首先要肯定是要遍历这个数组s,然后判断是不是等于0,是0的话,我就让j变量加1,如果是1,那么我就判断如果j>max就把j赋值给max,然后把j变为0。

最后判断j>max,j赋值给max。输出。

下面是代码展示:

int[] s = 0,1,0,0,1,1,0,0,0,0,0,0;

        int j = 0 ;
        int max = 0 ;
        for(int i = 0;i<s.length;i++)
            if(s[i] == 0)
                j++;
            else
                if(j>max)
                    max = j;
                
                j = 0 ;
            
        
        if(j>max)
            max = j ;
        
        System.out.println(max);

 

 

 

这里是我参考的大佬的博客:https://www.cnblogs.com/zazahao/p/10736741.html

以上是关于编写函数,返回在一个整数组中出现次数最多的数及其出现次数。的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验7-1-11 求整数序列中出现次数最多的数

Python练习题3.6求整数序列中出现次数最多的数-修正版

如何求出数组中出现次数最多的数字(C#实现)

如何获取数组中出现次数最多的字符串?

在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码

java求数组中,某个值连续出现次数最多的数的次数