1、题目
2、代码
#include<stdio.h>
void numselect(int *p, int len);
int main(){
int a[]={1,2,2,3,3,4,5};
numselect(a,7);
}
void numselect(int *p, int len){
int num[80]={0};
int count[80]={0};
int count_tmp=1,count_max=0,count_min=1;
int q=0;
for(int i=0;i<len;i++) {
// printf("%d\n",*(p+i));
if(i==len-1){
num[q]=*(p+i); //保存最后一个数字
count[q]=count_tmp; //保存出现次数
if(count_max<count_tmp) { //更新最出现次数大值
count_max = count_tmp;
}
if(count_min>count_tmp) { //更新最出现次数大值
count_min = count_tmp;
}
}
if(*(p+i)<*(p+i+1)){ //下一个数字不等于当前数字
num[q]=*(p+i); //保存数字
count[q]=count_tmp; //保存出现次数
q++;
if(count_max<count_tmp) { //更新最出现次数大值
count_max = count_tmp;
}
if(count_min>count_tmp) { //更新最出现次数大值
count_min = count_tmp;
}
//出现次数重新计数
count_tmp=1;
}
else{
count_tmp++;
}
}
p = p-len+1;
if(count_min==count_max){
printf("没有众数\n");
}
else{
printf("众数为:");
for(int i=0;i<=q;i++){
if ( count[i] == count_max){
printf("%d ",num[i]);
}
}
}
printf("\n");
}