0
点赞
收藏
分享

微信扫一扫

1073 Scientific Notation (20 分)

J简文 2022-02-05 阅读 28
c++
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

int main()
{
    string s1,s2;
    cin>>s1;
    int epoint;
    for(int i=0;i<s1.length();i++)
    {
        if(s1[i]=='E')
        {
            epoint=i;
            break;
        }
    }
    s2=s1.substr(1,epoint-1);
    int enumber=0;
    enumber=stoi(s1.substr(epoint+1));
    if(s1[0]=='-')
        cout<<'-';
    if(enumber<0)
    {
        cout<<"0.";
        for(int i=0;i<abs(enumber)-1;i++)
            cout<<'0';
        for(int i=1;i<epoint;i++)
        {
            if(s1[i]!='.')
                cout<<s1[i];
        }
    }
    else
    {
        cout<<s1[1];
        int i,cnt;
        for( i=3,cnt=0;i<epoint&&cnt<enumber;i++,cnt++)
        cout<<s1[i];
        if(cnt<enumber)
            for(int i=enumber-cnt;i>0;i--)
            cout<<'0';
        else
        {
            if(i!=epoint)
            {
                 cout<<'.';
                 for(i;i<epoint;i++)
                 cout<<s1[i];
            }

        }

    }
    return 0;
}

这里对substr和stoi的运用比较巧妙,注意一下。
同时,注意打印方式。当是负指数时比较好打印,为正数时先把数打印出来,如果指数更大添0,否则打印小数点后打印剩余数字

举报

相关推荐

0 条评论