在线编译器 C

#include <stdio.h> int main() { int n,save_n; scanf("%d",&n); save_n=n; int sum=0; while(n>0){ int last=n%10; sum=sum+last; n=n/10; } n=save_n; int plus=0; while(n>0){ plus=plus*last; n=n/10; } if(sum==plus){ prinf("YES"); }else{ printf("NO"); } return 0
这段代码试图判断一个整数是否满足某种条件,但存在几个问题。

代码首先计算了各位数字之和(sum),然后试图计算各位数字的某种乘积(plus),但第二个循环中使用了变量 `last`,而这个变量在第二个循环中并没有被重新定义或赋值,它保留的是第一个循环结束时的最后一位数字。

- 第二个循环中 `plus=plus*last;` 这一行,`last` 的值是第一个循环结束后最后一位数字,而不是当前循环的每一位数字,所以计算逻辑是错误的。
- 另外,`prinf` 拼写错误,应该是 `printf`。
- 最后 `return 0` 后面缺少分号。

你需要重新思考第二个循环应该做什么:如果要计算各位数字的乘积,应该在循环内每次获取当前位数字,然后累乘。