在线编译器 C

#include <stdio.h> int main() { int n, i; scanf("%d", &n); while (n > 0) { i = n % 10; if (i % 2 != 0) { printf("NO"); return 0; } n = n / 10; }printf("YES"); return 0; }
这段代码的功能是:读入一个整数,然后检查它的每一位数字是否都是偶数。如果发现任何奇数位,就输出"NO"并结束;如果所有位都是偶数,则输出"YES"。

你的代码逻辑基本正确,但有一个小问题需要注意:

- 当输入的数字是0时,while循环条件`n > 0`不成立,会直接输出"YES"。但0本身是偶数,所以这个结果是对的。不过如果输入的是负数,循环也不会执行,会直接输出"YES",而负数的各位数字判断可能不符合预期。你可以考虑如何处理负数的情况。

- 另外,变量`i`在循环中每次被重新赋值,但它的作用域是整个main函数,这没有问题。不过你可以思考一下,如果输入的数字包含前导零(比如0123),scanf会如何处理?这可能会影响你的判断逻辑。