找不出bug了嗷 求教求教

P1307 [NOIP2011 普及组] 数字反转

comcom @ 2016-10-05 11:08:11

思路想了好几遍了但不知道为什么一直错 一直都只有二十分

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
int tmp,l,j;
string s;
cin>>s;
if(s[0]==0)
{
cout<<0<<endl;
}
else if(s[0]=='-')
{
j=1;
cout<<'-';
l=s.size()-1;
for(int i=1;i<=l/2;i++)
{
tmp=s[i];
s[i]=s[l-i+1];
s[l-i+1]=s[i];
}
while(s[j]==0)
{
j++;
}
for(int i=j;i<=l;i++)
{
cout<<s[i];
}
}
else 
{
l=s.size();
j=0;
for(int i=0;i<=l/2-1;i++)
{
tmp=s[i];
s[i]=s[l-i-1];
s[l-i-1]=tmp;
}
while(s[j]==0)
{
j++;
}
for(int i=j;i<l;i++)
{
cout<<s[i];
}
}
return 0;
}

by 1jia1 @ 2016-10-05 18:31:22

孩子,把第一个if去掉@comcom


by 天·三玖 @ 2016-10-05 18:33:08

孩子,是把<<endl去掉@chenleyu


by 天·三玖 @ 2016-10-05 18:35:20

还有,你为什么要左右交换?直接倒着输出,将0去掉嘛。还有负号啊


by comcom @ 2016-10-05 18:38:37

@chenleyu

@LLCS

欸两位。。。

其实去掉之后也没什么卵用的qwq

现在找到bug了 然后换成倒着输了 主要是字符和数字的转换问题。


by 1jia1 @ 2016-10-05 19:50:56

@LLCS 我有发这句话吗?是我号被盗了吗?我赶紧改密码,新密码私信你


by white @ 2016-10-15 13:24:45

我是这样写的

#include <iostream>
using namespace std;
long n;
int main(){
    cin>>n;
    if(n==0) cout<<0<<endl;//处理特殊项0
    else{
        if(n<0){cout<<'-';n=-1*n;}//处理正负号
        while(n%10==0) n/=10;//处理低位0
        while(n){cout<<n%10;n/=10;}
    }
    return 0;
}

|