c语言数组查重覆盖法

c语言数组查重覆盖法

问:删除有序数组中的重复元素c语言
  1. 答: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;
    }
  2. 答:如果注意到是有序,你还是要问的话= =
问:c语言数组后面的数覆盖前面的数
  1. 答:学习C语言,你得头绪清晰变量的长度,特别是数组,如果定义的长度小于实际赋值的长度时,字符或数字就会往前挤,挤掉前面的分隔符和前面的数,就是你说的这种现象。
    解决办法:加大数组定义的长度。
问:用C语言实现把一个数组写入到另一个数组中,重复的过滤掉。
  1. 答:不可以a【10】指的是a数组的第11个元素,同样b也一样,你这样写只能够把b的第11个元素值赋给a的第十一个元素
    求采纳为满意回答。
  2. 答:1.数组有序的,只要从刚插入的位置向后找。
    2.无序的,边找边插。重复去掉
    3.不管有无序,全部合并,找重复的去掉。
  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语言 去掉数组中重复的元素····求帮助
  1. 答: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]);
    }
    }
  2. 答:#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);}
  3. 答:#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改成其他数组中没有的数就行了
  4. 答:#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
  5. 答:说的不是很清楚,数组定义的时候就删除?看来你对数组的操作还不是很清楚,应该是在数据写入数组的时候将其删除吧。你可以这样,如果数组不大,在写入数据的时候先遍历一遍数组看看数组中是否有该数据,如果有那么就不把数据写入数组,如果没有就接着最后一个元素写入数组就可以了。
问:C语言问题 把一个数组中的重复元素去掉
  1. 答:是把重复数去掉的 不是单纯没有重复
  2. 答: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、电击界面上方的感叹号,开始运行。输入数组的数据。
c语言数组查重覆盖法
下载Doc文档

猜你喜欢