Онлайн компилятор C

#include <stdio.h> int main() { int n, sum = 0, mul = 1, d; while (n > 0) { d = n % 10; sum += d; mul *= d; n /= 10; puts(sum == mul ? "YES" : "NO"); } return 0; }
这段代码试图判断一个整数的各位数字之和与各位数字之积是否相等,但存在几个问题。

- 变量 `n` 在使用前没有初始化,它的初始值是不确定的,这会导致程序行为不可预测。
- 循环条件 `n > 0` 依赖于未初始化的 `n`,可能根本不会进入循环,或者进入后产生错误结果。
- 每次循环内部都输出结果,但通常只需要在计算完所有位数后输出一次。

- 提示1:检查变量 `n` 是否在读取用户输入或赋值之后才使用,否则它的值是不确定的。
- 提示2:思考一下,判断“和等于积”这个条件应该在循环结束后执行一次,还是每次取一位数字时都执行?