大数问题一(大数相加)

ee 对sum数组进行处理: 图片1   这样直接简化的数组的右对齐过程,思想简单,容易理解; 代码如下:
#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 ;
}
posted @ 2014-10-23 09:22  NYNU_ACM  阅读(157)  评论(0编辑  收藏  举报