大数相乘模版
#include?<iostream>
?2#include?<string.h>
?3?using?namespace?std;
?4
?5?void?multiply(const?char?*a,const?char?*b);?
?6
?7int?main()
?8{
?9?//cout<<"hicjiajia"<<endl;
10?
11?string?num1,num2;?//?初始狀態(tài)用string來存儲(chǔ)大數(shù)
12?cout<<"現(xiàn)在,來兩個(gè)大數(shù)吧!?"<<endl;
13?cin>>num1>>num2;
14?
15?const?char?*p1=num1.c_str();?//?將string轉(zhuǎn)為?const?char?*
16?const?char?*p2=num2.c_str();?//?將string轉(zhuǎn)為?const?char?*
17?multiply(p1,p2);
18?
19?system("pause");
20?return?0;
21}?
22
23void?multiply(const?char?*a,const?char?*b)
24{
25?int?i,j,ca,cb,*s;
26?ca=strlen(a);
27?cb=strlen(b);
28?s=(int?*)malloc(sizeof(int)*(ca+cb));?//分配存儲(chǔ)空間
29?for?(i=0;i<ca+cb;i++)?s[i]=0;?//?每個(gè)元素賦初值0
30?
31?for?(i=0;i<ca;i++)
32?for?(j=0;j<cb;j++)
33?s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
34?
35?for?(i=ca+cb-1;i>=0;i--)?//?這里實(shí)現(xiàn)進(jìn)位操作
36?if?(s[i]>=10)
37?{
38?s[i-1]+=s[i]/10;?
39?s[i]%=10;
40?}
41?
42?char?*c=(char?*)malloc((ca+cb)*sizeof(char));?//分配字符數(shù)組空間,因?yàn)樗?/span>int數(shù)組省!
43?i=0;while(s[i]==0)?i++;?//?跳過頭部0元素
44?for?(j=0;i<ca+cb;i++,j++)?c[j]=s[i]+'0';
45?c[j]='\0';
46?for?(i=0;i<ca+cb;i++)?cout<<c[i];
47?cout<<endl;?
48?free(s);
49}
總結(jié)
- 上一篇: mysql那些招
- 下一篇: WCF实例 - 简介