#include<cstdio> #include<iostream> #include<string> #include<sstream> using namespace std; int main (){ string s,ans=""; getline(cin,s); if (s[0]=='-') ans+=s[0]; int indexE=s.find("E"); string num=s.substr(1,indexE-1); char x=s[indexE+1]; string exp=s.substr(indexE+2,s.size()-indexE-2); stringstream ss; ss<<exp; int e; ss>>e; if (e==0){ cout<<ans<<num<<endl; return 0; } if (x=='+'){ if (e<num.size()-2){ ans=ans+num[0]+num.substr(2,e)+'.'+num.substr(e+2,num.size()-e-2); } else { ans=ans+num[0]+num.substr(2,num.size()-2); for(int i=0;i<e-num.size()+2;i++) ans+="0"; } } if (x=='-'){ ans=ans+"0."; while (e--!=1) ans+="0"; ans=ans+num[0]+num.substr(2,num.size()-2); } cout<<ans<<endl; // } 分析:和基础题一样,这次学习了一个更加简洁的方法,主要熟悉运用substr 以及sstream