c - 为什么循环中的值永远不会大于2?

标签 c arrays if-statement for-loop

我有下面的循环,unique 的值永远不会大于2n 是数组中整数的总数(我从文件中逐行读取整数)。

我完全被难住了,并且已经有很长一段时间了。为什么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/

相关文章:

c - 如何保存字符串标记,将其内容保存到数组中,然后使用这些内容进行进一步比较

最便宜的引用结构?

arrays - 力扣 : Four Sum

bash if 子句与 and or 组合

c - 如何将此数组作为字符串返回?

将字符串中的值转换为 float 组

java - 输入存储在 Arraylist 或 String 数组中? (新程序员)Java

java - 数组上的正则表达式匹配 (Java)

java - 如何检查一个值是 A 或 B,另一个值是 A 或 B?

正则表达式双列匹配 R