void main ()
{
int x[19]={0}, i=0, y=0, u=0, p;
while (i<=19)
{
scanf("%d",&x[i]);
i=i+1;
}
for (i=u;i<=19;i++)
{
if (x[y]!=x[i+1])
p=x[y];
else
{
u++;
y++;
}
}
printf("%d",p);
}
所以我用这个来检查重复和&amp;它应该打印非重复,但正如你可以看到,如果所有都是重复但是一个,如在 x [0] = 1 x [1] = 1 x [3] = 9 x [4] = 1 ... x [19] = 1;
prints
9
那么如何打印非重复?有什么帮助吗?
答案 0 :(得分:0)
最简单的方法之一是对数组进行排序以将重复项组合在一起。然后,当您浏览阵列时,只打印一个数字(如果它与之前的数字不同)。
// Print the unique elements of a sorted array:
for(int i=0; i<N; i++){
if (i-1 >= 0 && arr[i] == arr[i-1]) { continue; }
if (i+1 < N && arr[i] == arr[i+1]) { continue; }
printf("%d\n", arr[i]);
}
要对数组进行排序,您可以使用qsort函数
答案 1 :(得分:0)
这将是最简单的解决方案,只需嵌套一个额外的for循环。但是,这需要O(n ^ 2)。根据数组的大小,查看快速排序可能是有益的。
void main() {
int x[4] = { 1, 3, 2, 1 };
size_t i, j;
for (i = 0; i < sizeof(x) / sizeof(int); i ++) {
// Note that we only have to go to the last value before i.
for (j = 0; j < i; j ++) {
// We break if the value is a duplicate.
if (x[i] == x[j])
break;
}
// Check if the inner loop was break'ed (j < i) or not (j == i).
if (j == i)
printf("Unique: %i\n", x[i]);
}
}
还有一件事:如果在编译期间知道sizeof(x) / sizeof(int)
的大小,则只使用x
。这就是这种情况,但不要将其与malloc
一起使用。
答案 2 :(得分:0)
$(document).ready(function() {
$("#btn").click(function(){
$("#label1").html((new Date()).getSeconds());
$('#btn').off('click');
});
})