描述
求两个不超过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 }//只对了九个..