Online Compiler C

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

- 变量 `m` 只在检测到数字0时被赋值,但未初始化,可能导致未定义行为。
- 当数字包含0时,积必然为0,但代码中 `m` 的赋值逻辑不完整,且条件判断 `m==0` 可能无法正确反映数字中是否有0。

- 检查变量 `m` 的初始化。如果数字中没有0,`m` 的值是未定义的,这会影响判断结果。
- 思考如何正确判断数字中是否包含0。注意,当数字包含0时,积为0,但和可能不为0,此时应输出"NO"。