c語言乘法程序
㈠ 求編寫一個c語言大數乘法的程序,盡量簡單一些,要求每一步有詳細講解。
#include<iostream>
#include<fstream>
#include<string>//加入這行
usingnamespacestd;
voidmultiply(constchar*a,constchar*b);
intmain()
{
stringnum1,num2;//初始狀態用string來存儲大數
cout<<"現在,來兩個大數吧!"<<endl;
cin>>num1>>num2;
constchar*p1=num1.c_str();//將string轉為constchar*
constchar*p2=num2.c_str();//將string轉為constchar*
multiply(p1,p2);
system("pause");
return0;
}
voidmultiply(constchar*a,constchar*b)
{
inti,j,ca,cb,*s;
ca=strlen(a);
cb=strlen(b);
s=(int*)malloc(sizeof(int)*(ca+cb));//分配存儲空間
for(i=0;i<ca+cb;i++)s[i]=0;//每個元素賦初值0
for(i=0;i<ca;i++)
for(j=0;j<cb;j++)
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
for(i=ca+cb-1;i>=0;i--)//這里實現進位操作,從低位到高位開始進位
if(s[i]>=10)//將大於10的數的進位加到高位,即i-1位,i位留余數
{
s[i-1]+=s[i]/10;
s[i]%=10;
}
char*c=(char*)malloc((ca+cb)*sizeof(char));//分配字元數組空間,因為它比int數組省!
i=0;while(s[i]==0)i++;//跳過頭部0元素
for(j=0;i<ca+cb;i++,j++)c[j]=s[i]+'0';
c[j]='