#include<cstring>
using namespace std;
int main(){
	// 1、获取高精度数:字符数组 & 字符串
	char a1[505], b1[505],c1[505];
	int a[505]={}, b[505]={},c[505]={},d[505]={};
	cin>>a1>>b1>>c1;
	int lena = strlen(a1);
	int lenb = strlen(b1);
	int lenc=  strlen(c1);
	int lend = max(max(lena, lenb),lenc);
	// 2、把字符数字变成整型的数组,并且倒序存储
	// 倒序数组a
	for(int i=0;i<lena;i++){
		a[i] = a1[lena-1-i]-'0';
	}
	// 倒序数组b
	for(int i=0;i<lenb;i++){
		b[i] = b1[lenb-1-i]-'0';
	}
	for(int i=0;i<lenc;i++){
		c[i] = c1[lenc-1-i]-'0';
	}
	// 3、对位相加
	int x = 0;   // 记录进位情况
	for(int i=0;i<lend;i++){
		// a + b = c 
		d[i] = a[i] + b[i]+c[i]+ x;
		x = d[i]/10;  // 计算进位情况 
		d[i] %= 10;   // 进位完了只剩个位
	} 
	// 判断最高位是否产生进位
	if(x != 0) d[lend++] = x;
	// 倒序输出结果
	for(int i=lend-1;i>=0;i--){
		cout<<d[i];
	} 
	return 0;
}

0 条评论

目前还没有评论...