三个个问题:1.如果集合S中所有的数都不相等,是不是没有众数?
2.如果重数最大的不止一个,比如11223344,是不是没有众数?
3.光给你忙编程去了,我到现在作业还没做呢,明天要交,怎么办啊?
#include"stdio.h"
#include"stdlib.h"
void main()
{
int *p,*q,*A,*B;
int n;
int i,j,max2,num=1,max=0;
int king=0,nub,temp;
printf("请输入多重集中的元素个数:");
scanf("%d",&n);
p=(int *)calloc(2,n);
q=(int *)calloc(2,n);
A=p;
B=q;
for(i=0;i<n;i++)
scanf("%d",p+i);
for(i=0;i<n;i++)
*(q+i)=1;
for(i=1;i<n;i++)
for(j=0,p=A;j<=n-i;j++,p++)
{
if(*p>*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
else
continue;
}
p=A;
//for(i=0;i<n;i++)
//printf("%d",*(p+i));
for(i=0;i<n-1;i++,p++)
{
if(*p==*(p+1))
{
(*q)++;
}
else
{
q++;
num++;
}
}
if(num==n)
printf("\n所有的元素重数都为1。\n");
else
{
for(i=0;i<num;i++)
{
if(*(B+i)>max)
{
max=*(B+i);
nub=i;
}
else if(*(B+i)==max)
{
max2=*(B+i);
}
}
for(i=0;i<=nub;i++)//要把从0开始一直到nub都加起来
king+=*(B+i);
if(max==max2)
printf("重数最大的元素不止一个,所以众数不存在。");
else
printf("众数为:%d
其重数是:%d\n",*(A+king-1),max);
}
}