Онлайн компилятор C

#include <stdio.h> int main() { int n,i=0,counter=0; scanf ("%d" ,&n); while (n !=0){ p=n%10; if (p%2==0){ counter++; } n=n/10; i++; } if (counter ==i){ printf("YES"); } else{ printf("NO"); } return 0; }
这段代码的作用是:读入一个整数,然后判断它的每一位数字是否都是偶数。如果是,输出"YES",否则输出"NO"。代码的思路是不断取出最后一位数字,检查它是否为偶数,并统计偶数的个数和总位数,最后比较两者是否相等。

- 变量 `p` 没有声明类型。在C语言中,所有变量必须先声明再使用。你需要在 `while` 循环之前声明 `p` 的类型,比如 `int p;`。
- 变量 `i` 用来统计总位数,但它的初始值是0,每次循环 `i++`,最后 `i` 确实等于位数。不过要注意,当 `n` 为0时,循环不会执行,此时 `i` 为0,`counter` 也为0,会输出"YES",但0的每一位(只有一位0)是偶数,所以结果正确。但更常见的做法是单独处理0的情况,或者用 `do-while` 循环确保至少执行一次。