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

// 判断自然数各位数字之和是否等于各位数字之积 #include <stdio.h> int main() { int n; scanf("%d", &n); int sum=0; int pro=1;// 数字之积,初始1(因为乘法单位元) for(i=0;i<;i++) { int digit = n % 10; // 取出最后一位数字diguit sum=digit+sum; pro=digit*pro; n = n / 10; //去掉已经计数过的最后一位数字,作为为下次循环的初始值 } if(sum==pro) { printf{"YES\n}; } else { printf{"NO\n}; } return 0; }
这段代码试图判断一个自然数的各位数字之和是否等于各位数字之积。代码中有几处语法错误和逻辑问题。

- 第10行的for循环条件不完整:`i<;` 缺少循环上限,而且变量`i`没有声明。循环应该根据数字的位数来执行,而不是用固定次数。
- 第20行和23行使用了花括号`{}`来调用printf,这是错误的,应该使用圆括号`()`。
- 第20行的字符串缺少右引号:`"YES\n};` 应该是 `"YES\n");`。

关于循环的控制,你需要思考如何让循环在数字的所有位都被处理完后自动停止。提示:当n变成0时,说明所有位都处理完了。另外,变量`i`没有实际作用,可以去掉。