Online Compiler C

#include <stdio.h> int digit_sum(unsigned int n) { int temp=0; if(n==0) { printf("%d\n",temp); } while(n/10!=0) { temp=temp+n%10; } printf("%d\n",temp); return 0; }
这段代码试图计算一个无符号整数的各位数字之和,但存在逻辑错误。函数 `digit_sum` 会输出结果,但循环条件有问题,导致无法正确累加所有数字。

- 在 `while(n/10!=0)` 循环中,你没有更新 `n` 的值,所以循环会无限执行,因为 `n` 始终不变。你需要每次循环后让 `n` 去掉最后一位数字。
- 另外,当 `n` 是一位数时(比如 `n=5`),循环条件 `n/10!=0` 不成立,循环不会执行,但此时 `temp` 仍然是0,没有加上这个一位数本身。你需要考虑如何处理这种情况。