在线编译器 C

#include <stdio.h> int main() { int n, a, i = 0, p = 0; scanf("%d", &n); while (n != 0) { a = n % 10; if (a % 2 == 0) p++; n = n / 10; i++; } if (i == p) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读入一个整数,然后判断它的每一位数字是否都是偶数。如果是,输出"YES",否则输出"NO"。

代码的思路是:用循环逐位取出数字,统计偶数数字的个数(p)和总位数(i),最后比较两者是否相等。

- 变量 i 用来统计数字的总位数,但初始值为0,当 n 为0时循环不会执行,i 保持为0。如果输入的数字本身就是0,那么循环不会执行,i 和 p 都是0,会输出"YES",但0的每一位(只有一位0)确实是偶数,所以结果正确。不过如果输入的是负数,取模运算的结果可能为负,导致判断出错。

- 变量 p 用来统计偶数数字的个数,逻辑正确。但注意,如果数字中包含奇数数字,p 会小于 i,输出"NO";如果全是偶数,p 等于 i,输出"YES"。