星空's Blog
星空's Blog
PAT-A1073 Scientific Notation

原题

Scientific Notation (20 分)

题解

首先处理输入,将对应的参数解析出来
然后根据E后的数字,分为3种情况

大于0

再分2种情况,需要补0和不需要补0,eg: +1.234E1 +1.234E4

小于0

因为科学计数法整数位只有1位,所以必定是0.xxx
输出"0."后补0,然后输出数值

等于0

直接输出数值部分

代码

#include <iostream>
#include <string>
using namespace std;

int main(void) {
    string in;
    cin >> in;
    if (in[0] == '-') {
        cout << "-";
    }
    in = in.substr(1);
    string p = in.substr(in.find('E') + 1);
    int pp = stoi(p);
    in = in.substr(0,in.find('E'));
    if (pp > 0) {
        //E+ 1.234
        if (pp > in.length() - 3) {
            cout << in[0] << in.substr(2);
            for (int i = 0;i < pp - in.length() + 2;i++) {
                cout << "0";
            }
            cout << endl;
        } else {
            cout << in[0];
            for (int i = 2,j = 0;i < in.length();i++,j++) {
                if (j == pp) {
                    cout << ".";
                }
                cout << in[i];
            }
            cout << endl;
        }

    } else if (pp < 0){
        //E-
        pp = -pp;
        cout << "0.";
        for (int i = 0;i < pp - 1;i++) {
            cout << "0";
        }
        cout << in[0] << in.substr(2) << endl;
    } else {
        //E0
        cout << in;
    }
    return 0;
}
所有文章禁止转载。
代码仅供参考
为了对抗广告机器人,首次留言将会被审核
首页      算法学习      PAT-A      PAT-A1073 Scientific Notation
https://secure.gravatar.com/avatar/271861a23dcdde929d3ee8cb8c04f854?s=256&d=monsterid&r=g

星空

文章作者

发表评论

textsms
account_circle
email

星空's Blog

PAT-A1073 Scientific Notation
原题 Scientific Notation (20 分) 题解 首先处理输入,将对应的参数解析出来 然后根据E后的数字,分为3种情况 大于0 再分2种情况,需要补0和不需要补0,eg: +1.234E1 +1.234E4 小于0 因…
扫描二维码继续阅读
2019-08-29
分类
标签云