1024 科学计数法 (20 分)

题目链接:1024 科学计数法 (20 分)

 

本题考查字符串处理,因此我的输入输出均按照字符串来处理。

解题思路:首先用一个变量存储该数的正负。定义三个整型变量integer,dec和exp分别存储该数的整数部分,小数部分和指数部分。

这样分开处理的好处时统一处理数据的类型,不用考虑小数点。其它的按照题目要求编写即可。注意最后输出的字符串前面要加上数

的正负号。

 

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int string_to_int(string str)
 5 {
 6     stringstream ss;
 7     int ans;
 8     ss<<str;
 9     ss>>ans;
10     return ans;
11 }
12 
13 int main()
14 {
15     string s;
16     cin>>s;
17     string integer,dec,str,sign;
18     int exp;
19     sign=s[0];
20     integer=s.substr(1,1);        //截取整数 
21     dec=s.substr(3,s.find("E")-3);    //截取小数 
22     str=s.substr(s.find("E")+1);
23     exp=string_to_int(str);            //截取指数并转化为int 
24     if(exp<0)
25     {
26         for(;exp!=0;exp++)
27             integer.insert(0,"0");
28         integer.insert(1,".");
29     }
30     else
31     {
32         if(exp<dec.length()) 
33             dec.insert(exp,".");
34         else
35         {
36             for(;dec.length()!=exp;)
37                 dec+="0";
38         }
39     } 
40     string ans=integer+dec;
41     if(sign!="+")
42         ans.insert(0,sign);
43     cout<<ans<<endl;    
44     return 0;
45 } 

 

posted @ 2019-01-02 22:09  focusDing  阅读(270)  评论(0编辑  收藏  举报