我有下面的循环,unique
的值永远不会大于2
。 n
是数组中整数的总数(我从文件中逐行读取整数)。
我完全被难住了,并且已经有很长一段时间了。为什么unique
的值永远不会大于2
?
int last = array[0];
int unique = 1;
int i;
for (i = 1; i < n; i++) {
if (array[n] != last) {
last = array[n];
unique++;
printf("i:%d\n", i);
printf("n:%d\n", n);
printf("last:%d\n:", last);
}
}
printf("unique:%d\n", unique);
输出:
i:1
n:9
last:0
:unique:2
i:1
n:4
last:4
:unique:2
i:1
n:5
last:4
:unique:2
i:1
n:5
last:4
:unique:2
i:1
n:5
last:4
:unique:2
unique:1
i:1
n:20
last:0
:unique:2
最佳答案
您输错了数组索引:使用 array[i]
而不是 array[n]
。
这是一个更简单的版本:
int unique;
for (unique = 1; unique < n && array[unique] == array[unique - 1]; unique++) {
continue;
}
printf("unique:%d\n", unique);
关于c - 为什么循环中的值永远不会大于2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34970485/