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

// 计算从1到n所有整数的各位数字之和 #include <stdio.h> int main() { int n;//输入值n scanf("%d", &n); int sum = 0;//所有数的各位数字之和sum // 总和 for (int i = 1; i <= n; i++)//当前经历的整数i { int temp = i; // 复制一份i(i去除末尾后的数) sum = sum + temp % 10;// 更新sum的值:新sum==原sum+sum加上该数的最后一位数字 temp = temp / 10; // 去掉temp的最后一位,为下次循环提供新的最后一位数字 } printf("%d\n", sum); return 0; }
这段代码试图计算从1到n所有整数的各位数字之和,但存在逻辑错误。目前它只处理了每个数字的最后一位,而没有处理多位数字的每一位。

- 对于每个数字i,你只取了一次末位数字就结束了,没有用循环把i的所有位都处理完。你需要对每个i单独用一个内层循环,不断取末位并累加,直到i变为0。
- 注意变量temp的作用:你复制了i,但只做了一次取模和除法,之后就没有再处理temp剩下的位数。应该用while循环重复取模和除法,直到temp为0。