BYRBT

高精度加法

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 char s1[100],s2[100];
 8 
 9 int x[100],y[100],z[100];
10 
11 int max(int a,int b)
12 {
13     if (a>b) return a;
14     else return b;
15 }
16 
17 int main()
18 {
19     scanf("%s%s",s1+1,s2+1);//读入两个字符串 +1是把它们读到1的位置 就不用从0开始了
20     int l1=strlen(s1+1);//第一个数的位数
21     int l2=strlen(s2+1);//第二个数的位数
22     int l=max(l1,l2);//较长的那个位数
23     for (int a=1;a<=l1;a++)
24         x[l1-a+1]=s1[a]-'0';//把第一个字符串翻转之后存到x中去
25     for (int a=1;a<=l2;a++)
26         y[l2-a+1]=s2[a]-'0';//把第二个字符串翻转之后存到y中去
27     for (int a=1;a<=l;a++)
28         z[a]=x[a]+y[a];//把它们加起来后存到z里面去
29     int b=0;//b代表从低位进了多大的数上来
30     for (int a=1;a<=l;a++)
31     {
32         z[a]=z[a]+b;//进上来的数
33         b=z[a]/10;//更新b
34         z[a]=z[a] % 10;//只保留最低位
35     }
36     if (b!=0)//还有进位
37     {
38         l++;//位数+1
39         z[l]=b;//更新最高位
40     }
41     for (int a=l;a>=1;a--)
42         printf("%d",z[a]);
43     printf("\n");//输出
44 
45     return 0;
46 }

 

View Code
 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 char s1[100],s2[100];
 8 
 9 int x[100],y[100],z[100];
10 
11 int max(int a,int b)
12 {
13     if (a>b) return a;
14     else return b;
15 }
16 
17 int main()
18 {
19     scanf("%s%s",s1+1,s2+1);//读入两个字符串 +1是把它们读到1的位置 就不用从0开始了
20     int l1=strlen(s1+1);//第一个数的位数
21     int l2=strlen(s2+1);//第二个数的位数
22     int l=max(l1,l2);//较长的那个位数
23     for (int a=1;a<=l1;a++)
24         x[l1-a+1]=s1[a]-'0';//把第一个字符串翻转之后存到x中去
25     for (int a=1;a<=l2;a++)
26         y[l2-a+1]=s2[a]-'0';//把第一个字符串翻转之后存到y中去
27     for (int a=1;a<=l;a++)
28         z[a]=x[a]+y[a];//把它们加起来后存到z里面去
29     int b=0;//b代表从低位进了多大的数上来
30     for (int a=1;a<=l;a++)
31     {
32         z[a]=z[a]+b;//进上来的数
33         b=z[a]/10;//更新b
34         z[a]=z[a] % 10;//只保留最低位
35     }
36     if (b!=0)//还有进位
37     {
38         l++;//位数+1
39         z[l]=b;//更新最高位
40     }
41     for (int a=l;a>=1;a--)
42         printf("%d",z[a]);
43     printf("\n");//输出
44 
45     return 0;
46 }
posted @ 2012-09-15 20:45  zhonghaoxi  阅读(217)  评论(0编辑  收藏  举报
BYRBT