Online Compiler C

#include <stdio.h> int main() { int n, sum = 0; scanf("%d", &n); for (int i = 1; i <= n; i++) { while (i > 0) { sum += i % 10; i /= 10; } } printf("%d", sum); return 0; }
这段代码试图计算从1到n每个数字的各位数字之和的总和,但存在一个严重问题:在while循环中修改了循环变量i,导致外层for循环无法正常工作。

- 在for循环内部,你直接修改了循环变量i(通过i /= 10),这会破坏for循环的计数逻辑,导致循环提前结束或无限循环。
- 你需要一个临时变量来保存当前数字的副本,用于计算各位数字之和,而不是直接修改i本身。