A1073

科学计数法转化为普通表示。

需要想清楚指数的符号以及0和小数点的位置及个数。

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 int main(){
 5     string str;
 6     cin>>str;
 7     int len=str.length();
 8     if(str[0]=='-') printf("-");
 9     
10     int pos=0;
11     while(str[pos]!='E'){
12         pos++;
13     }
14     int exp=0;//exp存放指数,先不考虑正负 
15     for(int i=pos+2;i<len;i++){
16         exp=exp*10+(str[i]-'0'); 
17     }
18     if(exp==0){//判断指数为0的情况 
19         for(int i=1;i<pos;i++){
20             printf("%c",str[i]);
21         }
22     }
23     if(str[pos+1]=='-'){//如果指数为负 
24         printf("0.");
25         for(int i=0;i<exp-1;i++){
26             printf("0");
27         } 
28         printf("%c",str[1]);
29         for(int i=3;i<pos;i++){
30             printf("%c",str[i]);
31         }
32     }
33     else{//如果指数为正 
34         for(int i=1;i<pos;i++){
35             if(str[i]=='.') continue;
36             printf("%c",str[i]);
37             if(i==exp+2&&pos-3!=exp){
38                 printf(".");
39             }
40         } 
41         for(int i=0;i<exp-(pos-3);i++){
42             printf("0");
43         }
44     }
45     return 0;
46 }
原文地址:https://www.cnblogs.com/Lynn-2019/p/12111430.html