Online Compiler C

#include <stdio.h> int main() { int n,save_n; scanf("%d",&n); save_n=n; for(int digit=0 ;digit<=9;digit++) { n=save_n; int count_digit=0; while(n>0){ int current_digit=n%10; n/=10; if(current_digit==digit) count_digit++; } if(count_digit>=2) { printf("%d", digit); } } return 0; }
这段代码的功能是:读入一个整数,然后找出其中出现次数大于等于2次的数字,并依次输出这些数字。

代码的思路是:对0到9每个数字,先保存原始输入值,然后通过循环统计该数字在整数中出现的次数,如果次数≥2就输出这个数字。

代码存在一个逻辑问题:当输入的数字中有多个重复数字时,输出格式可能不符合预期。比如输入112233,会输出123,但题目可能要求输出重复的数字,或者按特定格式输出。

- 注意输出格式:目前每次发现重复数字就直接用printf输出,没有空格或换行分隔,可能造成输出连在一起。考虑是否需要添加分隔符。
- 思考边界情况:如果输入的数字是0,或者包含前导零的情况(比如输入0123),当前代码可能无法正确处理,因为整数类型不会保留前导零。