C语言编程:任给定一个一维数组,其中重复的元素只保留一个,然后将这些互不重复的元素按照升序排列!

2024年10月31日 01:38
有2个网友回答
网友(1):

下面是我写的程序和运行的结果

#include 

#include 

int cmp(const void *p, const void *q)

{

    return *(int *)p-*(int *)q;

}

int main()

{

    int a[100], b[100], n, m, i, j; //数组a为了接收数据,数组b为了存放已经除去重复的元素

    printf("请输入数据,按ctrl+z结束输入:\n");

    i=0;

    while(scanf("%d", &a[i])!=EOF) i++;

    n=i; //n为输入数据的个数

    m=0; //m为此时数组b中的元素个数

    for(i=0; i

    {

        for(j=0; j

        {

            if(a[i]==b[j]) break;

        }

        if(j==m) //数组b中没有该元素

        {

            b[m]=a[i];

            m++;

        }

    }

    qsort(b, m, sizeof(int), cmp); //快排进行排序

    for(j=0; j

    {

        printf("%-5d", b[j]);

    }

}

网友(2):

只要在输出的时候过滤掉重复的数就行了(若后一个等于前一个,不输出后一个)。