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

- 第11行使用了 `counter-digit++`,这不是合法的C语法。你可能想用变量 `count_digit` 来计数,但这里写错了变量名和运算符。
- 第12行多了一个 `n/=10`,这会导致每次循环中 `n` 被额外除以一次10,从而跳过数字,影响正确性。
- 变量 `count_digit` 在循环内声明,但后面判断时用了 `counter`,这个变量未定义,会导致编译错误。

- 检查变量名是否一致,比如 `count_digit` 和 `counter` 应该是同一个变量。
- 注意循环体内不要有多余的除法操作,每次循环只应处理一位数字。