Online Compiler C

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

- 变量 x 和 y 没有初始化,x 用于累加各位数字,y 用于累乘各位数字。未初始化的变量会包含随机值,导致结果错误。
- 如果数字包含 0,那么 y 会变成 0,但初始值未设置,且乘法逻辑需要正确处理 0 的情况。

- 检查变量 x 和 y 的初始值。累加应从 0 开始,累乘应从 1 开始。
- 考虑数字中包含 0 时,乘积会变成 0,你的代码是否还能正确比较和与积?