当前位置:首页C++ > 正文

c++整数拆分

作者:野牛程序员:2025-11-10 18:36:08C++阅读 2254
c++整数拆分
/*
C++98 整数拆分示例
目标:将整数拆成单个数字
特性:不使用 C++11 语法(无 auto、无 range-for、无 to_string)
*/

#include <iostream>
#include <vector>
#include <string>
#include <sstream>   // 利用 stringstream 转字符串
using namespace std;

int main() {
    int n = 12345;

    /*---------------------------------
      方法一:字符串方式
      C++98 无 to_string,可用 stringstream
    ---------------------------------*/
    vector<int> v1;
    stringstream ss;
    ss << n;
    string s;
    ss >> s;

    for (size_t i = 0; i < s.size(); i++) {
        v1.push_back(s[i] - '0');
    }

    cout << "方式一: ";
    for (size_t i = 0; i < v1.size(); i++) {
        cout << v1[i] << " ";
    }
    cout << endl;


    /*---------------------------------
      方法二:数学方式(倒序)
      直接用取余与除法拆分
    ---------------------------------*/
    vector<int> v2;
    int tmp = n;
    while (tmp > 0) {
        v2.push_back(tmp % 10);
        tmp /= 10;
    }

    cout << "方式二(倒序): ";
    for (size_t i = 0; i < v2.size(); i++) {
        cout << v2[i] << " ";
    }
    cout << endl;


    /*---------------------------------
      方法三:正序
      由倒序容器反转
    ---------------------------------*/
    vector<int> v3;
    for (int i = (int)v2.size() - 1; i >= 0; i--) {
        v3.push_back(v2[i]);
    }

    cout << "方式三(正序): ";
    for (size_t i = 0; i < v3.size(); i++) {
        cout << v3[i] << " ";
    }
    cout << endl;

    return 0;
}


/*
要点:
1) C++98 无 to_string → 可用 stringstream
2) 数学方式最基础 → %10 与 /10
3) 倒序拆分 → 需要手动反转
*/


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++整数拆分
  • 相关推荐

    最新推荐

    热门点击