m0_59162554 2021-06-09 17:08 采纳率: 50%
浏览 37
已采纳

神题!!改一处错误,让其完整运行,各位大神快来解答。

//  原数组:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

//          2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

//  删除后:2 3 4 5 6 7 8 9 10 #include<stdio.h>

int f(int x[ ])

{

//从第二个元素开始往后走一边,看一下当前元素跟前面的重复不

//问题是:当我们处理了某个i的重复以后,他之后的元素整体向前挪了一位,可能导致挪之后的当前位仍是重复的,但是目前的程序里,已经进入下一次循环,i+1往后走了。

int flag;

for(int i=1;i<20;i++)

{

flag=0;

for(int j=0;j<i;j++)

{

  if(x[j]==x[i])

{ flag=1;

//置1 表示确实在i前面有和他重复的数,flag=1表示,发生重复

}

}

  if(flag==1)   

{

//A是实现“后面整体往前挪一位”操作 for(int k=i;k<20;k++)

{

if(k==19) x[k]=0;

else x[k]=x[k+1];

}

}

}

int fan=0;

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

{

if(x[i]!=0) fan++;

printf("%d ",x[i]); }

//重复    ----

//不重复。  ----

return fan;

}

void main( )

{ int a[ ]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10};

//20个

printf("\n %d  ",f(a));

}

/*编写程序,在被调函数中删去一维数组中所有相同的数,使之只剩一个,数组中的数已按由小到大的顺序排列,被调函数返回删除后数组中数据的个数。

例如:

原数组:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

删除后:2 3 4 5 6 7 8 9 10 返回数据个数:9

*/

  • 写回答

4条回答 默认 最新

  • 关注

     代码修改如下:{如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮}。

    #include<stdio.h>
    int f(int x[]) {
    	//从第二个元素开始往后走一边,看一下当前元素跟前面的重复不
    	//问题是:当我们处理了某个i的重复以后,他之后的元素整体向前挪了一位,可能导致挪之后的当前位仍是重复的,但是目前的程序里,已经进入下一次循环,i+1往后走了。
    	int flag;
    	int i,k,j,len=20;
    	for (i = 1; i < len; i++) {
    		flag = 0;
    		for (j = 0; j < i; j++) {
    			if (x[j] == x[i]) {
    				flag = 1;
    				break;
    				//置1 表示确实在i前面有和他重复的数,flag=1表示,发生重复
    			}
    		}
    		if (flag == 1) {
    			//A是实现“后面整体往前挪一位”操作
    			for(k=j;k<len;k++)
    			{
    				if (k == 19) x[k] = 0;
    				else x[k] = x[k + 1];
    			}
    			i--;
    			len--;
    		}
    	}
    	int fan = 0;
    	for (i = 0; i < len; i++) {
    		if (x[i] != 0) fan++;
    		printf("%d ", x[i]);
    	}
    	//重复    ----
    	//不重复。  ----
    	return fan;
    }
    void main() {
    	int a[] = {2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10, 10, 10};//20个
    	printf("\n %d  ", f(a));
    }
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂