Онлайн компилятор 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(counter>=2) { printf("%d", digit); } } return 0; }
这段代码试图统计一个整数中每个数字(0-9)出现的次数,并输出出现次数大于等于2的数字。但代码中存在逻辑错误。

- 在while循环内部,你连续两次执行了 `n/=10`,这会导致每次循环跳过一位数字,使得统计不准确。实际上,每次循环只需要移除一位数字。
- 变量名不一致:你声明了 `count_digit`,但在判断时却使用了 `counter`,这会导致编译错误或逻辑错误。