描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1: 123 样例 #2: -380
样例输出
样例 #1: 321 样例 #2: -83
解析:
n%10得到当前n的最后一位数;
n/10将当前n右移一位;
通过循环做以上两步可以实现从n的尾部开始输出到头部。
注意:
输出的数字必须从不是0开始,所以一开始要去除尾部的0,一直右移到第一个尾部不是0的数字;
代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n; //输入的数保存在n
int m=0; //用m来记录当前n%10的值
if( n == 0 )
cout << 0 << endl; //如果输入的数是0,则直接输出0
else
{
if( n < 0 ) //输入的数为负数时,输出“-”,将负数转换为正数操作
{
n = -n;
cout << "-";
}
while( m==0 ) //处理尾部0
{
m = n%10; //用m记录当前n的尾部数字
if( m==0 ) //当且仅当m的值不为0时,表示此时尾部不再是0,进行下一步
n = n/10;
}
while( n!=0 ) //当n为0时,表示此时所有数字已经输出,输出结束
{
m = n%10; //m记录当前n的最后一位,进行输出
n = n/10; //n右移一位
cout << m;
}
}
return 0;
}