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 } 

 

转载于:https://www.cnblogs.com/ManOK/p/10211632.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值