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) x=1; } if (x== 1) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读入一个整数,然后判断这个整数中是否包含至少一个偶数数字。如果包含,输出"YES",否则输出"NO"。

代码逻辑上有一个问题:变量`ou`在循环中被重新赋值,覆盖了原本用来统计偶数个数的变量。实际上,你声明了`int ou=0;`,但在循环里又用`int ou=n%10;`重新声明了一个局部变量,导致外层`ou`始终为0。

- 检查循环内部:`int ou=n%10;` 这一行重新声明了一个新的`ou`变量,而不是使用之前声明的那个。这会导致外层`ou`的值永远不会被更新。
- 思考一下:你原本可能想用`ou`来记录当前数字的个位数,但变量名重复声明了。可以尝试去掉循环内的`int`,直接使用`ou = n % 10;`。