1024 科学计数法
解决代码:
写了好久,通过这道题,提取数据层数越多,也就是设置的中间变量越多,最后的错误越难以检查,应该认清问题的本质,用少的变量分出最有用的数据,错误也方便检查。
#include<bits/stdc++.h>
using namespace std;
int main(){
string str,cmp;
cin>>str;
if(str[0]=='-') cout<<'-';
int len=0;
for(int i=0;i<str.size();i++){
if(str[i]=='E'){
cmp=str.substr(i+1);
str=str.substr(1,i-1);
break;
}
}
int exp=stoi(cmp);
if(exp>=0){
cout<<str[0];
str=str.substr(2);
if(str.size()>exp){
for(int i=0;i<str.size();i++){
cout<<str[i];
if(i+1==exp) cout<<'.';
}
}else{
for(int i=0;i<str.size();i++) cout<<str[i];
for(int i=0;i<exp-str.size();i++) cout<<'0';
}
}else{
exp=abs(exp);
cout<<"0.";
for(int i=1;i<exp;i++) cout<<'0';
for(int i=0;i<str.size();i++){
if(str[i]=='.') continue;
cout<<str[i];
}
}
return 0;
}
如有测试点不过,请参考这篇博客:1024 科学计数法(C语言)测试点4详解