码迷,mamicode.com
首页 > 其他好文 > 详细

大数乘法

时间:2015-08-28 23:09:03      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

大数乘法,注意注释部分:

 1 #include<stdio.h>
 2 
 3 void multiple(char a[],char b[],char c[]){
 4     int temp,in=0,lenA=0,lenB=0,index,start;
 5     while(a[++lenA]!=\0);//求字符数组的最高位,以方便做乘法 ,如果lenA++,则下面对应的不是lenA-1,而是lenA-2 
 6     while(b[++lenB]!=\0);
 7     start = lenA+lenB-1;
 8     for(int i=lenA-1;i>=0;i--){
 9         index=start--;      //做乘法时需要往前移位 
10         for(int j=lenB-1;j>=0;j--){
11 //            printf("a[%d]=%c b[%d]=%c\n",i,a[i],j,b[j]);
12             temp = c[index]-0+(a[i]-0)*(b[j]-0)+in;
13             c[index--]=temp%10+0;
14             in = temp/10;
15         }
16         c[index]=in+0;   //最高位需要保留 
17     }
18 } 
19 
20 int main(){
21     char a[]="123567890";
22     char b[]="123567890";
23     char c[sizeof(a)+sizeof(b)-1]; 
24     for(int i=0;i<sizeof(c);i++)
25         c[i]=0;
26     c[sizeof(c)-1]=\0;
27     multiple(a,b,c);
28     if(c[0]!=0)
29     printf("%c",c[0]);
30     for(int i=1;c[i]!=\0;i++){
31         printf("%c",c[i]);
32     }
33 } 

 

大数乘法

标签:

原文地址:http://www.cnblogs.com/hoojjack/p/4768015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!