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

#include <stdio.h> int main() { int n,save_n; scanf("%d",&n); save_n=n; for(int digit=0;digit<=9;digit++){ int counter=0; n=save_n; while(n>0){ int cur=n%10; n=n/10; if(cur==digit){ counter++; } } if(counter>1){ printf("%d",digit); } } }
这段代码的功能是:读入一个整数,然后找出其中出现次数超过1次的数字,并依次打印出来。

代码的逻辑是:对每个数字0到9,先保存原始输入值,然后通过循环逐位取出数字,统计该数字出现的次数。如果次数大于1,就打印这个数字。

- 注意:代码中在每次内层while循环开始前重置了n为save_n,这是正确的做法。但外层for循环每次也会重置n,实际上可以更高效地只遍历一次数字。

- 提示:当前代码会打印出所有重复的数字,但输出时没有分隔符,比如输入112233,会输出123连在一起。你可以考虑是否需要添加空格或换行来区分每个数字。