输出数组中不重复的元素

img


995🥲

双循环遍历,对每个元素向后检索是否有重复值,如有则全部删除。删除方法是将被删除元素后的所有元素向前移动一个位置

#include<stdio.h>

int main()
{
    int a[1000];
    int n,i,j,k;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
    {
        int c = 0;
        for(j=i+1;j<n;j++)
        {
            if(a[i] == a[j])
            {
                for(k=j;k<n-1;k++)
                {
                    a[k] = a[k+1];
                }
                j--;
                n--;
                c++;
            }
        }
        if(c>0)
        {
            for(k=i;k<n-1;k++)
                a[k] = a[k+1];
            i--;
            n--;
        }
    }
    for(i=0;i<n;i++)
        printf("%d ",a[i]);

    return 0;
}

运行结果及代码如下:

img

代码:


#include <stdio.h>

int del(int a[],int n)
{
    int i=0,j=0,k=0,t;
    while(i<n)
    {
        for (j=0;j<n;j++)
        {
            if( (j!= i) && (a[j] == a[i]))
                break;
        }
        if(j==n)
        {
            t = a[k];
            a[k] = a[i];
            a[i] = t;
            k++;
        }
        i++;
    }
    return k;
}

int main()
{
    int a[100],n,i;// = {1,2,3,3,3,1};
    printf("请输入数组元素个数:");
    scanf("%d",&n);
    printf("请输入数组元素:");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    printf("%d",del(a,n));
    return 0;
}