【PAT甲级】1073 Scientific Notation (20 分)

题意:

输入科学计数法输出它表示的数字。

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
string s;
int ans2[10007];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>s;
int n=s.size();
if(s[0]=='-')
cout<<'-';
int pos=3;
int cnt2=0;
int ans=s[1]-'0';
for(int i=pos;i<n;++i){
if(s[i]=='E'){
pos=i+1;
break;
}
ans2[++cnt2]=s[i]-'0';
}
int flag=0;
if(s[pos]=='-')
flag=1;
++pos;
int num=0;
for(int i=pos;i<n;++i){
num*=10;
num+=s[i]-'0';
}
if(flag){
cout<<0<<'.';
for(int i=1;i<num;++i)
cout<<0;
cout<<ans;
for(int i=1;i<=cnt2;++i)
cout<<ans2[i];
}
else{
int num2=0;
cout<<ans;
int tamp=0;
for(tamp=1;tamp<=cnt2&&num2<num;++tamp,++num2)
cout<<ans2[tamp];
if(tamp>cnt2)
for(int i=1;i<=num-num2;++i)
cout<<0;
else{
cout<<'.';
for(int i=tamp;i<=cnt2;++i)
cout<<ans2[i];
}
}
return 0;
}

猜你喜欢

转载自www.cnblogs.com/ldudxy/p/11804593.html
今日推荐