大数加

  自己的第一篇博客:自己玩博客还是因为自己的专业吧,感觉每次查一些题目在博客里往往都能找到

所以自己也想写一些自己的东西,记录一下自己的学习之路。

 1 /*
 2 大数加法;
 3 大数运算是利用字符数组来模仿加法的过程
 4 第一步:输入两个大数,用字符数组来承载;
 5 第二步:比较两个数组的长度,去最长的一个去建立两个中间的整型数组(最好比最长的多一位),
 6 第三步:模拟加法的运算规则(用长的去加短的),计算两个大数;
 7 
 8 */
 9 #include<stdio.h>
10 #include<string.h>
11 int main(){
12     char a1[100],a2[100];
13     int b1[105]={0},b2[105]={0};
14     int i,j,l1,l2,max,min;
15     //输入两个大数
16     gets(a1);
17     gets(a2);
18     l1 = strlen(a1);
19     l2 = strlen(a2);
20     for( i=0; i<=l1; i++)
21         b1[i+1] = a1[i]-'0';
22     for( j=0; j<=l2; j++)
23         b2[j+1] = a2[j]-'0';
24     //比较两个数组的长度
25     if(l1 >= l2){
26         max = l1;
27         min = l2;
28     }
29     else{
30         max = l2;
31         min = l1;
32     }
33     //模拟加法过程
34     for( i=max,j=min; j>0; i--,j--){
35         b1[i] += b2[j];
36         if(b1[i]>9){
37             b1[i-1]++;
38             b1[i] -= 10;
39         }
40     }
41     //可能有后续进位
42     for( ; i>0; i--)
43         if(b1[i]>9){
44             b1[i-1]++;
45             b1[i] -= 10;
46         }
47     //输出
48     if(b1[0] == 0)
49         for( i=1; i<=max; i++)
50             printf("%d",b1[i]);
51     else
52         for( i=0; i<=max; i++) 
53             printf("%d",b1[i]);
54     printf("\n");
55     return 0;
56 }

 

posted @ 2016-10-21 21:21  12345lpg  阅读(179)  评论(0)    收藏  举报