在线编译器 C

#include <stdio.h> int main() { int n; int ou=0; scanf("%d", &n); while (n != 0) { int ou=n%10; n = n / 10; if (ou%2==0) printf("YES"); else printf("NO"); } return 0; }
这段代码试图判断一个整数的每一位数字是否为偶数,但逻辑上有问题。它会在每次循环中立即输出结果,而不是先检查所有位再输出。

- 变量 `ou` 在循环中被重新赋值为当前最低位数字,但之前初始化为0的语句没有实际作用。循环会依次取出每一位数字,但每次取出后立刻判断并打印,导致输出多个结果。
- 代码没有记录是否所有位都是偶数,而是对每一位单独输出“YES”或“NO”。例如输入123,会先判断3输出“NO”,再判断2输出“YES”,最后判断1输出“NO”,这不是期望的单一结果。

提示:
- 思考如何先检查所有位,再根据整体结果输出一次“YES”或“NO”。可以用一个标志变量来记录是否遇到奇数位。
- 注意循环结束后,程序应该只输出一次结果,而不是每次循环都输出。