Онлайн компилятор 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; while(n>0){ int cur=n%10; n=n/10; if(cur==digit){ counter++; } if(counter>1){ printf("%d",counter); } } }
这段代码试图检查一个整数中每个数字(0-9)出现的次数,但存在多个语法和逻辑错误。

- 第4行 `int n;save_n;` 中 `save_n` 缺少类型声明,且分号位置错误。`scanf` 的格式字符串 `"%d,&n"` 中引号位置错误,应该是 `"%d", &n`。
- 第7行 `for` 循环的括号内使用了逗号 `,` 而不是分号 `;` 来分隔表达式,这是语法错误。
- 循环内部,每次循环都会将 `n` 除以10直到0,但你没有在每次检查新数字前恢复 `n` 的原始值,导致后续数字无法正确检查。同时,`counter>1` 时打印 `counter` 的逻辑也不对,应该是在每个数字检查完后输出该数字的出现次数,而不是在循环中重复打印。