求助大佬解答错误点

P1307 [NOIP2011 普及组] 数字反转

me528963 @ 2019-09-24 00:06:30

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string n;
    char a[11];
    int i=0;
    cin>>n;
    int j=n.length();
    while(n[i])
    {
        if(n[i]>='0'&&n[i]<='9'){ a[j-1]=n[i];j--;} 
        else{
            i++;j--;
            continue;
        } 
        i++;    
    }
    if(n[0]=='-' || n[0]=='0') cout<<n[0];
    for(j=0;j<i;j++)
    {
        if(a[j]=='0')continue;
        cout<<a[j];
    }
    return 0;
}

不懂为什么只有50分...#1本地测试答案也是正确的然而却是WA...


by S1gMa @ 2019-09-24 00:42:37

首先解决第一个问题

−1,000,000,000≤N≤1,000,000,000

a数组开小第一个爆了

然后第一个text解决后,发现T 7 8 9 10全WA

下载测试点后发现你的代码自动删去0

明显这里的问题

if(a[j]=='0')continue;

然后发现你这个明显是麻烦了不用想那么多

#include <iostream>
using namespace std;
int n,k;//反转前的数和反转后的数
int main(){
    cin >> n;
    while(n){//处理完了吗
        k = k * 10 + n % 10;//k已有的值*10腾出一个零欢迎新来的小弟
        n /= 10;//凄凉啊,又有人背叛了我,扔掉已经加上的那一位
    }
    cout << k << endl;
}

上个题解参考一些千万不要抄哦


by S1gMa @ 2019-09-24 00:42:51

@me528963 本人蒟蒻


by me528963 @ 2019-09-24 08:30:25

@starry星空 大佬我是想着把数用字符数组表示所以数组a才开了那么大...另外我想问一下为什么测试点1本地过了提交却wa了 ? 后面那个去零问题感谢大佬提出


|