高精度算法

高精度加法第三次学习...内容自己理解吧

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 #define MAXLEN 110
 6 int main(){
 7     char a1[MAXLEN],b1[MAXLEN];//输入的原始加数字符串
 8     int a[MAXLEN],b[MAXLEN],c[MAXLEN],lena,lenb,lenc,x;//分别存储两个加数,结果,加数的结果的长度和进位 
 9     memset(a,0,sizeof(a));
10     memset(b,0,sizeof(b));
11     memset(c,0,sizeof(c));//初始化
12     scanf("%s%s",a1,b1);
13     lena = strlen(a1); 
14     lenb = strlen(b1);//计算两个字符串的长度
15     for(int i=0;i <= lena - 1;i++)
16         a[lena -i]=a1[i] -'0';//加数放入a数组 
17     for(int i = 0;i <= lenb - 1;i++)
18         b[lenb - i]=b1[i] - '0';//加数放入b数组
19     lenc = 1;
20     x = 0;
21     while(lenc <= lena || lenc<= lenb){
22         c[lenc] = a[lenc] + b[lenc] +x;//两数相加 
23         x = c[lenc] / 10;                //计算进位 
24         c[lenc] %= 10;                    //本位保留的数 
25         lenc++;
26     } 
27     c[lenc] = x;
28     if(c[lenc] == 0)
29         lenc--;//处理最高进位 
30     for(int i = lenc; i>=1; i--)
31         cout << c[i];//输出结果
32     cout<<endl;
33     return 0; 
34 }

 

转载于:https://www.cnblogs.com/wwcjj/p/8280624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>