Online Compiler C

#include <stdio.h> int main() { int n; int ou = 0; int x = 0; scanf("%d", &n); while (n != 0) { int ou = n % 10; n = n / 10; {if (ou % 2 != 0) int x=1; break;} } if (x == 1) printf("NO"); else printf("YES"); return 0; }
这段代码试图判断一个整数是否所有位都是偶数,但存在逻辑错误。

- 你在循环内部重新声明了 `int x=1;`,这创建了一个新的局部变量,并没有修改循环外部的 `x`。因此外部的 `x` 始终为0,导致无论输入什么数字,程序都输出"YES"。
- `break` 语句的位置也不对,它被放在了花括号内,但花括号没有形成有效的循环控制结构,导致 `break` 可能不会按你期望的方式跳出循环。

- 检查变量作用域:循环内部声明的变量只在循环内有效,无法影响外部同名变量。
- 思考 `break` 应该放在哪里,以及如何正确地在发现奇数位时跳出循环并记录结果。