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

求助:如何实现逐行打印正整数的每一位十进制数字?

解决方案:逐行打印正整数的每一位

核心思路说明

要实现逐行打印正整数的每一位,%10和/10是关键操作:

  • number % 10:提取当前数字的最后一位
  • number / 10:去掉当前数字的最后一位(整数除法)

针对你遇到的循环终止问题,不需要固定循环次数,只需在number变为0时停止循环即可。下面提供三种可行的实现方式:


方式1:递归实现(最简洁)

利用递归的特性,先处理高位部分,再打印当前最低位,自然实现从高位到低位的输出:

#include <iostream>
using namespace std;

// 定义打印函数
void printDigits(int number) {
    if (number >= 10) {
        // 先递归处理除最后一位外的部分
        printDigits(number / 10);
    }
    // 打印当前最后一位
    cout << number % 10 << endl;
}

int main() {
    int num;
    cout << "输入正整数:";
    cin >> num;
    printDigits(num);
    return 0;
}

方式2:循环+权值计算(非递归,从高位到低位)

先计算数字的最高位权值,再逐位提取打印:

#include <iostream>
using namespace std;

void printDigits(int number) {
    int divisor = 1;
    // 计算最高位的权值(比如13456的权值是10000)
    while (number / divisor >= 10) {
        divisor *= 10;
    }
    // 逐位打印
    while (divisor > 0) {
        cout << (number / divisor) << endl;
        number %= divisor; // 去掉当前最高位
        divisor /= 10;     // 权值降一位
    }
}

int main() {
    int num;
    cout << "输入正整数:";
    cin >> num;
    printDigits(num);
    return 0;
}

方式3:用vector存储后反向输出

先提取所有低位存入vector,再反转后打印:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void printDigits(int number) {
    vector<int> digits;
    // 提取每一位(从低位到高位)
    while (number > 0) {
        digits.push_back(number % 10);
        number /= 10;
    }
    // 反转顺序,转为高位到低位
    reverse(digits.begin(), digits.end());
    // 逐行打印
    for (int digit : digits) {
        cout << digit << endl;
    }
}

int main() {
    int num;
    cout << "输入正整数:";
    cin >> num;
    printDigits(num);
    return 0;
}

你现有代码的问题说明

  1. vector下标越界:直接用fordivide[i] = divide时,vector是空的,没有分配空间,会导致运行错误,应该用push_back添加元素。
  2. 固定循环次数:硬写i < 5无法适配不同位数的数字,正确的终止条件是当number变为0时停止循环。
  3. 逻辑混乱:没有正确组合%10和/10来提取每一位,这两个操作需要配合循环,才能依次获取所有数字位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:56:13