输入一个 c 语言 4字节 int 范围内的数字,输出它反转后的数字。比如12345反转后是54321,-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0;
每行一个 int 范围内的数字,以 EOF 结尾。
输出反转后的数字,每行一个
注意:带着pow运算很容易很容易有误差,最好都是手写pow函数,另外比较看是否超int 可以用long long存这个数字啊,然后跟int最大值 最小值 比一下。。。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const long long big = pow(2,31) - 1;
const long long small = -pow((long long)2,31);
long long pow(int n) //手写pow函数
{
long long ans = 1;
for(int i = 1; i <= n; i++)
ans *= 10;
return ans;
}
int main()
{
char str[20];
while(~scanf("%s",str))
{
long long n = 0;
if(str[0] == '-')
{
for(int i = 1; i < strlen(str); i++)
{
n += (str[i]-'0')*pow(i-1);
// cout << i << endl;
// cout << str[i]-'0' << endl;
}
// cout << n << endl;
if(n < small) cout << 0 << endl;
else
{
cout << '-' << n << endl;
}
}
else
{
for(int i = 0; i < strlen(str); i++)
{
n += (str[i]-'0')*pow(i);
}
if(n > big) cout << 0 << endl;
else
{
cout << n << endl;
}
}
}
return 0;
}