Online Compiler C

#include <stdio.h> int main() { int n,count,sum; scanf("%d",&n); count=0,sum=0; while(n!=0) {count++; n=n/10; } sum+=count; printf("%d",sum); return 0; }
这段代码的目的是读取一个整数,然后计算这个整数的位数,并输出位数。但代码中有一个逻辑问题:它把位数累加到了变量sum中,而sum初始为0,每次循环只加了一次count,实际上sum最终就等于count,但这样写是多余的。

- 变量sum在这里没有实际作用,可以直接输出count。但这不是主要错误。
- 主要问题在于:代码只计算了位数,但题目可能要求的是计算各位数字之和?如果是这样,那么循环中应该把每一位数字累加到sum,而不是只累加位数。检查一下你的题目要求,是求位数还是求各位数字之和?