实现一个数的反转,即“123”,输出时变为“321”

如果是明确的三位数,那么很容易实现,使用取余数和整除即可分离出每一位,代码如下:

#include
using namespace std;
int main()
{
	int a;
	cin>>a;
	cout<<(a%10)*100+(a/10%10)*10+(a/100)<

但是如果不知道是多少位,只知道是整数的话,那么我们可以定义一个递归函数来实现,只是输出的话,代码如下:


#include
using namespace std;
void out(int a)
{
	if(a<10)
		cout<>a;
	out(a);
	return 0;
}

还有一种方法就是使用队列,它的特性是先入队的先出队,头文件为#include代码如下:


#include
#include
using namespace std;
int main()
{
	queuenumber;
	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<

如果是字符串,直接把它从后面遍历如下:


#include
#include
#include
using namespace std;
int main()
{
	stackch;
	string s;
	cin>>s;
	for(int i=s.length()-1;i>=0;i--)
		cout<


或者改变字符串的值,对称式的一一交换,代码如下:


#include
#include
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<

如果使用栈来处理,代码如下:


#include
#include
#include
using namespace std;
int main()
{
	string s;
	stackch;
	cin>>s;
	for(int j=0;j<=s.length()-1;j++)
	{
		ch.push(s[j]);
	}
	for( j=0;j<=s.length()-1;j++)
	{
		cout<


你可能感兴趣的:(实现一个数的反转,即“123”,输出时变为“321”)