Online Compiler C

#include <stdio.h> int main() { int N,A,B,C,number1=0,number2=1; scanf("%d",&N); C = N; while(N > 0) { A=N%10; number1 = number1 + A; N=N/10; } while(C>0) { B=C%10; number2 = number2 * B; C = C/10; } if(number1 == number2) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读入一个整数N,计算它各位数字的和(number1)与积(number2),然后比较两者是否相等,相等输出YES,否则输出NO。

代码中有两个循环:第一个循环计算各位数字之和,第二个循环计算各位数字之积。但这里有一个关键问题:number2的初始值是1,而number1的初始值是0。对于数字0,各位数字的积应该是0,但你的代码中number2从1开始,如果N=0,循环不会执行,number2保持为1,导致结果错误。

- 检查当输入为0时,你的程序会输出什么?想想0的各位数字和与积应该是什么。
- 考虑number2的初始值是否合理,特别是当输入的数字包含0时,积的计算结果会怎样?