Онлайн компилятор C

#include <stdio.h> int main() { int n; scanf("%d",&n); int save_n=n; while(digit<=9){ n=save_n; int counter=0; while(n>0) int current_digit=n%10; if (digit=current_digit){ counter++; } n=n/10; } if (counter>=2) printf("yes\n"); else printf("no\n"); return 0; } return 0; }
这段代码试图判断一个整数中是否有某个数字出现至少两次,但存在多个语法和逻辑错误。

- 变量 `digit` 没有声明和初始化,直接用于循环条件,会导致编译错误。
- 内层 `while(n>0)` 后面缺少左花括号 `{`,导致后续语句不属于该循环体。
- 第11行 `if (digit=current_digit)` 使用了赋值运算符 `=` 而不是比较运算符 `==`,这会把 `current_digit` 赋值给 `digit`,并且条件永远为真。
- 外层 `while` 循环没有更新 `digit` 的值,会陷入死循环或逻辑错误。
- 代码末尾有多余的 `return 0;` 和花括号。

- 提示1:检查所有变量是否都已声明并赋予初始值,特别是循环控制变量 `digit`。
- 提示2:注意区分赋值 `=` 和相等比较 `==`,并确保循环体用花括号正确包裹。