Online Compiler C

#include <stdio.h> int main() { int n, cymma = 0; scanf("%d", &n); for(int i = 1; i <= n; i++) { int save_i = i; while (i>0 ) { int digit = n % 10; cymma += digit; } i = save_i; } printf("%d", cymma); }
这段代码试图计算从1到n每个数字的各位数字之和的总和,但存在逻辑错误。

- 在while循环中,你使用了`n % 10`来获取数字,但应该使用当前变量`i`(或保存的副本)来提取各位数字,而不是用`n`。同时,while循环没有改变循环条件中的变量,导致无限循环。
- 你在for循环内部修改了循环变量`i`,然后又用`save_i`恢复它,这种做法容易出错。更好的方式是使用一个临时变量来处理数字的分解,而不影响循环变量。