Online Compiler C

#include <stdio.h> int main() { int a[10], i, j; int flag; for (i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (i = 0; i < 10; i++) { int count = 0; for (j = 0; j < 10; j++) { if (a[j] == a[i]) count++; } if (count > 1) { flag = 1; for (j = 0; j < i; j++) { if (a[j] == a[i]) flag = 0; } if (flag) printf("%d ", a[i]); } } return 0; }
这段代码的功能是:输入10个整数,然后输出其中出现次数超过1次(即重复出现)的数字,并且每个重复数字只输出一次(不重复输出同一个数字)。

代码的思路是:对于每个元素,先统计它在整个数组中的出现次数,如果大于1,再检查它是否已经在之前被输出过(通过检查它之前是否有相同的元素),如果没有则输出。

- 变量 `flag` 没有被初始化,这可能导致程序行为不确定。在使用 `flag` 之前,应该给它一个明确的初始值。
- 代码中 `flag` 的用法可以简化。实际上,你不需要先统计全部次数再判断是否重复,可以直接在发现重复时输出,但要注意避免重复输出同一个数字。