测点2和3没通过的可以试试下面的测试用例:
+1.2345E+04
AC代码:
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cin>>s;
bool negative = s[0] == '-' ? true : false; // true -> 这个数是负数 false -> 这个数是正数
s.erase(s.begin());
string decimal = "";
int expon = 0;
int i = 0;
while(s[i] != 'E'){
decimal = decimal + s[i];
i++;
}
bool expNegative = s[i + 1] == '-' ? true : false;
int num = i - 2; // i : 小数点后有i位
i = i + 2;
int len = s.length();
for( ;i < len;i++){
expon = expon * 10 + s[i] - '0';
}
if(negative == true){
printf("-");
}
if(expNegative == true){
printf("0.");
expon--;
while(expon != 0){
printf("0");
expon--;
}
int declen = decimal.length();
for(int j = 0;j < declen;j++){
if(decimal[j] != '.')
printf("%c",decimal[j]);
}
}else{
expon++;
int declen = decimal.length();
for(int j = 0;j < declen;j++){
if(expon == 0){
printf(".");
}
if(decimal[j] != '.'){
printf("%c",decimal[j]);
expon--;
}
}
while(expon > 0){
printf("0");
expon--;
}
}
system("pause");
return 0;
}