#include <stdio.h>
int main()
{
int arr[1000] = { 0 };
int n = 0;
scanf("%d", &n);
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
int j = 0;
for (i = 0; i < n; i++)
{
int flag = 1;
for (j = 0; j < n; j++)
{
if (i != j)
{
if (arr[i] == arr[j])
{
flag = 0;
}
}
}
if (flag)
{
printf("%d ",arr[i]);
}
}
return 0;
}
1.这里用到了标志法,创建一个变量flag,一旦检测倒有相同的数字,就将flag赋值为0。最后if判断,如果flag为1,就打印相应元素。
2.检测要用双循环的方法,外循环是为了让每一个数组元素都能被检测到,而内循环是用来判断被检测的元素在数组中有没有相同的元素。
3.内循环检测是否有相同元素时,不能让arr[ i ] 和 arr[ j ] 比较时,使得i与j相等,因为就算相应元素在数组中只出现一次,当i与j相等时,flag一样会被赋值为0。要设一个if,当i与j不相等时,才会进行检测。
这题的思路比较简单,但是有一两个细节要注意。