大整數加法

beijingFC發表於2020-12-18

兩個大整數加法 普通整形或者長整型儲存不下的時候 需要用到字元 和陣列
由於加法會進位 所以我們需要將數字反向放入陣列 將第0位 存入字元長度
在這裡插入圖片描述

#include<iostream>
#include<cstring>
using namespace std;
int num1[105],num2[105],sum[105];
char s1[105],s2[105];

int main(){
    cin>>s1>>s2;
    num1[0] =strlen(s1);
    num2[0] =strlen(s2);
    for(int i=0,j = num1[0];i<num1[0];i++,j--){
        num1[j]=s1[i]-'0';
    }
    for(int i=0,j = num2[0];i<num2[0];i++,j--){
        num2[j]=s2[i]-'0';
    }
    sum[0]=max(num1[0],num2[0]);
    for(int i=1;i<=sum[0];i++){
        sum[i] =num1[i] +num2[i];
    }
    for(int i=1;i<=sum[0];i++){
        if(sum[i] > 9){   //存在進位的情況下
            sum[i+1]++;
            sum[i]-=10;
            if(i==sum[0]){
                sum[0]++;  //存在進位就加位數 使迴圈再多進行一位
            }
        }
    }
    for(int i=sum[0];i>0;i--){
        cout<<sum[i];
    }
    cout<<endl;
    return 0;
}

在這裡插入圖片描述

相關文章