原来的思路是调整小数点位置,补0后输出数组
这样也太蠢了
判断小数点位置,将原来的数组直接输出,输出过程中输出小数点就好了 ~~~
#include <iostream>
using namespace std;
int main(){
char flag;
string str;
long lon = 100000;
char numb[lon];
for(int j = 0; j < lon; j++){
numb[j] = '0'; //数组初始化为'0',后面输出的时候不用判断补0
}
cin >> flag >> str;
if(flag == '-') cout << flag;
bool fl = true;
int i, n, m;
for(i = 0; str[i] != 'E'; i++){
numb[i] = str[i]; //数字另存一个数组
}
numb[i] = str[i];
int numx = 0;
for(int j = i+2; j < str.length(); j++){
numx = numx * 10 + (str[j] - '0'); //取移动位数
}
if(flag == '-'){
printf("0.");
for(int j = 0; j < numx-1 ; j++){
printf("0");
}
printf("%c", numb[0]);
for(int j = 2; j < i; j++){
printf("%c", numb[j]);
}
}else if(flag == '+'){
printf("%c", numb[0]);
for(int j = 2; j < 2 + numx; j++){
if(numb[j] == 'E') printf("0");
else printf("%c", numb[j]);
}
if(n + numx < i-1){
printf(".");
for(int j = 2 + numx; j < i; j++){
printf("%c", numb[j]);
}
}
}
return 0;
}