问题描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2) 。
输入格式
输入共 1 行,一个整数 N。
输出格式
输出共 1 行,一个整数,表示反转后的新数。
样例输入
123
输出样例
321
样例输入
-380
样例输出
-83
数据规模和约定
-1,000,000,000 ≤ N≤1,000,000,000。
注:本题关键在于负号的处理以及末尾如果是0如何处理。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int n, i, count=0, b[12], sum=0;
cin>>n;
int a = abs(n);//取n的绝对值
for(i=0; ;i++){
b[i] = a % 10;//b[i]用来存每一位的数字
a = a / 10;
count++;//count用来统计数字有多少位
if(a==0){
break;
}
}
//负数的话需在前面加负号
if(n<0){
cout<<"-";
}
//因为最后的输出也是一个数字,所以应该将每一位累加,直接倒着输首位会出现0
for(i=0;i<count;i++){
sum+=b[i]*pow(10, count-i-1);
}
cout<<sum;
return 0;
}