Онлайн компилятор C

#include <stdio.h> int main() { int a[10]; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i < 10; i++) { int count = 1; for (int j = 0; j < 10; j++) { if (a[i] == a[j]) count++; } if (count == 1) printf("%d ", a[i]); } return 0; }
这段代码的功能是:输入10个整数,然后输出其中只出现一次的元素(即唯一值)。它通过双重循环对每个元素统计它在整个数组中的出现次数,如果次数为1就打印。

- 注意内层循环的起始值:当 `i` 和 `j` 相等时,`count` 从1开始,但内层循环会再次把当前元素本身也算一次,导致每个元素至少被计数两次(自己和自己)。这会使唯一元素的判断条件 `count == 1` 永远不成立,因为即使元素只出现一次,`count` 也会变成2。你需要调整内层循环的逻辑,避免重复计数自身。

- 另外,如果数组中有重复元素,比如两个相同的唯一值,当前代码会多次打印同一个值。考虑如何确保每个唯一值只被输出一次,例如在找到重复时跳过后续相同元素的统计。