1-6-10:大整数加法

描述

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

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

22222222222222222222
33333333333333333333

样例输出

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     else
37         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 }//只对了九个..

原文地址:https://www.cnblogs.com/qianxuejin/p/5859695.html