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

#include <stdio.h> enum{size=10}; int main() { int a[size]; for(int i=0;i<size;i++){ scanf("%d",&a[i]); }int num=0,b[10]={0}; while(num<size){ for(int i=0;i<size;i++){ if(a[num]==a[i]){ b[num]++; } }num++; } for(int i=0;i<size;i++){ if(b[i]>=2){ printf("%d ",a[i]); } } return 0; }
这段代码的功能是:读取10个整数,然后输出所有出现次数大于等于2的元素(重复元素)。但输出结果会重复多次,例如某个数字出现3次,它会被打印3次。

- 你的b数组记录的是每个位置上的数字在数组中出现的总次数,而不是去重后的计数。当某个数字重复出现时,每个位置都会满足b[i]>=2,导致该数字被多次打印。
- 可以考虑在打印前检查当前数字是否已经在之前被处理过,避免重复输出。例如,在打印前增加一个判断,确保只输出每个重复数字的第一次出现。