高精度加法第三次学习...内容自己理解吧
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 }
2700

被折叠的 条评论
为什么被折叠?



