C语言大整数加法
求两个不超过200位的非负整数的和。
Input
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
Output
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
- 在将字符串中的字符数字转换到int型数组中时,一定要分清楚int型数组的低位序存放的是大整数的低位还是高位,因为这样会影响大整数的加法操作
- 在进行大整数加法时,一定要从大整数的最低位开始相加,相加时不要忘记进位
#include<stdio.h>
#include<string.h>
int main(){
char a[205],b[205];
int p[205]={0},q[205]={0};
int i,j,n,m;
gets(a);
gets(b);
n=strlen(a);
m=strlen(b);
j=0;
for(i=n-1;i>=0;i--){
p[j++]=a[i]-'0';
}
j=0;
for(i=m-1;i>=0;i--){
q[j++]=b[i]-'0';
}
for(i=0;i<205;i++){
p[i]=p[i]+q[i];
if(p[i]>=10){
p[i]-=10;
p[i+1]+=1;
}
}
for(i=204;i>=0;i--){
if(p[i]!=0){
for(j=i;j>=0;j--){
printf("%d",p[j]);
}
break;
}
}
if(i==-1) printf("0");
printf("\n");
}