1. 程式人生 > >PAT 甲級 1073 Scientific Notation

PAT 甲級 1073 Scientific Notation

字串與數字的轉換以及字串的擷取、查詢、插入和刪除

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

int main() {
    string s;
    cin >> s;
    int posE = s.find('E');
    string n = s.substr(0, posE);
    string e = s.substr(posE + 1);

    if (n[0] == '-')
        cout << '-'
; n.erase(0, 1); int ei = stoi(e); int posDot = n.find('.'); if (ei < 0) { n.erase(posDot, 1); int beg0 = abs(ei); // 要在字串前插入的0的個數 string s0(beg0, '0'); n.insert(0, s0); n.insert(1, "."); // 插入小數點,注意只能插入字串 } else if (ei > 0) { int end0 = ei - (n.size() - 1
- posDot); // 要在字串末尾插入的0的個數 if (end0 > 0) { string s0(end0, '0'); n.insert(n.size(), s0); // 在末尾插入0,注意是 n.size() ,不是 n.size() - 1 } n.erase(posDot, 1); if (posDot + ei != n.size()) { n.insert(posDot + ei, "."); // 最後一位不是小數點就插入小數點 } } cout
<< n; return 0; }