在线编译器 C

#include <stdio.h> int main() { int n,sum=0; scanf("%d",&n); while(n>=0) { sum+=n%10; n=n/10; } printf("%d",sum ); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在逻辑错误。程序会读取一个整数,然后通过循环不断取末位数字并累加,同时去掉末位。但循环条件 `n>=0` 会导致问题:当 `n` 变为 0 时,循环仍在继续,因为 0 满足条件,此时 `n%10` 为 0,`n/10` 也为 0,陷入无限循环。

- 循环条件应改为 `n>0`,这样当 `n` 变为 0 时循环自然结束,避免无限循环。
- 注意:如果输入负数,循环不会执行,但题目通常只考虑非负整数。如果希望处理负数,需要额外考虑符号。