QwQ,15分求助!按题意硬推的a……
查看原帖
QwQ,15分求助!按题意硬推的a……
935012
Max6700楼主2023/5/25 22:04
#include<bits/stdc++.h>
using namespace std;

string s;

string A,B;//前半段和后半段

int zt=1;//1==123,2==.,3==%,4==/
int xb;//下标

int zh(string n)//普通的数字翻转
{
    int a=0;
    for(int i=n.length()-1;i>=0;i--)
    {
        a=a*10+(n[i]-'0');
    }
    return a;
}

int zh2(string n)//小数点后抹0的翻转
{
    int a=0;
    for(int i=n.length()-1;i>=0;i--)
    {
        a=a*10+(n[i]-'0');
    }
    while(a%10==0 && a!=0)
        a/=10;
    return a;
}

int main(){
    
    cin>>s;
    
    for(int i=0;i<s.length();i++)
    {
        A+=s[i];//去前半段,若全为数字,则没有后半段
        if(s[i]=='.')//为小数则调出循环,接下半段
        {
            zt=2;
            xb=i;
            break;
        }
        else if(s[i]=='%')//浅浅记一下
        {
            zt=3;
        }
        else if(s[i]=='/')//分数同小数
        {
            zt=4;
            xb=i;
            break;
        }
    }
    if(zt==2)//小数
    {
        for(int i=xb+1;i<s.length();i++)
            B+=s[i];
        
        cout<<zh(A)<<"."<<zh2(B);
    }
    else if(zt==3)//百分数
    {
        cout<<zh(A)<<"%";
    }
    else if(zt==4)//分数
    {
        for(int i=xb+1;i<s.length();i++)
            B+=s[i];
        
        cout<<zh(A)<<"/"<<zh(B);
    }
    else//普通数字
    {
        cout<<zh(A);
    }
    
    return 0;//不怎么完美的结尾
}
2023/5/25 22:04
加载中...