四书五经 @ 2017-07-16 21:00:37
#include<iostream>
#include<string>
using namespace std;
string a;
int flag=0,k,f;
void swap(char &x,char &y)
{
int tem;
tem=x;
x=y;
y=tem;
}
int main()
{
cin>>a;
if(a[0]=='-') {flag=1;}
k=a.size();
if((k%2==0&&!flag)||(!(k%2)&&flag))
f=1;
else
f=0;
for(int i=0;(f?(i<(flag?(k-1)/2:(k/2))):(i<=(flag?(k-1)/2:(k/2))));i++)
{
if(a[i]=='-') {flag=1;continue;}
if(a[i]!='-')
{
swap(a[i],a[flag?k-i:k-i-1]);
}
}
for(int i=(flag?1:0);i<k;)
{
if(a[i]=='0')
{
a.erase(i,1);
}
else
if(a[i]<='9'&&a[i]>='1')
{break;}
}
cout<<a;
return 0;
}
by 曲潇澜 @ 2017-07-18 09:22:15
你这个太复杂了啊,其实并不用那么麻烦的
by 曲潇澜 @ 2017-07-18 09:26:55
#include<iostream>
#include<string>
using namespace std;
char x[110];
int l;
int main()
{
cin>>x;
l=strlen(x);
if(x[0]=='-') cout<<'-';
for(int i=l-1;i>0;i--)
{
if(x[i]=='0')
l--;
else
break;
}
if(x[0]=='-')
for(int i=l-1;i>1;i--) cout<<x[i];
else
for(int i=l-1;i>0;i--) cout<<x[i];
return 0;
}
by 曲潇澜 @ 2017-07-18 09:28:20
先打负号,然后把结尾多余的0去掉,最后再反向打印数字
by Legends丶Devil @ 2017-07-19 19:32:15
666