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++; n/=10; } if(count_digit>=2) { printf("%d", digit); } } return 0; }
这段代码试图找出一个整数中重复出现至少两次的数字,但存在逻辑错误。

代码的思路是:对于每个数字0到9,先恢复原始数值,然后通过循环提取每一位,检查是否等于当前数字,并计数。如果计数大于等于2,就输出该数字。

- 在while循环内部,你写了两次 `n/=10;`,这会导致每次循环跳过一位数字,只检查了奇数位。应该只保留一次除法操作。
- 变量 `count_digit` 的命名有拼写错误,但不影响功能,可以忽略。