C++求助

P1307 [NOIP2011 普及组] 数字反转

Mark_666 @ 2022-05-25 15:53:15

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    int pd=0;
    int iiii=0;
    cin>>a;
    int len=a.size();
    string b;
    int j=len-1;
    for(int i=0;i<len;i++)
    {
        if(a[i]=='-')
        {
            b[i]='-';
            pd=1;
        }
        if(a[i]>='0'&&a[i]<='9')
        {
                b[len]=a[i];
        }
        j--;
    }
    if(b[1]==0&&pd==1)
        b[1]='.';
    if(b[0]==0&&pd!=1)
        b[0]='.';
    for(int i=0;i<len;i++)
    {
        if(b[i]>=1&&b[i]<=9||b[i]=='-')
            cout<<b[i];
    }
    return 0;
}

我感觉写的代码怪怪的


by Mark_666 @ 2022-05-25 20:27:36

@天南星魔芋 啊,这个怎么改。。。


by 天南星魔芋 @ 2022-05-25 20:29:48

@Mark_666 额,是你把所有 0 全不输出的结果吧


by 天南星魔芋 @ 2022-05-25 20:36:58

@Mark_666 稍微改了一下

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    int pd=0;
    int iiii=0;
    cin>>a;
    int len=a.size();
    string b;
    int j=len-1;
    for(int i=0;i<len;i++)
    {
        if(a[i]=='-')
        {
            b[i]='-';
            pd=1;
        }
        if(a[i]>='0'&&a[i]<='9')
        {
                b[j]=a[i];
        }
        j--;
    }
    if(b[1]==0&&pd==1)
        b[1]='.';
    if(b[0]==0&&pd!=1)
        b[0]='.';
    if(pd==1)
        cout<<'-';
        int awa=0;//去前导零
    for(int i=0;i<len;i++)
    {
        if(b[i]!='0')awa=1;//有输出不为0的数
        if(b[i]=='0'&&awa==1)cout<<b[i];
        else if(b[i]>'0'&&b[i]<='9')
            cout<<b[i];
    }
    if(awa==0)cout<<0;//没有输出时,补上输出
    return 0;
}

by Mark_666 @ 2022-05-25 20:52:50

@天南星魔芋 NB!!!!


上一页 |