60分,求大佬!
查看原帖
60分,求大佬!
936111
baibaobao666楼主2023/3/14 19:51
#include <iostream>
#include <string>
using namespace std;

string s,ans;

char shape;

string change(string s)
{
    string a;
    bool h=false;
    for(int i = s.size()-1;i >= 0;i--)
    {
        if(s[i] != '0')
        {
            h = true;
        }
        if(h == false && s[i] == '0')
        h = false;
        else
        a += s[i];
    }
    return a;
}

string ichange(string s)
{
    string a = change(s);
    int cur=0;
    bool h = false;
    for(int i = a.size()-1;i >= 0;i--)
    {
        if(a[i] != '0' && h == false)
        {
            h = true;
            cur = i+1;
            break;
        }
    }
    return a.substr(0,cur);
}

int main()
{
    cin >> s;
    int mod=0,cur=0;
    if(s[s.size()-1] == '%')
    {
        mod = 2;
        cur = s.size()-1;
        shape='%';
    }
    else
    {
        for(int i = 0;i < s.size();i++)
        {
            if(s[i] == '.' || s[i] == '/')
            {
                mod = 1;
                cur = i;
                if(s[i] == '.')
                {
                shape='.';
                mod = 1;
                }
                else
                {
                shape='/';
                mod = 3;
                }
                break;
            }
        }
    }
    if(mod==0)
    ans = change(s);
    else if(mod == 3)
    ans = change(s.substr(0,cur-1)) + shape + change(s.substr(cur+1));
    else if(mod == 2)
    ans = change(s.substr(0,s.size()-1)) + shape;
    else if(mod == 1)
    ans = change(s.substr(0,cur-1)) + shape + ichange(s.substr(cur+1));
    if(ans == "." || ans == "")
    {
        ans = '0';
    }
    cout << ans;
    
    return 0;
}

change是转化用的 ichange是转化小数位用的 我设置了一些防0装置 但是... 还是60分呀!!!啊啊啊 qwq

2023/3/14 19:51
加载中...