这两个数的乘积无疑超过了所有数据类型的边界,所以在这里我们仍然用数组来储存。
#include<stdio.h>
int main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int b[]={9,8,7,6,5,4,3,2,1}; //将123456789和987654321分别存储在a与b两个数组
int c[20]={0}; //定义一个数组c用来承接a与b的乘积
int temp; //定义的中间变量
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
c[j+i]+=a[j]*b[i]; //利用数组的地址+i来巧妙的表示10的i次方,之后用b的每一位分别与a的所有位数,之后每位的乘积依次相加并判断是否进位。
}
for(int j=0;j<20;j++)
{
if(c[j]>=10)
{
temp=c[j]/10;
c[j]%=10;
c[j+1]+=temp; //判断每一个数组有没有超过10,有的话就保留个位,
} 并且十位加在下一位上。
}
}
for(int j=17;j>=0;j--){
printf("%d",c[j]); //输出数组内的值,其值为运算结果
}
}