Online Compiler 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"); return 0; digit++; else printf("no\n"); return 0; } return 0; }
这段代码的目的是检查一个整数中是否有某个数字出现至少两次。但代码存在多个语法和逻辑错误。

- 变量 `digit` 没有声明和初始化,就直接在 `while(digit<=9)` 中使用。
- 内层 `while(n>0)` 后面缺少左花括号 `{`,导致后续语句不属于循环体。
- 第10行 `if (digit=current_digit)` 使用了赋值运算符 `=` 而不是比较运算符 `==`,这会导致条件永远为真,并且改变 `digit` 的值。
- `digit++` 和 `else` 的位置错误,它们被放在了 `return 0;` 之后,导致无法执行。
- 代码末尾有多余的 `return 0;` 和花括号。

- 提示1:检查变量 `digit` 是否在循环开始前被正确声明和赋初值。思考外层循环应该遍历哪些数字(0到9)。
- 提示2:注意内层循环的语法结构,确保花括号正确包裹循环体。同时,比较操作应使用 `==` 而不是 `=`。