在线编译器 C

#include <stdio.h> int digit_sum(unsigned int n) { int temp=0; if(n==0) { printf("%d\n",n); } if(n<10) { printf("%d\n",n); } while(n/10!=0) { temp=temp+n%10; n=n/10; } printf("%d\n",temp); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在逻辑问题。函数中使用了多个 `printf` 输出,并且没有正确组合递归或循环来得到最终的和。

- 你的代码在 `n<10` 时直接打印了 `n`,但此时应该返回 `n` 本身作为数字和,而不是打印。同时,`while` 循环只处理了部分数字,没有将最后一位(当 `n` 变成个位数时)加到 `temp` 中。
- 函数最后返回了 `0`,但题目要求返回数字和。你应该让函数返回计算出的总和,而不是打印中间结果。