代码如下(写de有点乱):
#include <bits/stdc++.h> //万能头文件,不需要多说什么
using namespace std;
void integer(string str){//处理整数
reverse(str.begin(),str.end());
int i=0;
while(i<str.size()-1&&str[i]=='0') i++;
for(i;i<str.size();i++) cout<<str[i];
}
void float_double(string str){//处理小数
int pos=str.find(".");
string str1=str.substr(0,pos),str2=str.substr(pos+1,11);
reverse(str1.begin(),str1.end());reverse(str2.begin(),str2.end());
int i=0;
while(i<str1.size()-1&&str1[i]=='0') i++;
for(i;i<str1.size();i++) cout<<str1[i];
i=str2.size()-1;
cout<<'.';
while(i>1&&str2[i]=='0') i--;
for(int j=0;j<i+1;j++) cout<<str2[j];
}
void percent(string str){
str=str.substr(0,str.size()-1);
integer(str);
cout<<'%';
}
void fraction(string str){
int pos=str.find("/");
string str1=str.substr(0,pos),str2=str.substr(pos+1,11);
reverse(str1.begin(),str1.end());reverse(str2.begin(),str2.end());
int i=0;
while(i<str1.size()-1&&str1[i]=='0') i++;
for(i;i<str1.size();i++) cout<<str1[i];
i=str2.size()-1;
cout<<'/';
while(i>1&&str2[i]=='0') i--;
for(int j=0;j<i+1;j++) cout<<str2[j];
}
int main()
{
string s;
cin>>s;
int stringlenFor_s=s.size();
int pos1=s.find("."),pos2=s.find("/");
bool check2=pos1!=-1,check3=pos2!=-1,check4=s[stringlenFor_s-1]=='%',check1=(!check2)&&(!check3)&&(!check4);
if(check1)
{
integer(s);
}
else if(check2)
{
float_double(s);
}
else if(check4)
{
percent(s);
}
else if(check3)
{
fraction(s);
}
return 0;
}