去重是很多地方都要使用的东西,本次用一个例子来表示一下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a[10];
int temp=0;
int ge=0,j=0;
srand((unsigned int)time(NULL));
for(int i=0;i<10;i++)
{
temp=0;
temp=rand()%100;
for(j=0;j<ge;j++)
{
if(temp==a[j])
{
i--;
break;
}
}
if(ge==j)
{
a[i]=temp;
ge++;
}
}
for(int i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
}
这是一个平平无奇的代码,它的意思是通过随机数为数组a赋值,但同时去掉相同的值。
假设第一次随机到的temp=10,然后执行for循环到if,此时因为a[j]为空,所以第一个if不成立,所以执行第二个if,因为此时j=ge=0,所以第二个if成立。然后将temp的值赋值给a[1]。此时让ge进行自加(ge)并执行下次循环。
然后假设随机到的值为15,发现 第一个if仍然不成立,于是将15放入第二个空。
第三次发现此时与前一个重复 ,因为里层for循环会一直自增,所以temp会比对a中的所有值,比对到有一样的之后执行第一个if,因为此时外循环没有意义,所以让i-1重新进行此轮循环,并跳出此次循环,以次即可查重。