大数相加

两个不超过100位的大数相加

输入:

1111111111111111111111111111111111111111

1111111111111111111111111111111111111111

输出:

2222222222222222222222222222222222222222

#include<stdio.h>   
#include<string.h>   
int main()  
{  
    char a[100]={'0'},b[100]={'0'};  
    while(~scanf("%s%s",a,b))  
    {  
        int i;  
        int lena=strlen(a),lenb=strlen(b),j,s[110]={0};  
        for(i=0,j=lena-1;i<=j;i++,j--){int t=a[i]-'0';a[i]=a[j]-'0';a[j]=t;}  
        for(i=0,j=lenb-1;i<=j;i++,j--){int t=b[i]-'0';b[i]=b[j]-'0';b[j]=t;}  
        int c=0,k;  
        for(i=0;i<100;i++)  
        {  
            k=a[i]+b[i]+c;  
            s[i]=k%10;  
            c=k/10;  
        }  
        for(i=100;s[i]==0;i--);  
        for(j=i;j>=0;j--)  
            printf("%d",s[j]);  
        printf("\n");  
    }  
    return 0;  
}  

 

posted @ 2012-12-27 13:27  再见~雨泉  阅读(180)  评论(0编辑  收藏  举报