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

如题所述

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

#include <stdio.h>

#include <stdlib.h>

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<n; i++)

    {

        for(j=0; j<m; j++) //查找数组b中是否存在该元素

        {

            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<m; j++)

    {

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

    }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-12
只要在输出的时候过滤掉重复的数就行了(若后一个等于前一个,不输出后一个)。本回答被提问者采纳
相似回答