请教一个小程序

L_thread 2009-10-25 08:43:24
#include <stdio.h>
#include <string.h>

int a[12]={1,1,1,3,3,3,3,5,5,4,5,5};

void docr( int *in,int count){//排序

int i,j,x;
int temp;
for(i=1;i<count;i++){

for(x=0;x<i;x++){

if((*(in+i))<=(*(in+x)))
break;
}
temp=*(in+i);
for(j=i;j>x;j--) {

*(in+j)=*(in+j-1);
}
*(in+x)=temp;
}
}

void cal(int *a,int *max,int *result){ //计算

int i=0,count=0;
*result=0;
*max=a[i];
printf("max=%d\n",*max);
for(i=0;i<12;i++){
//printf("max=%d,result=%d\n",*max,*result);
//printf("count=%d\n",count);printf("i=%d\n",i);
if(a[i]==a[i+1]){
++count;

}else{
if(* result<=count){
*result=count;
*max=a[i];
//printf("111max=%d,result=%d %d\n",*max,*result,i);
}
count=0;//printf("max=%d,result=%d %d\n",*max,*result,i);
}
}

}
void main(){

int *result;
int *max;
int i=0;

result=&i;
max=&i;

//lenght=sizeof(a);
//printf("%d\n",lenght);
docr(a,12);

for(i=0;i<12;i++)
printf("a[%d]=%d\n",i,a[i]);

cal(a,max,result);

//printf("max=%d,result=%d",*max,*result);

}

int a[12]={1,1,1,3,3,3,3,5,5,4,5,5};求这个数组中出现次数最多的,最大的数,printf出次数,最大的数

现在能打印了最大的数,但是次数不对,不知道哪出错了

大侠帮忙调一下

并请教求数组长度怎么做?

...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
L_thread 2009-10-26
  • 打赏
  • 举报
回复
max与result指向同一个地方了,所以错了。。。
huangbo0603 2009-10-25
  • 打赏
  • 举报
回复
做了哈,有点搞不懂。明早继续!
zentropy 2009-10-25
  • 打赏
  • 举报
回复
当你循环结束的时候
这个时候应该再把count和result比较一下

L_thread 2009-10-25
  • 打赏
  • 举报
回复
恩,这个清楚,对大次数少了1

我就特纳闷,就最后一次突然就变成
max=5,result=5了
result应该是3的
L_thread 2009-10-25
  • 打赏
  • 举报
回复
这样试过了,也不对的....
zentropy 2009-10-25
  • 打赏
  • 举报
回复
而且count的计数应该从1开始而不是从0开始
zentropy 2009-10-25
  • 打赏
  • 举报
回复
int a[] = { 1,2,3,4 };
则数组长度就是sizeof(a)/sizeof(int)

void cal(int *a,int *max,int *result){ //计算
......
for(i=0;i <12;i++){
if(a[i]==a[i+1]){ // 当i == 11的时候,a[i+1]没有意义
++count;

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧