美文网首页
高精度加法(水题)

高精度加法(水题)

作者: myleosu | 来源:发表于2018-03-30 13:42 被阅读0次

    模拟大数加法
    我的思路很简单,就是看两个数长度是否相等,不等则补前导0直到两个数长度相等然后进行两数相加。(用x来保存进位)
    上代码(用string类补前导0凉了...用char做一样不过过程相对麻烦点)

    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    char str1[2000],str2[2000],str3[2000];
    int num[2000];
    int main()
    {
        cin>>str1>>str2;
        int str1len = strlen(str1);
        int str2len = strlen(str2);
        int len = abs(str1len-str2len);
        for(int i = 0;i<len;i++)//将str3置为0
            str3[i] = '0';
        if(str1len>str2len){//拼接字符串
            strcat(str3,str2);
            strcpy(str2,str3);
        }
        else if(str2len>str1len){//拼接字符串
            strcat(str3,str1);
            strcpy(str1,str3);
        }
        len = strlen(str1);
        int x = 0;
        while(len--){//模拟加法
            x = (str1[len]-'0')+(str2[len]-'0')+x;
            num[len] = x%10;
            x/=10;
        }
        if(x!=0)//判断最高进位
            cout<<x;
        len = strlen(str1);
        for(int i = 0;i<len;i++)
            cout<<num[i];
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:高精度加法(水题)

          本文链接:https://www.haomeiwen.com/subject/goqicftx.html