PAT乙题1024. 科学计数法 (20)

2018/01/26 PAT 共 1067 字,约 4 分钟
#include<iostream>
#include<string>
#include<cctype>
#include<vector>
#include<algorithm>
#include<functional>
#include<cstring>
using namespace std;

int main() {
#ifdef LOCAL
	freopen("d:\\datain.txt", "r", stdin);
	//freopen("d:\\dataout.txt", "w", stdout);
#endif LOCAL
	char s[20000];
	int e;
	char f2;
	cin >> s;
	if (s[0] == '-') {
		cout << "-";
	}
	for (int i = 0; i < strlen(s); i++) {
		if (s[i] == 'E') {
			e = i;
			f2 = s[i + 1];
		}
	}
	int after = 0;
	for (int i = e + 2; i < strlen(s); i++) {
		after = s[i] - '0' + 10 * after;
	}
	//cout << after << endl;
	if (f2 == '+') {
		if (after >= e - 3) {
			for (int i = 0; i < e; i++) {
				if (s[i] >= '0'&&s[i] <= '9') {
					cout << s[i];
				}
			}
			for (int i = 0; i < after - e + 3; i++)
				cout << "0";
		}
		else {
			for (int i = 0; i < e; i++) {
				if (s[i] >= '0'&&s[i] <= '9') {
					cout << s[i];
				}
				if (after + 2 == i) {
					cout << ".";
				}
			}
		}
	}
	else {
		cout << "0.";
		for (int i = 0; i < after-1; i++)
			cout << "0";
		for (int i = 0; i < e; i++) {
			if (s[i] >= '0'&&s[i] <= '9') {
				cout << s[i];
			}
		}
	}
}

Search

    Table of Contents