#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;
}
oj 1.9 13:整数去重
最新推荐文章于 2024-09-27 14:28:55 发布
本文描述了一个C语言程序,用于在一个给定数组中查找并打印重复的整数,同时减少数组长度以避免内存错误。程序使用了双重循环结构来实现此功能。
摘要由CSDN通过智能技术生成