c语言数组查重覆盖法
2022-05-10阅读(597)
问:删除有序数组中的重复元素c语言
- 答:int remove(int *arr, int sz)
{
int i = 0;
int index = 0;
for (i = 1; i < sz; i++) {
if (arr[index] != arr[i]) {//依次向后比较,若不相等,则用arr[i]覆盖arr[index+1],否则(遇到的是重复元素),i往后移
arr[++index] = arr[i];//当index与i之间没有其他元素,index + 1 就是i哦,相当于index后移,但是值没改变
} //当index与i之间有其他元素,那么这些元素必定是重复得了,直接覆盖掉
}
return index + 1;
} - 答:如果注意到是有序,你还是要问的话= =
问:c语言数组后面的数覆盖前面的数
- 答:学习C语言,你得头绪清晰变量的长度,特别是数组,如果定义的长度小于实际赋值的长度时,字符或数字就会往前挤,挤掉前面的分隔符和前面的数,就是你说的这种现象。
解决办法:加大数组定义的长度。
问:用C语言实现把一个数组写入到另一个数组中,重复的过滤掉。
- 答:不可以a【10】指的是a数组的第11个元素,同样b也一样,你这样写只能够把b的第11个元素值赋给a的第十一个元素
求采纳为满意回答。 - 答:1.数组有序的,只要从刚插入的位置向后找。
2.无序的,边找边插。重复去掉
3.不管有无序,全部合并,找重复的去掉。 - 答:void main(){
int a[]={1,6,5,8,5,5,4,1,2,6,4,7,9,8,9,1,0,0,4};
int len,j,i,n,t=0;
len=sizeof(a)/4;
int b[30];
for(i=0;i<len;i++){
n=0;
for(j=0;j<i;j++){
if(b[j]==a[i]){
n++;
}
}
if(n==0){
b[t]=a[i];
t++;
}
}
i=0;
while(i<t){
printf("%4d",b[i]);
i++;
}
}
问:c语言 去掉数组中重复的元素····求帮助
- 答:for(int i = 0; i < sizeof(a)/sizeof(a[0]);i++)
{
bool bExsit = false;
for(int j = 0; j < i;j++)
{
if(a[i] == a[j])
{
bExsit = true;
break;
}
}
if(bExsit == false)
{
printf("%d ", a[i]);
}
} - 答:#include <stdio.h>
int main()
{
char str[100];
int i=0,j;
printf("input a string \n");
gets(str);
while(i<strlen(str))
{ j=i+1;
printf("delelte result %d\n",strlen(str));
while(j<strlen(str))
{ if(str[j]==str[i])
{
str[j]='\0';
strcat(str,str+j+1) ;
}
else j++;
}
i++ ; }
puts(str);} - 答:#include <stdio.h>
int main()
{
int a[]={1,2,1,7,3,2,3,4,5,8,7,6};
int i;
int j;
for(i=0;i<12;i++)
for(j=0;j<i;j++)
if(a[j]==a[i])
a[i]=0;
for(i=0;i<12;i++)
if(a[i]!=0)
printf("%d,",a[i]);
}
我这个方法不适用与数组中有0的情况,如果数组中有0的话,可以把a[i]=0和if(a[i]!=0)上的0改成其他数组中没有的数就行了 - 答:#include int main() { int a[]={1,2,1,7,3,2,3,4,5,8,7,6}; int i; int j; for(i=0;i
- 答:说的不是很清楚,数组定义的时候就删除?看来你对数组的操作还不是很清楚,应该是在数据写入数组的时候将其删除吧。你可以这样,如果数组不大,在写入数据的时候先遍历一遍数组看看数组中是否有该数据,如果有那么就不把数据写入数组,如果没有就接着最后一个元素写入数组就可以了。
问:C语言问题 把一个数组中的重复元素去掉
- 答:是把重复数去掉的 不是单纯没有重复
- 答:1、首先,点击桌面上的VC++6.0,打开软件。
2、打开软件之后,点击右上方的【文件】【新建】。进入后,再点击【文件】,选择c++ source file.最后点击【确定】。
3、输入代码(定义数组): int i; int x[7]; for(i=0;i<7;i++) { printf("x[%d]:",i);scanf("%d",&x[i]); }。
4、输入代码(对元素进行倒序排列): for(i=0;i<3;i++) { int temp=x[i]; x[i]=x[6-i]; x[6-i]=temp; } 。
5、电击界面上方的感叹号,开始运行。输入数组的数据。