c++簡單實現大數相加

前幾天視頻面試,被問到怎麼實現大數相加,我想了想應該用數組接收,然後逐位相加,另外還需要設置進位符,大於10進位。按照這個想法,我用c++寫個簡單的代碼,也沒有思考有沒有其他思路。

#include<iostream>
using namespace std;
int main() {
	char s1[200], s2[200];
	int a[200], b[200],sum[201];
	int len1,len2,flag = 0,maxlen;
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	memset(sum, 0, sizeof(sum));
	cin >> s1 >> s2;
	len1 = strlen(s1);
	len2 = strlen(s2);
	if (len1 < len2) {
		maxlen = len2;
	}
	else
	{
		maxlen = len1;
	}
	int p = maxlen;        //將兩個數組按最大長度右對齊
	for (int i = len1 - 1; i >= 0; i--) {
		a[p] = s1[i] - '0';
		p--;
	}
	p = maxlen;
	for (int i = len2 - 1; i >= 0; i--) {
		b[ p] = s2[i] - '0';
		p--;
	}
//從數組右邊開始相加,flag作爲進位標誌
	p = maxlen;
	while (maxlen >=0)
	{
		sum[maxlen] = (a[maxlen] + b[maxlen] + flag) % 10;
		flag = (a[maxlen] + b[maxlen]) / 10;
		maxlen--;
	}
	int i = 0;
	if (sum[i] == 0) {
		i++;
	}
	while (i <= p)
	{
		cout << sum[i];
		i++;
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章