在线编译器 C

#include <stdio.h> int main() { int a[10]; int i, j, k; int is; int alr; for (i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (i = 0; i < 10; i++) { is = 0; if (i != j && a[i] == a[j]) { is = 1; break; } } if (!is) continue; alr = 0; for (k = 0; k < i; k++) { if (a[k] == a[i]) { alr = 1; break; } if (!alr) { printf("%d ", a[i]); } } return 0; }
这段代码试图找出数组中的重复元素并打印,但存在多个逻辑错误。

代码的主要问题是变量 `j` 未初始化就被使用,以及循环结构混乱。`j` 在 `if (i != j && a[i] == a[j])` 中是一个未赋值的变量,这会导致未定义行为。另外,`continue` 语句出现在 `main` 函数中,但不在循环体内,这是语法错误。

- 检查变量 `j` 的初始化:你需要一个内层循环来遍历数组,比较当前元素 `a[i]` 与它后面的所有元素。当前代码中 `j` 没有定义初始值。
- 注意 `continue` 的使用位置:`continue` 只能出现在循环内部。你的代码中 `if (!is) continue;` 不在任何循环体内,会导致编译错误。你需要重新组织循环结构来正确实现去重打印的逻辑。