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

#include <stdio.h> int main() { int a[10]; int x; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i < 10; i++) { if (a[i] == x) continue; for (int j = i + 1; j < 10; j++) { if (a[i] == a[j]) { x = a[i]; printf("%d ", a[i]); break; } } } return 0; }
这段代码试图找出数组中重复出现的数字并打印出来。它使用了一个变量 `x` 来标记已经打印过的重复数字,但存在逻辑问题。

- 变量 `x` 在第一次使用前没有被初始化,导致第一次比较 `a[i] == x` 时行为未定义。
- 当找到重复数字时,`x` 被赋值为该数字,但后续循环中如果遇到相同的数字,`continue` 会跳过它,这会导致如果同一个数字出现三次以上,只有第一次重复被打印,后续重复会被忽略。实际上,你希望每个重复数字只打印一次,但当前逻辑可能漏掉某些情况。