70分,求助蒟(lao)蒻(da)

P1307 [NOIP2011 普及组] 数字反转

zzx20120619 @ 2024-10-20 12:00:52

上代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string a;
    getline(a);
    if(a[0]=='+'||a[0]=='-'){
        cout<<a[0];
        for(int i=a.size()-1;i>=1;i--){
            if(a[i]=='0'&&i==1){
                continue;
            }else{
                cout<<a[i];
            }
        }
    }else{
        for(int i=a.size()-1;i>=0;i--){
            if(a[i]=='0'&&i==0){
                continue;
            }else{
                cout<<a[i];
            }
        }
    }
    return 0;
}

求调,必关。(顺便能不能分享点冲刺csp-j的题,本人正在冲刺)


by chenxi2009 @ 2024-10-20 12:08:20

@zzx20120619 不知道你判 0 的程序在干什么。要去掉前导零但是你怎么把最后的 $0 给去掉了?


by chenxi2009 @ 2024-10-20 12:09:20

@zzx20120619 正确做法是开一个 bool 变量记录是否打印过非零数字,打印过了才会输出 0,否则遇到 0 不输出。


by zzx20120619 @ 2024-10-20 12:09:34

哦,好像是的。


by zzx20120619 @ 2024-10-20 12:12:37

@chenxi2009 但是不是只要判断是不是前导零就行了吗?


by zzx20120619 @ 2024-10-20 12:13:43

就是他的位置在不在第一个。


by chenxi2009 @ 2024-10-20 12:14:42

@zzx20120619 有没有可能有两个 0?是判断输出的前导零不是输入的前导零。


by chenxi2009 @ 2024-10-20 12:17:27

@zzx20120619 判零是对的,但是可能开头有不止一个 0,而且你判断的是原数字的开头,没有判断输出字符串的开头,举个例子:5300,正确输出:35,你的输出:0035


by zzx20120619 @ 2024-10-20 12:53:36

@chenxi2009 哦。知道了,谢谢帮助。


by zzx20120619 @ 2024-10-20 12:56:38

@chenxi2009 一百分了,但是最后那个测试点还是没过。


by chenxi2009 @ 2024-10-20 13:08:02

@zzx20120619 代码再发我一下。


| 下一页