首页 > 代码库 > 1-6-10:大整数加法

1-6-10:大整数加法

描述

求两个不超过200位的非负整数的和。

输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入

2222222222222222222233333333333333333333

样例输出

55555555555555555555
 1 #include <stdio.h> 2 #include<string.h> 3 int a[1001]={0}, b[1001]={0}; 4 int i, ka, kb, k,c,temp,len; 5 char s[2002],ch; 6 void plus() 7 { 8     for(i = 0; i < k; i++) 9     {10         a[i] = a[i] + b[i] + c;11         if (a[i]>=10)12         {a[i]= a[i]%10; c=1;}    13         else c=0;14     }15     if(c>0) {a[k]=c; k++;}16 }17 int main()18 {19     scanf("%s",s);20     k=0;len=strlen(s);21     while(k<len)22     { 23         a[k]=s[k]-0;24         k++;25     }26     ka=k;27     scanf("%s",s);28     k=0;len=strlen(s);29     while(k<len)30     { 31         b[k]=s[k]-0;32         k++;33     }34     kb=k;35     if(ka >= kb) k = ka;36     else37         k = kb;38     for(i = 0; i < ka/2; i++)39     {40         temp=a[i];41         a[i]=a[ka-i-1]; 42         a[ka-1-i] =temp;43     }44     for(i = 0; i < kb/2; i++)45     {46         temp=b[i];47         b[i]=b[kb-i-1];48         b[kb-1-i] =temp;49     }50     c=0;51     plus();52     for(i = k-1; i >= 0; i--)53     printf("%d",a[i]);       54     return 0;55 }//只对了九个..

 

1-6-10:大整数加法