编写一个程序,输入一组整数(以-1代表结束)到一个一维数组中,删除该一维数组中重复的元素,并统计删除

编写一个程序,输入一组整数(以-1代表结束)到一个一维数组中,删除该一维数组中重复的元素,并统计删除元素的个数,输出删除元素的个数和删除后的数组。
例如,
输入:1,1,3,4,3,1,5,2,6,4,-1
输出:
有4个重复的元素
删除了重复元素后为1,3,4,5,2,6,-1。

#include <stdio.h>
int main(void)
{
    int i, j, k;
    int rep = 0;        //用于计算重复元素
    int arry_size;      //输入元素的个数  即数组大小
    int arry[20];       //默认最多输入20个元素
    printf("input: ");
    fflush(NULL);       //“input:”输出
    for(i=0 ;; i++)    
    {
        scanf("%d", arry+i);
        if(arry[i] == -1)  
        {
            arry_size = i;  //输入为-1  得到数组大小
            break;
        }
    }
    for(i=1; i<=arry_size; i++)                            //i=1 因为第一个元素不可能有重复
    {
        for(j=0; j<i; j++)        
        {
            if(arry[i] == arry[j])                 //循环比较前面的元素 arry[i]为当前要判断的元素  arry[j]为arry[i]前面的元素 
            {
                rep++;                         //有重复  加一个
                for(k=i; k<arry_size; k++)     //有重复这个元素不要了 后面的元素顶上
                    arry[k] = arry[k+1];         //arry[k]为当前重复的元素,arry[k+1]为后面顶上的元素
                i--;                           //由于后面元素顶上  i的值不用增加
                arry_size--;                   //重复元素不要了 数组大小-1个
                break;
            }  
        }
    }
    printf("There are %d reduplicate elements!\n", rep);
    for(i=0; i<=arry_size; i++)
        printf("%d ", arry[i]);
    printf("\n");
                         
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答