Online Compiler 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; }
这段代码的功能是:从用户输入一个整数,然后计算这个整数各位数字之和,最后输出结果。例如输入123,输出6(1+2+3)。

- 代码中使用了 `while(n!=0)` 循环,每次取出 `n` 的最后一位数字(`n%10`)加到 `sum` 中,然后去掉最后一位(`n=n/10`)。这个逻辑是正确的,但有一个潜在问题:如果输入的是负数,循环条件 `n!=0` 会一直成立,但取模和除法在负数上的行为可能导致错误结果。例如输入-123,`-123%10` 在C语言中结果是-3,`-123/10` 结果是-12,最终会得到负数之和,可能不符合预期。

- 另外,如果输入0,循环不会执行,`sum` 保持为0,输出0,这是合理的。但如果你希望处理负数,可以考虑先取绝对值,或者用其他方式处理符号。