#include<stdio.h>
int newlen(int *shuzu,int size)
{
int count=0;
for(int i=0;i<size-count;i++)
{
//
printf("i的值:%d\n",i);
//
for(int ii=0;ii<size-count;ii++)
{
//
printf("ii的值:%d\n",ii);
//
if(i==ii)
{
}
else
{
if(shuzu[i]==shuzu[ii])
{
if(ii==size-count-1)
{
count++;
//
printf("输出数组:\n");
for(int i=0;i<size-count;i++)
{
printf("%d\t",shuzu[i]);
}
printf("\n");
//
}
else
{
for(int a=ii;a<size-count-1;a++)
{
shuzu[a]=shuzu[a+1];
}
count++;
//
printf("输出数组:\n");
for(int i=0;i<size-count;i++)
{
printf("%d\t",shuzu[i]);
}
printf("\n");
//
}
}
}
}
}
return count;
}
int main()
{
printf("请输入数组大小:");
int n;
scanf("%d",&n);
printf("输入数据:\n");
int nums[n];
for(int i=0;i<n;i++)
{
scanf("%d",&nums[i]);
}
printf("输出数组:\n");
for(int i=0;i<n;i++)
{
printf("%d\t",nums[i]);
}
printf("\n执行函数\n");
int len=0;
len=newlen(nums,n);
printf("输出新数组:\n");
for(int i=0;i<n-len;i++)
{
printf("%d\t",nums[i]);
}
return 0;
}
删除数组中重复项的程序
知识点
1.程序原理并非是真正的删除,而是发现一个重复的数的位置,就将后面的值依次往前挪动,最后返回新数组的长度,其实数组大小并没有改变,而是只显示挪动了位置后,新长度的数组。
2.数组是通过指针传递的,所以在函数内的操作,会直接作用到数组,只需要返回新的数组长度即可
思考
有没有什么方法能真的删除掉后面多余的数组数据。