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

#include <stdio.h> int main() { int n,a=0,b=n/i,i=10,sum=0; scanf("%d",&n); while(b>0){ a=n%i; i*=10; sum=sum+a; } prinf("%d",sum); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在多个问题。

代码中变量 `b` 和 `i` 在使用前未正确初始化,`b=n/i` 在 `n` 和 `i` 都未赋值时计算,结果不可预测。循环条件 `b>0` 中的 `b` 从未更新,会导致无限循环或直接退出。另外 `prinf` 是拼写错误,应为 `printf`。

- 变量 `b` 和 `i` 的初始值需要合理设定,并且循环中要更新 `b` 的值,否则循环无法正确结束。
- 提取各位数字时,通常用 `n % 10` 得到个位,然后 `n = n / 10` 去掉个位,这样循环直到 `n` 为0。你的方法用 `i` 乘以10来取不同位,但需要确保每次循环后更新被取余的数。