oj 1.9 13:整数去重

本文描述了一个C语言程序,用于在一个给定数组中查找并打印重复的整数,同时减少数组长度以避免内存错误。程序使用了双重循环结构来实现此功能。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<string.h>
int main()
{//怎么找重复出现的数,两个循环,出现的次数可能很多
    int n;
    int  arr[23000];//数组的大小要注意,不要过小,会出现runtime error
    scanf("%d",&n);
    getchar();
    int i,k,j,newn;
   for(i=0;i<n;i++)
   {
       scanf("%d",&arr[i]);
   }

     newn=n;

    for(i=0;i<newn;i++)
    {
        for(j=i+1;j<newn;j++)//这里能不能是j+1
        {
            if(arr[i]==arr[j])
            {
                newn--;//应该要先减
                printf("newn is %d  when i is %d and j is %d\n",newn,i,j);
                printf("because %d\n",arr[i]);

               for(k=j;k<newn;k++)
               {
                   arr[k]=arr[k+1];//下标又标错了
                   //这里的错误就是最后一个,但是我通过newn进行了限制啊
               }
               i--;//i要--,要不然如同这样的数据会出错8
                   //10 43 12 73 12 12 85 73

            }

        }
    }
    for(i=0;i<newn;i++)//怎么回事啊,怎么会有newn这个下标的数据呢
    {
        printf("%d ",arr[i]);
    }


    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值