教你用13种方法逆序一个整数
2025-07-01 20:36:45
发布于:上海
// 这是一个C++编写代码教程,案例:逆序一个整数(这确定不是meishizhaoshi吗?)
// 输入一个三位正整数,把它逆序输出
// 方法1:string类型
# include <iostream>
# include <string>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i = s.size() - 1; i >= 0; i --) cout << s[i];
return 0;
}
// 方法2:string + reverse()函数
# include <iostream>
# include <algorithm>
# include <string>
using namespace std;
int main()
{
string s;
cin >> s;
reverse(s.begin(), s.end());
cout << s << endl;
// 也可以用索引遍历或者 for (auto i : s)
return 0;
}
// 方法3:用vector来存储
# include <iostream>
# include <vector>
using namespace std;
vector<char> vec;
int main()
{
char c;
while (cin >> c) vec.push_back(c);
for (int i = vec.size() - 1; i >= 0; i --) cout << vec[i];
return 0;
}
// 方法4:vector + reverse()函数
# include <iostream>
# include <algorithm>
# include <vector>
using namespace std;
vector<char> vec;
int main()
{
char c;
while (cin >> c) vec.push_back(c);
reverse(c);
for (int i = 0; i < vec.size(); i ++) cout << vec[i];
// 也可以用迭代器访问或者 for (auto i : vec)
return 0;
}
// 方法5:用vector模拟栈操作
# include <iostream>
# include <vector>
using namespace std;
vector<char> vec;
int main()
{
char c;
while (cin >> c) vec.push_back(c);
while (! vec.empty())
{
cout << vec.back();
vec.pop_back();
}
return 0;
}
// 方法6:使用真真切切的stack来执行
# include <iostream>
# include <stack>
using namespace std;
stack<char> stk;
int main()
{
char c;
while (cin >> c) stk.push(c);
while (! stk.empty())
{
cout << stk.top();
stk.pop();
}
return 0;
}
// 方法7:既然queue模拟不了,那就使用deque,stack的底层逻辑
# include <iostream>
# include <deque>
using namespace std;
deque<char> dq;
int main()
{
char c;
while (cin >> c) dq.push_front(c);
while (! dq.empty())
{
cout << dq.front();
dq.pop_front();
}
return 0;
}
// 方法8:deque除了在前面放入,还可以在后面放入
# include <iostream>
# include <deque>
using namespace std;
deque<char> dq;
int main()
{
char c;
while (cin >> c) dq.push_back(c);
while (! dq.empty())
{
cout << dq.back();
dq.pop_back();
}
return 0;
}
// 方法9:使用deque可以使用索引和迭代器遍历
# include <iostream>
# include <deque>
using namespace std;
deque<char> dq;
int main()
{
char c;
while (cin >> c) dq.push_front(c);
for (deque<char> :: iterator it = dq.begin(); it != dq.end(); it ++) cout << *it;
return 0;
}
// 方法10:char类型数组类似于字符串,用它代替
# include <iostream>
using namespace std;
int main()
{
char num[4]; // 已知该数字为三位数,长度为3,给\0额外增加空间
cin >> num;
cout << num[2] << num[1] << num[0];
// 也可以用for来遍历
return 0;
}
// 方法11:array也可以使用reverse()
# include <iostream>
# include <algorithm>
using namespace std;
int main()
{
char num[4];
cin >> num;
reverse(num, num + 3); // num[3]为\0,不需要反转
cout << num;
return 0;
}
// 方法12:最朴素的数学方法
# include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << n % 10 << n / 10 % 10 << n / 100;
return 0;
}
// 方法13:真正的数学算法
# include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while (n)
{
cout << n % 10;
n /= 10;
}
return 0;
}
全部评论 2
不是哥们你没去前导0啊
2025-07-04 来自 广东
0送上一个赞
2025-07-04 来自 浙江
0
有帮助,赞一个