概述
#include<stdio.h>
int main()
{
int arr[]={1,1,1,1,1,2,2,2,2,2};
int i=0,j=0,k=0;
int sz=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<sz;i++)
{
for(j=i+1;j<sz;j++)
{
if(arr[j]==arr[i])
{
for(k=j;k<sz-1;k++)
{
arr[k]=arr[k+1];
}
sz--;//这里要注意要有sz--和j-- 解释在下文
j--;
}
}
}
for(i=0;i<sz;i++)
printf("%d ",arr[i]);
return 0;
}
原理:将数组中的第一个数与其后面的数相比较,如果相等的话就把第二个数后面的数往前替换掉从第二个数开始的每个数,也就是把那个相同的数覆盖或者理解为删除掉,例如 1123 开始1与1比较两者相等 后面的2替换掉第二个1,3又替换掉前面2的位置 第2个1就相当于被删除了此时要注意数组的大小要减1 也就是代码中的sz-- ;
注意:这里说一下为啥还要j--,举个例子111234 按照上面的逻辑第二个1会被删掉大小由6变成了5
数组就是11234 假如没有j--的话 判断的循环会继续进行,j会++一下变成2,arr[2]就是指向数组的第三个数了也就是此时数组中的2了 显然11234 中的第二个1被遗忘了 最后的结果就是11234
但是如果j--了一下,就会与j++相互抵消了 就相当于没有变化,按照上面的例子 j还是会指向第一个1后面的元素 也就是第二个1了 这样比较后11234中第二个1 也会被删除 最终的结果就是1234而不是11234了 。
writer:white_to_sg
最后
以上就是迷人夏天为你收集整理的C语言实现删除整形数组里的相同的数的全部内容,希望文章能够帮你解决C语言实现删除整形数组里的相同的数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复