Online Compiler C

#include <stdio.h> int main() { int a; int cnt = 0; scanf("%d", &a); while (a > 0) { int d = a % 10; if (d % 2 != 0) { cnt = 1; break; } a = a / 10; } if (cnt == 0) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是判断一个整数是否所有数位都是偶数。它从个位开始逐位检查,如果发现奇数位就立即停止并输出"NO",否则输出"YES"。

- 代码中 `cnt = 1` 的赋值位置有误。当发现奇数位时,应该将 `cnt` 设为1表示“存在奇数”,但当前逻辑是遇到奇数就立即退出循环并输出"NO",这本身是正确的。不过,如果数字是0,循环不会执行,`cnt` 保持为0,会输出"YES",但0的各位数字0是偶数,所以结果正确。但思考一下:如果输入是负数呢?`while (a > 0)` 会直接跳过,输出"YES",这不符合题意。

- 提示:考虑输入为负数或0的情况。负数应该如何处理?另外,检查一下循环条件是否覆盖了所有需要检查的数位。