Онлайн компилятор 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) x==1; { } } if (x == 1) printf("NO"); else printf("YES"); return 0; }
这段代码试图判断一个整数是否所有位都是偶数,但存在逻辑错误。

- 在循环内部,你重新声明了 `int ou`,这隐藏了外部的 `ou` 变量,但这不是主要问题。关键错误是 `x==1;` 这一行,它只是一个比较表达式,没有赋值效果,所以 `x` 永远不会变成1。
- 另外,`if (ou % 2 != 0)` 后面的花括号是空的,没有执行任何操作。

- 检查 `x==1;` 这一行,思考如何正确地将 `x` 设置为1。
- 考虑当发现奇数位时,是否还需要继续循环?可以提前结束循环。