Online Compiler 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 flag = 0; for (int j = 0; j < 10; j++) { if (a[i] == a[j] && i != j) flag = 1; } if (flag == 0) {printf("%d ", a[i]); } } return 0; }
这段代码的功能是:读取10个整数,然后输出其中只出现一次的元素(即不重复的数字)。

代码的逻辑是:对每个元素a[i],遍历整个数组检查是否有其他位置j(j≠i)存在相同的值。如果没有找到相同的,就输出a[i]。

- 注意内层循环中,当i和j相等时,你跳过了比较,但这样会导致如果一个数字出现多次,它仍然会在第一次出现时被输出,因为其他相同数字的位置还没有被检查到。实际上,你的逻辑是“如果存在另一个相同值则标记”,但这样对于重复的数字,每个出现位置都会在遇到其他相同位置时被标记,所以最终只有最后一个重复数字可能被错误输出。你需要重新思考如何判断一个数字是否唯一出现。

- 另外,你的代码缩进有些混乱,特别是if语句和花括号的对应关系。建议检查一下花括号的配对,确保每个循环和条件语句的代码块都正确包裹。