Online Compiler C

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

- 代码中使用了两个独立的循环分别计算和与积,但注意plus的初始值设为1,如果输入的数字包含0,那么乘积会变成0,这可能导致和与积相等的情况被误判。你需要思考:当数字中有0时,和与积是否真的相等?这个逻辑是否符合题目要求?
- 另外,代码没有处理负数的情况。如果输入负数,while循环条件n>0会直接不执行,导致sum和plus保持初始值0和1,从而输出NO。你需要考虑是否要处理负数,或者题目是否保证输入为正整数。