大数问题一(大数相加)
对sum数组进行处理:
这样直接简化的数组的右对齐过程,思想简单,容易理解;
代码如下:
#include
#include
#include
#include
using namespace std ;
int main() {
char a[21] , b[21] ;
while(cin >>a >> b) {
int sum[21] = {0} ;
int lena = strlen(a) - 1 ;
int lenb = strlen(b) - 1 ;
int t = 20 ;
for(; lena >= 0 || lenb >= 0 ; lena--,lenb--)
sum[t--] = a[lena] - '0' + b[lenb] - '0' ;
for(int k = 20 ; k>= 1; k--) { //对sum数组进行处理
sum[k-1] += sum[k] / 10 ; //商进到前一位中
sum[k] = sum[k] % 10 ; //余数留在原位置
}
int start = 0 ;
while(start <= 20 && !sum[start]) //去除sum数组中多余的“0”
start++ ;
while(start<=20) //从左到右输出sum数组中的数值
cout << sum[start++] ;
cout << endl ;
}
return 0 ;
}