大數乘法

來源:互聯網
上載者:User

標籤:

大數乘法,注意注釋部分:

 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 } 

 

大數乘法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.