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

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

问题描述:

//  原数组: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

*/

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

#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));
}

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

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

你要把 if(k==19) x[k]=0;  --->>  if(k==19) x[k]=x[0];

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632