在线编译器 C

#include <stdio.h> int main() { int a[10]; int flag = 0; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i < 10; i++) { 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; }
这段代码试图找出数组中唯一不重复的元素,但存在几个关键问题。

代码中使用了赋值运算符 `=` 而不是比较运算符 `==`,这会导致条件判断出错。另外,最后的 `printf` 使用了循环外的变量 `i`,但此时 `i` 已经超出作用域。

- 检查 `if (a[i] = a[j] && i != j)` 这一行,`=` 是赋值,应该用 `==` 进行比较。同时注意运算符优先级,`&&` 的优先级低于 `==`,需要加括号。
- 最后的 `printf("%d", a[i])` 中的 `i` 在循环结束后已经不存在了(因为 `i` 定义在 `for` 循环内部),你需要思考如何保存那个唯一元素的值。