#20过不去,求助
查看原帖
#20过不去,求助
95563
Kujo_Jotaro楼主2020/6/12 13:31
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
using namespace std;
int a[110];
int t,ts,p,tt;
string st;
void fz()
{
	for(int i=t;i>0;i--)
	{
		if(a[i]>0)ts=1;
		if(ts==0)if(a[i]==0)continue;
		cout<<a[i];
		a[i]=0;
	}
	t=0;
}
int main()
{
	cin>>st;
	if(st.size()==1){cout<<st;return 0;}//特判
	if(st=="0.0"){cout<<"0.0";return 0;}//特判
	for(int i=0;i<st.size();i++)
	{
		if(st[i]=='.'){p=1;break;}
		if(st[i]=='%'){p=3;break;}
		if(st[i]=='/'){p=2;break;}
	}//分类
	if(p==0)
	{
		ts=0;
		for(int i=0;i<st.size();i++)
		{
			t++;
			a[t]=st[i]-48;
		}
		fz();
		return 0;
	}//整数的情况
	if(p==1)
	{
		for(int i=0;i<st.size();i++)
		{
			if(st[i]=='.')
			{
				if(t==1&&a[t]==0)
				{
					cout<<0<<".";
					continue;
				}
				ts=0;
				fz();
				cout<<'.';
				continue;
			}
			t++;
			a[t]=st[i]-48;
		}
		if(t==1&&a[t]==0)
		{
			cout<<0;
			return 0;
		}
		for(int i=1;i<=t;i++)
			if(a[i]>0){tt=i;break;}
		for(int i=t;i>=tt;i--)
			cout<<a[i];
	}//小数的情况
	if(p==2)
	{
		for(int i=0;i<st.size();i++)
		{
			if(st[i]=='/')
			{
				if(t==1&&a[t]==0)
				{
					cout<<0<<"/";
					t=0;
					continue;
				}
				ts=0;
				fz();
				cout<<'/';
				continue;
			}
			else
			{
				t++;
				a[t]=st[i]-48;
			}
		}
		ts=0;
		fz();
	}//分数的情况
	if(p==3)
	{
		for(int i=0;i<st.size();i++)
		{
			if(st[i]=='%')
			{
				if(t==1&&a[t]==0)
				{
					cout<<0;
					continue;
				}
				ts=0;
				fz();
				cout<<'%';
				return 0;
			}
			t++;
			a[t]=st[i]-48;
		}
	}//百分数的情况
	return 0;
}
2020/6/12 13:31
加载中...