趋势科技第一题

#include<iostream>
#include<string> 
using namespace std;
string add(string &a1, string &a2) {
	string maxa,mina;
	int i = 0,j=0;
	string a3;
	for (i = a1.size() - 1; i >0; i--) {
		if (a1[i] == '.')
			break;
	}
	for (j = a2.size() - 1; j >0; j--) {
		if (a2[j] == '.') {
			break;
		}
	}
	if (i > 0 && j > 0) {
		if (a1.size()-i <a2.size()- j) {
			a3 = string((a2.size() - j) - (a1.size() - i), '0');
			a1 = a1 + a3;
		}
		else if (a1.size() - i >a2.size() - j) {
			a3 = string((a1.size() - i)-(a2.size() - j) , '0');
			a2 = a2 + a3;
		}
	}
	if (i > 0 & j == 0) {
		a2 += '.';
		a3 = string(a1.size()-1 - i, '0');
		a2 = a2 + a3;
	}
	if (j > 0 & i == 0) {
		a1 += '.';
		a3 = string(a1.size() - 1 - j, '0');
		a1 = a1 + a3;
	}

	if (a1.size() > a2.size()) {
		maxa = a1;
		mina = a2;
	}
	else {
		maxa = a2;
		mina = a1;
	}
	a3 =string(maxa.size() - mina.size(),'0') ;
	mina = a3 + mina;
	for (int i = maxa.size() - 1; i > 0; i--) {
		if (maxa[i] == '.') continue;
		int num= maxa[i] - '0' + mina[i] - '0' ;
		maxa[i] = num % 10+'0';
		if (num >= 10) {
			if(maxa[i-1]!='.')
			maxa[i - 1] += 1;
			else 
				maxa[i - 2] += 1;
		}
	}
	int num= maxa[0] - '0' + mina[0] - '0';
	maxa[0] = num % 10+'0';
	if (num >= 10) {
		maxa = '1' + maxa;
	}
	return maxa;
}
int main() {
	string a1, a2;
	cin >> a1 >> a2;
	cout<<add(a1, a2);
	system("pause");
	return 0;
}

#趋势科技##笔试题目#
全部评论
大牛
点赞 回复
分享
发布于 2019-08-09 11:14
点赞 回复
分享
发布于 2019-08-09 11:16
滴滴
校招火热招聘中
官网直投
大佬 整数部分补0 要前补吧 小数点后的补零可以后补
点赞 回复
分享
发布于 2019-08-09 13:49

相关推荐

2 5 评论
分享
牛客网
牛客企业服务