大数加
自己的第一篇博客:自己玩博客还是因为自己的专业吧,感觉每次查一些题目在博客里往往都能找到
所以自己也想写一些自己的东西,记录一下自己的学习之路。
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 }
浙公网安备 33010602011771号