【问题描述】
有两个位数在200以内的高精度数a和b,请编程求出a与b之和。
输入:两行,第一行为a,第二行为b。
输出:一行,表示a与b之和C。
注意:a与b的位数不一定相同。
【输入样例】
省略
【输出样例】
省略
#include<iostream> #include<cstring> using namespace std; int main() { char a[201], b[201]; int a2[201]={}, b2[201]={}, c2[202]={}; cin >> a >> b; int lena = strlen(a), lenb = strlen(b); int max1 = max(lena, lenb); // 位数不同,倒序取整。 for(int i=0; i<=max1-1; i++) { a2[i] = a[lena-1-i] - 48; b2[i] = b[lenb-1-i] - 48; } // 大数相加,处理进位(不包含最高位),计算和。 int x=0, lenc = 0, he; while(lenc < max1) { he = a2[lenc] + b2[lenc] + x; x = he/10; c2[lenc] = he%10; lenc++; } // 判断数组a2和b2最高位的和是否产生进位。 if(x==1) c2[lenc] = x; else lenc--; for(int i=lenc; i>=0; i--) { cout << c2[i]; } return 0; }
标签:201,高精度,int,位数,加法,include,strlen,进位 From: https://www.cnblogs.com/dks0313/p/17283369.html