在线编译器 C

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

- 注意变量x的初始值是1,如果数字中包含0,那么乘积x会变成0,但此时和可能不为0,会导致判断结果正确。但如果数字本身就是0,循环不会执行,sum和x保持初始值0和1,此时判断会输出NO,但0的各位数字和与积都是0,应该输出YES。你需要考虑n为0时的情况。
- 另外,如果数字是负数,循环条件n != 0会直接不执行,输出NO,但负数的各位数字处理方式需要明确。通常题目会假设输入非负整数,但你可以确认一下。