0
点赞
收藏
分享

微信扫一扫

PAT A1073 Scientific Notation (20 分)

陬者 2022-02-17 阅读 65

原来的思路是调整小数点位置,补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;
}
举报

相关推荐

0 条评论