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

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

代码逻辑基本正确,但有一个语法问题需要注意。

- 在 `if (m == sum)` 后面直接换行,然后 `printf("YES");` 前面没有大括号,这样会导致 `else` 和前面的 `if` 无法正确配对。C语言中,`if` 和 `else` 之间不能有空行或多余的分号,否则 `else` 会变成孤立语句,导致编译错误。

- 检查 `if` 和 `else` 之间的结构,确保它们直接相连,中间不要有多余的空行或语句。