12.1 大数相加

题目为计算超出 longlong范围的数的相加求和
思路,将大数以字符串的形式输入,然后转换到数组中

#include <stdio.h>
#include <string.h>
int main()
{
    char a[1000],b[1000];
    int l[1000];
    int l1[1000];
    int c,d,i,j,e,k;
    int p,q;
    while(scanf("%s %s",a,b)!=EOF){
        c=strlen(a);
        d=strlen(b);
        //  找出字符串的最大长度,确定后面数组输出的最大索引值
        if(d>=c) e=d;
        if(c>d) e=c;
        // 将数组数据归0
        for(q=0;q<e;q++){
            l[q]=0;
            l1[q]=0;
        }
        // 将字符串存入数组中
        for(i=0;i<c;i++){
            l[i]=a[c-1-i]-'0';
        }
        for(j=0;j<d;j++){
            l1[j]=b[d-1-j]-'0';
        }
        //数组数据相加
        for(k=0;k<e;k++){
            l[k]=l[k]+l1[k];
            if(l[k]>9 && k<e-1){  //进位  若为最高位不进
                l[k]=l[k]-10;
                l[k+1]++;
            }
        }
        for(p=e-1;p>=0;p--){
            printf("%d",l[p]);
        }
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43763889/article/details/84677532
今日推荐