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

C++使用do while循环实现输入数字输出各位数及总和问题求助

现有代码的问题点

  • 变量sum未初始化就直接累加,属于未定义行为,部分编译器运行时会得到随机的求和结果,需要初始化为0。
  • 现有逻辑通过%10取余得到的是从低位到高位的数字(输入123时依次得到3、2、1),直接输出会是逆序,无法得到要求的正序各位数字。

修改思路

先计算输入数字的最高位对应的除数(比如123对应的除数是100),之后每次用数字除以除数得到当前最高位输出,再将数字对除数取余去掉最高位,除数除以10,直到除数为0,全程可通过要求的while/do while循环实现。


修改后完整代码

#include <iostream>
using namespace std;

int main()
{
    cout << "Enter a number: ";
    int input_num, sum = 0;
    cin >> input_num;
    cout << endl;

    // 临时变量保存原始输入,避免修改原始值影响后续计算
    int temp = input_num;
    int divisor = 1;

    // 计算最高位对应的除数
    while (temp / 10 > 0) {
        divisor *= 10;
        temp /= 10;
    }

    temp = input_num;
    // 逐位输出正序数字,同时累加求和
    do {
        int current = temp / divisor;
        cout << current << " ";
        sum += current;
        temp = temp % divisor;
        divisor /= 10;
    } while (divisor > 0);

    cout << endl << "The sum is: " << sum << endl;
    return 0;
}

输入123时运行效果:先输出1 2 3 ,再输出总和6,符合需求。如果需要兼容负数输入,可在代码最开头增加判断,将输入值转为绝对值后再处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:48:04