You need to enable JavaScript to run this app. C语言实现输入数字数位反复求和得到1-9单结果的方法
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现输入数字数位反复求和得到1-9单结果的方法

数位反复求和到单数字的C语言实现

现有代码的现存问题

  • 变量作用域不合法:在while循环内部定义的数位临时变量d,会在单次循环结束后被销毁,循环退出后完全无法访问该变量,后续打印语句会触发编译报错
  • 核心逻辑缺失:当前循环仅完成了逐位取余、逐位截断原数的动作,既没有对拆分出的数位做累加,也没有对累加得到的和重复执行数位拆分求和的流程
  • 输出语句格式错误:printf("Your number ", d) 没有在格式串中设置对应数值的占位符,即使变量可访问,也无法把计算结果正常打印

可运行实现代码

按照需求的执行流程(先算所有数位和,再对和重复数位求和直到得到1-9的单个数字)编写的可运行代码如下:

#include <stdio.h>
int main(){
    int input;
    scanf("%d", &input);
    // 当数值大于等于10时,还不是目标单数字,需要重复执行求和流程
    while (input >= 10) {
        int digit_sum = 0;
        // 逐位计算当前数值的所有数位之和
        while (input > 0) {
            digit_sum += input % 10;
            input = input / 10;
        }
        // 将本轮计算得到的数位和作为下一轮的判断对象
        input = digit_sum;
    }
    printf("最终输出:%d\n", input);
    return 0;
}

效果验证

以测试用例输入12345为例,代码执行流程完全匹配预期:

  1. 第一轮数位求和:拆分出1、2、3、4、5,累加得到15
  2. 15大于等于10,进入第二轮求和:拆分出1、5,累加得到6
  3. 6属于1-9范围的单数字,循环终止,最终输出6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 21:36:03