Online Compiler C

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

- 第7行有一个孤立的 `if` 关键字,后面没有条件或语句,这会导致编译错误。你需要检查这个 `if` 的用途,它可能是不小心多写的。
- 第9行 `int p=n%10` 缺少分号,并且变量 `p` 被赋值后立即被 `break` 使用,但 `break` 会直接跳出循环,导致后面的求和求积逻辑无法执行。你需要思考是否真的需要在遇到数字0时提前结束循环,因为0会使乘积为0,但和可能不为0,这会影响判断结果。