You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言计算Iterated cross sum(迭代数位和)代码异常排查求助

迭代数位和代码修改方案

原代码核心问题

  • 外层循环终止条件错误:c>10会漏掉数值等于10的场景(10是两位数,仍需继续求和得到1),需改为c >= 10
  • 单次数位和计算完成后,没有将求和结果赋值给n、也没有重置累加变量c,导致外层循环无法对上次的求和结果做二次计算
  • 内层循环逻辑冗余:数位中遇到0不需要跳过,加0不影响求和结果,额外判断反而增加复杂度
  • 内层循环条件错误,不需要额外判断c>10,内层循环仅负责计算当前n的数位和即可

修改后的可运行代码

#include <stdio.h>

int main() {
    int n = 0;
    printf("please give us your number: ");
    scanf("%d", &n);
    
    int current = n; // 存储当前待计算数位和的数值
    int sum;
    // 外层循环:判断当前数值是否为一位数,不是就继续迭代求和
    while (current >= 10) {
        sum = 0;
        // 内层循环:计算current的数位和
        while (current != 0) {
            sum += current % 10;
            current = current / 10;
        }
        current = sum; // 将本次数位和赋值给current,供下一次迭代使用
    }
    
    printf("%d", current);
    return 0;
}

逻辑说明

  1. 外层循环持续判断当前待计算的数值是否大于等于10,只要是两位数及以上就继续迭代
  2. 每次进入外层循环先重置累加变量sum为0
  3. 内层循环遍历当前数值的每一位,累加得到数位和
  4. 将内层循环算出的数位和赋值给current,进入下一轮外层循环判断,直到current为一位数为止

内容的提问来源于stack exchange,提问作者Rico1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:02