PAT 甲級 1073 Scientific Notation
阿新 • • 發佈:2019-01-30
字串與數字的轉換以及字串的擷取、查詢、插入和刪除
#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;
}