解题思路:先计算出' . '和' E '的位置,然后计算出指数的大小,然后根据指数大小来进行输出
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int index=-1,flag=-1;
cin>>s;
if(s[0]=='-')
cout<<'-';
for(int i=1;i<s.size();i++){
if(s[i]=='.')
flag=i;
if(s[i]=='E'){
index=i;
break;
}
}
int zhishu=stoi(s.substr(index+1));
if(zhishu<0){
cout<<"0.";
for(int i=1;i<=abs(zhishu+1);i++)
cout<<"0";
for(int i=1;i<index;i++){
if(s[i]!='.')
cout<<s[i];
}
}else{
if(zhishu>=(index-flag-1)){
for(int i=1;i<index;i++){
if(s[i]!='.')
cout<<s[i];
}
for(int i=1;i<=zhishu-index+flag+1;i++)
cout<<"0";
}
else{
for(int i=1;i<=2+index-flag-zhishu;i++){
if(s[i]!='.')
cout<<s[i];
}
cout<<'.';
for(int i=3+index-flag-zhishu;i<index;i++)
cout<<s[i];
}
}
}
运行结果:
![](https://img-blog.csdnimg.cn/60fcd1145473411a95f195ff998ff4ed.png)