问题标题: 高精度加法

0
0

0
已采纳
吕牧原
吕牧原
高级守护
高级守护
#include<iostream>  
    #include<string.h>  

    using namespace std;  

    int main(){  
        char a[100001],b[100001];  
        int c[100001];  
        cin>>a>>b;  
        int i,j,k=0;  
        int r=0;  
        for(i=strlen(a)-1,j=strlen(b)-1;i>=0&&j>=0;i--,j--){  
            int p=(a[i]-'0')+(b[j]-'0')+r;    
            r=p/10;     //进位  
            c[k++]=p%10;    //余数加到数组中  
        }  

        while(i>=0){   //如果b中的数加完了  
            int p=(a[i]-'0')+r;  
            r=p/10;  
            c[k++]=p%10;  
            i--;  
        }  
        while(j>=0){    //如果a中的数加完了  
            int p=(b[j]-'0')+r;  
            r=p/10;  
            c[k++]=p%10;  
            j--;  
        }  
        if(r){      //判断最高位有没有进位  
            c[k++]=r;  
        }  
        for(int i=k-1;i>=0;i--){    // 输出最后结果  
            cout<<c[i];  
        }  
        return 0;  
    }  
吕牧原在2019-09-09 17:26:14追加了内容

这可不止是一维数组

 

我要回答