PAT 1024 科学计数法 (字符串)

 不用纠结怎么把输入串变成结果串,一部分一部分输出即可。(时间不够写一部分是一部分,+的情况10分-的情况6分,还漏了4分有空来讨论一下)

 1 #include<bits/stdc++.h> 
 2 using namespace std;
 3 const int maxn=10010;
 4 int main(){
 5     char a[maxn];
 6     scanf("%s",a);
 7     if(a[0]=='-') printf("-");
 8     int len=strlen(a);
 9     int pos=0;
10     for(;pos<len;pos++){
11         if(a[pos]=='E') break;
12     }
13     int index=(a[len-1]-'0')+(a[len-2]-'0')*10;//
14     int dpos;
15     if(a[pos+1]=='+'){
16         for(int i=1;i<pos;i++){
17             if(a[i]!='.') printf("%c",a[i]); 
18             if(a[i]=='.') dpos=i;
19         }
20         for(int i=0;i<(index-(pos-dpos-1));i++){
21             printf("0");//不需要补0的情况没讨论 
22         }
23     }//10分 
24     else if(a[pos+1]=='-'){
25         printf("0.");
26         for(int i=0;i<index-1;i++){
27             printf("0");
28         }
29         for(int i=1;i<pos;i++){
30             if(a[i]!='.') printf("%c",a[i]); 
31         }
32     } //16分 
33 } 

猜你喜欢

转载自www.cnblogs.com/taiga/p/12663898.html