如果是明确的三位数,那么很容易实现,使用取余数和整除即可分离出每一位,代码如下:
#include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
cout<<(a%10)*100+(a/10%10)*10+(a/100)<<endl;
return 0;
}
但是如果不知道是多少位,只知道是整数的话,那么我们可以定义一个递归函数来实现,只是输出的话,代码如下:
#include<iostream>
using namespace std;
void out(int a)
{
if(a<10)
cout<<a<<endl;
else
{
cout<<a%10;
a=a/10;
out(a);
}
}
int main()
{
long a;
cin>>a;
out(a);
return 0;
}
还有一种方法就是使用队列,它的特性是先入队的先出队,头文件为#include<queue>代码如下:
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int>number;
int a;
int sum=0;
cin>>a;
while(a>0)
{
number.push(a%10);
a=a/10;
}
while(!number.empty())
{
sum=sum*10+number.front();
number.pop();
}
cout<<sum<<endl;
return 0;
}
如果是字符串,直接把它从后面遍历如下:
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<int>ch;
string s;
cin>>s;
for(int i=s.length()-1;i>=0;i--)
cout<<s[i];
cout<<endl;
return 0;
}
或者改变字符串的值,对称式的一一交换,代码如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
char c;
cin>>s;
for(int j=0;j<=s.length()/2-1;j++)
{
c=s[j];
s[j]=s[s.length()-1-j];
s[s.length()-1-j]=c;
}
cout<<s<<endl;
return 0;
}
如果使用栈来处理,代码如下:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
string s;
stack<char>ch;
cin>>s;
for(int j=0;j<=s.length()-1;j++)
{
ch.push(s[j]);
}
for( j=0;j<=s.length()-1;j++)
{
cout<<ch.top();
ch.pop();
}
cout<<endl;
return 0;
}
此文章仅代表自己(本菜鸟)学习积累记录,或者学习笔记,如有侵权,请联系作者删除。人无完人,文章也一样,文笔稚嫩,在下不才,勿喷,如果有错误之处,还望指出,感激不尽~
技术之路不在一时,山高水长,纵使缓慢,驰而不息。
公众号:秦怀杂货店