Online Compiler C

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

- 你的代码没有处理输入数字为0的情况。当n=0时,while循环不会执行,sum保持0,product保持1,结果会输出NO。但0的各位数字只有0,和与积都是0,应该输出YES。你需要考虑如何让循环至少执行一次,或者单独处理n=0的情况。

- 另外,如果输入的数字包含0,比如102,乘积会变成0,而和是3,结果输出NO,这符合逻辑。但要注意,如果数字是负数,你的代码会直接跳过循环,输出NO。题目可能只考虑正整数,但你可以思考是否需要处理负数。