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

- 上一篇:c++中n次方怎么表示
- 下一篇:C++ log 函数
