在线编译器 C

#include <stdio.h> int digit_sum(unsigned int n) { int temp=0; scanf("%d",&n); if(n==0) {printf("%d\n",temp)} while(n/10!=0) { temp=temp+n%10; } printf("%d\n",temp); return 0; }
这段代码试图计算一个整数的各位数字之和,但存在几个问题。

首先,函数 `digit_sum` 接收参数 `n`,却又用 `scanf` 从输入读取,这会导致传入的参数被覆盖,函数失去了原本的用途。其次,`while` 循环中 `n` 的值没有更新,会陷入死循环。另外,`if` 语句缺少分号,语法错误。

- 函数应该使用传入的参数 `n` 进行计算,而不是用 `scanf` 重新读取输入。思考如何直接使用 `n` 的值。
- 在循环中,你需要每次去掉 `n` 的最后一位数字(例如 `n = n / 10`),否则循环永远不会结束。