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

C++如何实现将5位整数转换为指定格式的数字金字塔

问题解答

你问的是否需要单独提取每一位数字:是的,不管用哪种实现方式,都需要先把5个位置的数位单独提取出来再按格式拼接输出。
你自己贴的转字符串提取的实现逻辑是完全可行的,唯一可以补充优化的点是增加输入合法性校验,避免输入非5位整数时出现数组越界问题。


两种实现方案

方案1:字符串提取法(你现有实现的优化版)

直接将输入的整数转为字符串,通过下标直接获取对应位置的数位,代码简单易读,不容易出错:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
    int num; 
    string str; 
    cout << "Type a 5-digit number: ";
    cin >> num;
    // 输入合法性校验
    if (num < 10000 || num > 99999) {
        cout << "输入不是合法的5位整数" << endl;
        return 1;
    }
    stringstream ss;  
    ss << num;  
    ss >> str;  

    char x0 = str[4];
    char x1 = str[3];
    char x2 = str[2];
    char x3 = str[1];
    char x4 = str[0];
  
    cout << "  " << x2 << endl;
    cout << " " << x3 << x2 << x1 << endl;
    cout << x4 << x3 << x2 << x1 << x0 << endl;
    return 0;
}

方案2:数学运算提取法

不需要引入字符串相关库,直接用整数除法和取余运算提取每一位:

#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "Type a 5-digit number: ";
    cin >> num;
    if (num < 10000 || num > 99999) {
        cout << "输入不是合法的5位整数" << endl;
        return 1;
    }
    int x4 = num / 10000;
    int x3 = (num / 1000) % 10;
    int x2 = (num / 100) % 10;
    int x1 = (num / 10) % 10;
    int x0 = num % 10;

    cout << "  " << x2 << endl;
    cout << " " << x3 << x2 << x1 << endl;
    cout << x4 << x3 << x2 << x1 << x0 << endl;
    return 0;
}

两种方案输出效果完全一致,输入12345时都会输出你给出的示例效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:57:03