题目描述
【题目描述】
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
【输入】
输入共 1 行,一个整数N。
【输出】
输出共 1 行,一个整数,表示反转后的新数。
样例
【输入样例】
123
【输出样例】
321
【输入输出样例 2】
输入:-380
输出:-83
【数据范围】
-1,000,000,000 ≤ N≤ 1,000,000,000
这道题分两种情况:n<0和n>0
然后分别提取出个十百千位,最后进行反转操作
整个程序比较简洁,就是处理负数有点麻烦
C++ 代码
#include<iostream>
using namespace std;
long long n;
int a[15];
int main(){
cin>>n;
if(n<0){
int i=0;
while(n<0){
a[i]=n%10;
n/=10;
i++;
}
bool flag=true;
cout<<"-";
for(int j=0;j<i;j++){
if(flag && a[j]==0)
continue;
else cout<<a[j]-(a[j]*2);
flag=false;
}
}
else{
int i=0;
while(n>0){
a[i]=n%10;
n/=10;
i++;
}
bool flag=true;
for(int j=0;j<i;j++){
if(flag && a[j]==0)
continue;
else cout<<a[j];
flag=false;
}
}
}