1024. 科学计数法 (20)

来源:互联网 发布:mac 安装anywhere 编辑:程序博客网 时间:2024/06/01 23:38

题目描述

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

输入格式:

每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。

输出格式:

对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

输入样例1:
+1.23400E-03
输出样例1:
0.00123400
输入样例2:
-1.2E+10
输出样例2:
-12000000000

C++代码

#include<bits/stdc++.h>using namespace std;int main(){  string s;  while(cin>>s){    char a[10000+10];    int E,dot;    if(s[0]=='-')  cout<<"-";    for(int i=1;i<s.length();i++){      if(s[i]=='.')  dot=i-1;      if(s[i]=='E')  E=i;    }    int m=0;    for(int i=1;i<E;i++)      if(s[i]!='.')        a[m++]=s[i];    int js=0;    for(int i=E+2;i<s.length();i++)      js=js*10+s[i]-'0';    if(s[E+1]=='-'){      if(dot<js){        cout<<"0.";        for(int i=0;i<js-dot;i++)  cout<<0;        for(int i=0;i<m;i++)  cout<<a[i];      }else{        for(int i=0;i<m;i++){          if(i==dot-js)  cout<<"."<<a[i];          else  cout<<a[i];        }      }    }else{      if(m-dot>js){        for(int i=0;i<m;i++)          if(i==dot+js)  cout<<"."<<a[i];          else  cout<<a[i];      }else{        if(a[0]!='0')  cout<<a[0];        for(int i=1;i<m;i++){            cout<<a[i];        }          for(int i=0;i<js-(m-dot);i++)  cout<<0;      }    }    cout<<endl;  }  return 0;}
原创粉丝点击