HJ57 高精度整数加法

描述

输入两个用字符串 str 表示的整数,求它们所表示的数之和。

数据范围:1≤len(str)≤10000 

输入描述:

输入两个字符串。保证字符串只含有'0'~'9'字符

输出描述:

输出求和后的结果

示例1

输入:

9876543210
1234567890

输出:

11111111100

#include <stdio.h>
#include<string.h>

int main() {
    
    char str1[10000];
    char str2[10000];
    //  1.输入
    gets(str1);
    gets(str2);

    //  2.char数组 ==> int数组
    int num1[10000];
    int num2[10000];
    int L1=0,L2=0;
    for(int i=strlen(str1)-1;i>=0;i--)
    {
        num1[L1++]=str1[i]-'0';
    }
    for(int i=strlen(str2)-1;i>=0;i--)
    {
        num2[L2++]=str2[i]-'0';
    }
    //  3.计算
    int res[10000]={0};
    int L3=0;
    int L= (L1>=L2?L1:L2);
    int cin=0;//进位
    for(int i=0 ; i < L ; i++)
    {

        //当两个数长度不同时
        if(L1<=i) //如果L1是短的
        {
            num1[i]=0;
        }
        if(L2<=i) //如果L2是短的
        {
            num2[i]=0;
        }

        int t=num1[i]+num2[i]+cin;
        
        if(t>9) //相加结果大于10
        {
            res[L3++]=t%10;
            cin=t/10;
        }
        else { //相加结果小于10
            res[L3++]=t;
            cin=0;
        }

        //当两个数长度相等,且最高位相加大于10时
        if(i == L-1 && t>9)
        {
            L3=L;
            res[L3]=t/10;
        }
    }
    //  4.输出结果
    for(int i=L3;i>=0;i--)
    {
        //从L3开始,则最高位为0时不输出
        if(i==L3 && res[i]==0)
            continue;
        printf("%d",res[i]);
    }
    
    return 0;
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值