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

#include <stdio.h> int digit_sum(unsigned int n) { int temp=0; if(n==0) { return n; } if(n<10) { return n; } while(n/10!=0) { temp=temp+n%10; n=n/10; } return temp; }
这段代码定义了一个函数 `digit_sum`,用于计算一个无符号整数的各位数字之和。它通过循环不断取末位数字并累加,最后返回总和。

- 你的代码在 `n` 小于10时直接返回 `n`,这是正确的。但注意,当 `n` 为0时,你返回了 `n`,这也能得到0,但逻辑上可以更简洁。
- 循环条件 `while(n/10!=0)` 会在 `n` 变成个位数时退出,但此时你漏掉了最后一位数字。例如输入123,循环会处理12和1,但退出时 `n` 是1,这个1没有被加到 `temp` 中。你需要考虑循环结束后如何处理剩余的个位数。