解法1
字符串形式读入
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int main () {
char a[1000009];
scanf ("%s",&a);
//以字符串形式读入
int i,j,k,l;
l=strlen(a);
if (a[0] == '-') printf ("-");
for (i = l-1;i >= 0;i--){
//将数分为末尾有0的和没0的
//对末尾有0的处理,遍历到非0处
if (a[i] == '0'&&i == l-1) {
for (j = l-2;j >= 0;j--){
if (a[j] != '0') {
printf("%c",a[j]);
i=j;
break;
}
}
}
//如此一来再将数分为负数与正数
else {
if (a[0] != '-')printf ("%c",a[i]);
//正数正常输出
else {
//负数仅i=0时跳过,其余时候正常输出
if (i == 0) continue;
printf ("%c",a[i]);
}
}
}
return 0;
}
解法二
数字形式读入
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main (){
int a,sum=0;
scanf ("%d",&a);
//读入a,因为数字范围是+-1e10 ,所以int够用
while (a){
sum=sum*10+a%10;
//取余就是得到最末尾的数
a/=10;
}
printf ("%d",sum);
//输出即可
return 0;
}