在线编译器 C

#include <stdio.h> int main() { int N,number1=0,number2=1; scanf("%d",&N); while(N > 0) { A=N%10; number1 = number1 + A; N=N/10; } while(N>0) { B=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,所以循环体根本不会执行,导致乘积计算失败。

- 第一个循环结束后N被完全除尽变为0,你需要保存原始输入值,或者重新获取输入值,以便第二个循环能再次处理各位数字。
- 变量number2初始化为0,但乘积的初始值应为1,否则任何数乘以0结果都是0。