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

题意:

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

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 string s;
 5 int ans2[10007];
 6 int main(){
 7     ios::sync_with_stdio(false);
 8     cin.tie(NULL);
 9     cout.tie(NULL);
10     cin>>s;
11     int n=s.size();
12     if(s[0]=='-')
13         cout<<'-';
14     int pos=3;
15     int cnt2=0;
16     int ans=s[1]-'0';
17     for(int i=pos;i<n;++i){
18         if(s[i]=='E'){
19             pos=i+1;
20             break;
21         }
22         ans2[++cnt2]=s[i]-'0';
23     }
24     int flag=0;
25     if(s[pos]=='-')
26         flag=1;
27     ++pos;
28     int num=0;
29     for(int i=pos;i<n;++i){
30         num*=10;
31         num+=s[i]-'0';
32     }
33     if(flag){
34         cout<<0<<'.';
35         for(int i=1;i<num;++i)
36             cout<<0;
37         cout<<ans;
38         for(int i=1;i<=cnt2;++i)
39             cout<<ans2[i];
40     }
41     else{
42         int num2=0;
43         cout<<ans;
44         int tamp=0;
45         for(tamp=1;tamp<=cnt2&&num2<num;++tamp,++num2)
46             cout<<ans2[tamp];
47         if(tamp>cnt2)
48             for(int i=1;i<=num-num2;++i)
49                 cout<<0;
50         else{
51             cout<<'.';
52             for(int i=tamp;i<=cnt2;++i)
53                 cout<<ans2[i];
54         }
55     }
56     return 0;
57 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11804593.html