PTA刷题Basic篇——1024.科学计数法——Day(12)

问题描述

在这里插入图片描述
根据给定的字符串形式要求输出对应的用数字

题目分析

这个题可以用字符串来强行求解,有两种情况,一种是指数为正,一种是指数为负。这两种情况我们需要逐个分析,主要是看字符串的倒数第三个元素是+还是-。
还有一点,就是字符串中小数点后的数字的个数与指数的比较,当指数为正时,如果指数大于个数,那么我们需要补零。如果指数小于其个数,我们不需要补零,只需要在相应的位置加上小数点即可。
如果指数为负,我们就只需要按照指数的大小,设定小数点后0的位置,例如+1.2456E-03,我们的结果应该是0.0012456,所以小数点一定在第一个0后面,后面补上的0的个数为指数-1.

代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
 string a="",b="";
 cin>>a;
 if(a[0]=='-')
 {
  cout<<"-";
 }
 long long int Ewei=0;
 for(int i=1;i<a.length();i++)
 {
  if(a[i]=='E')
   Ewei=i;
 }
 for(int i=Ewei+2;i<a.length();i++)
        b+=a[i];
 long long int zhishu=0;
 //将指数的字符串转化为int整数类型
 zhishu=stoi(b);
 if(a[Ewei+1]=='-')
 {
  cout<<"0.";
  for(int i=0;i<zhishu-1;i++)
   cout<<"0";
  cout<<a[1];
  for(int i=3;i<Ewei;i++)
   cout<<a[i];
  }
  else
  {
        int xiaoshu=Ewei-2;
        cout<<a[1];
        if(Ewei-3>zhishu)
        {
            for(int i=3;i<3+zhishu;i++)
             cout<<a[i];
            cout<<".";
            for(int i=3+zhishu;i<Ewei;i++)
                cout<<a[i];
        }
        else
        {
            for(int i=3;i<Ewei;i++)
                cout<<a[i];
        }
        for(int i=0;i<=zhishu-xiaoshu;i++)
            cout<<"0";
     }
  return 0;
}

答题用时17min
Q24——finish√

发布了60 篇原创文章 · 获赞 2 · 访问量 1038

猜你喜欢

转载自blog.csdn.net/weixin_44755413/article/details/105614062