Online Compiler C

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

你的代码逻辑基本正确,但有一个关键问题需要注意:

- 变量y的初始值是1,这会导致乘积计算正确。但如果n的某一位是0,那么乘积y会变成0,而和x可能不为0,此时判断会输出NO,这符合你的意图吗?请思考一下当数字包含0时,你的程序行为是否符合预期。

另外,检查一下变量y的初始值是否在所有情况下都合适。