数字反转-做题报告

第二次写做题报告就还写橙题吧!

数字反转(升级版)

话不多说先给出第一次四十分的代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a;
    cin>>a;
    if(a.find('.')!=a.npos)
    {
        double sd;
        stringstream ss;
        ss<<a;
        ss>>sd;
        if(sd==0)
        {
            cout<<"0.0";
            return 0;
        }
        int s=a.find('.');
        string kkk;
        kkk=a[0];
        for(int i=1;i<s;i++)
        {
            kkk+=a[i];
        }
        string sc03;
        sc03=kkk[kkk.length()-1];
        for(int i=kkk.length()-2;i>=0;i--)
        {
            sc03+=kkk[i];
        }
        int len=sc03.length();
        while(len>1&&sc03[len]==0)len--;
        sc03+='.';
        for(int i=0;i<=len+1;i++)
        { 
            cout<<sc03[i];
        }
        string tp;
        tp=a[s+1];
        for(int i=s+2;i<a.length();i++)
        {
            tp+=a[i];
        }
        string tep;
        tep=tp[tp.length()-1];
        for(int i=tp.length()-2;i>=0;i--)
        {
            tep+=tp[i];
        }
        int le=tep.length();
        while(le>1&&tep[le]==0)le--;
        for(int i=0;i<=le;i++)
        {
            if(tep[i]!=' ')
            cout<<tep[i];
        }
        return 0;
    }
    if(a.find('/')!=a.npos)
    {
        int s=a.find('/');
        string kkk;
        kkk=a[0];
        for(int i=1;i<s;i++)
        {
            kkk+=a[i];
        }
        string sc03;
        sc03=kkk[kkk.length()-1];
        for(int i=kkk.length()-2;i>=0;i--)
        {
            sc03+=kkk[i];
        }
        int len=sc03.length();
        while(len>1&&sc03[len]==0)len--;
        stringstream ss;
        ss<<sc03;
        int p;
        ss>>p;
        if(p==0)
        {
            cout<<0;
        }
        else 
            for(int i=0;i<=len;i++)
            {
                cout<<sc03[i];
            }
        cout<<'/';
        string tp;
        tp=a[s+1];
        for(int i=s+2;i<a.length();i++)
        {
            tp+=a[i];
        }
        string tep;
        tep=tp[tp.length()-1];
        for(int i=tp.length()-2;i>=0;i--)
        {
            tep+=tp[i];
        }
        int le=tep.length();
        while(le>1&&tep[le]==0)le--;
        for(int i=0;i<=le;i++)
        {
            cout<<tep[i];
        }
        return 0;
    }
    if(a.find('%')!=a.npos)
    {
        string kkk;
        kkk=a[0];
        for(int i=1;i<a.length()-1;i++)
        {
            kkk+=a[i];
        }
        string sc03;
        sc03=kkk[kkk.length()-1];
        for(int i=kkk.length()-2;i>=0;i--)
        {
            sc03+=kkk[i];
        }
        int len=sc03.length();
        while(len>1&&sc03[len]==0)len--;
        cout<<sc03;
        cout<<'%';
        return 0;
    }
    string kkk;
    kkk=a[0];
    for(int i=1;i<a.length();i++)
    {
        kkk+=a[i];
    }
    string sc03;
    sc03=kkk[kkk.length()-1];
    for(int i=kkk.length()-2;i>=0;i--)
    {
        sc03+=kkk[i];
    }
    int len=sc03.length();
    while(len>1&&sc03[len]==0)len--;
    cout<<sc03;
}

又臭又长,很多有关零的处理都不到位

经过一番沉♂思我突♂FA♂奇♂想:如果用stringstream把字符串转成数字再进行处理的话就不用考虑零的问题了

于是乎

#include<bits/stdc++.h>
using namespace std;
#define ll unsigned long long 
int main()
{
    string a;
    cin>>a;
    if(a.find('%')!=a.npos)
    {
        string kkk1="";
        for(int i=0;i<a.length()-1;i++)
        {
            kkk1+=a[i];
        }
        stringstream p;
        p<<kkk1;
        ll po;
        p>>po;
        ll po1=0;
        while(po)
        {
            po1=po1*10+po%10;
            po/=10;
        }
        cout<<po1<<"%";
        return 0;
    }
    if(a.find('.')!=a.npos)
    {
        int s=a.find('.');
        string kkk1="",kkk2="";
        for(int i=0;i<s;i++)
        {
            kkk1+=a[i];
        }
        for(int i=s+1;i<a.length();i++)
        {
            kkk2+=a[i];
        }
        stringstream sc1,sc2;
        sc1<<kkk1;sc2<<kkk2;
        ll sc3,sc4;
        sc1>>sc3;sc2>>sc4;
        if(sc3==0)
        {
            cout<<"0.";
        }else
        {
            ll sc03=0;
            while(sc3)
            {
                sc03=sc03*10+sc3%10;
                sc3/=10;
            }
            cout<<sc03<<".";
        }
        if(sc4==0)
        {
            cout<<"0";
        }else
        {
             ll sc04=0;
            while(sc4)
            {
                sc04=sc04*10+sc4%10;
                sc4/=10;
            }
            cout<<sc04;
        }
        return 0;

    }
    if(a.find('/')!=a.npos)
    {
    int s=a.find('/');
        string kkk1="",kkk2="";
        for(int i=0;i<s;i++)
        {
            kkk1+=a[i];
        }
        for(int i=s+1;i<a.length();i++)
        {
            kkk2+=a[i];
        }
        stringstream sc1,sc2;
        sc1<<kkk1;sc2<<kkk2;
        ll sc3,sc4;
        sc1>>sc3;sc2>>sc4;
        if(sc3==0)
        {
            cout<<"0/";
        }else
        {
            ll sc03=0;
            while(sc3)
            {
                sc03=sc03*10+sc3%10;
                sc3/=10;
            }
            cout<<sc03<<"/";
        }
        if(sc4==0)
        {
            cout<<"0";
        }else
        {
             ll sc04=0;
            while(sc4)
            {
                sc04=sc04*10+sc4%10;
                sc4/=10;
            }
            cout<<sc04;
        }
        return 0;
    }
    string kkk;
    kkk="";
    for(int i=0;i<a.length();i++)
    {
        kkk+=a[i];
    }
    stringstream ss;
    ss<<kkk;
    ll sc;
    ss>>sc;
    ll sc03=0;
    while(sc)
    {
        sc03=sc03*10+sc%10;
        sc/=10;
    }
    cout<<sc03;
}

这个想了将近两天的题就这样

AC了。。。

posted @ 2018-09-15 17:38  加固文明幻景  阅读(4)  评论(0编辑  收藏  举报  来源