Online Compiler C

#include <stdio.h> int main() { int N,A,number1=0,number2=1; scanf("%d",&N); A = N; while(N > 0) { A=N%10; number1 = number1 + A; N=N/10; } while(N>0) { A=N%10; number2 = number2 * B; N = N/10; } if(number1 == number2) printf("YES") else printf("NO"); return 0; }
这段代码试图判断一个数字的各位数字之和是否等于各位数字的乘积,但存在几个问题。

代码中第一个while循环正确计算了各位数字之和,但循环结束后N变为0。第二个while循环的条件是N>0,此时N已经是0,所以循环不会执行,number2始终是初始值1。另外,number2的计算中使用了未定义的变量B。

- 第一个while循环结束后,N的值变成了0。你需要保存原始输入值,或者用另一个变量来存储数字,以便在第二个循环中再次使用。
- 第二个循环中,变量B没有定义。你应该使用正确的变量名来存储当前位的数字,并注意乘积的初始值应该是1(你已经做了),但乘法运算需要正确的操作数。