今天来写一篇高精度的乘法(水一下,和之前的差不多)
#include<stdio.h>
#include<string.h>
int main (void)
{
//两个数组放乘数
char num1[10000]={0};
char num2[10000]={0};
//放结果和乘数
int a[10000]={0};
int b[10000]={0};
int c[10000]={0};
int i=0,j=0;
//输入
scanf("%s",num1);
scanf("%s",num2);
//计算长度
int str1=strlen(num1);
int str2=strlen(num2);
//装结果的长度
int str3=str1+str2;
//将字符型转换成整形
for(i=0;i<str1;i++)
{
a[str1-i]=num1[i]-'0';
}
for(i=0;i<str2;i++)
{
b[str2-i]=num2[i]-'0';
}
//核心代码,注意理解和记忆,也是用相同的进位思想来思考
for(i=1;i<=str1;i++)
{
for(j=1;j<=str2;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
//将前面多余的零去掉
while(c[str3]==0&&str3>1)
{
str3--;
}
//输出
for(i=str3;i>=1;i--)
{
printf("%d",c[i]);
}
return 0;
}
加油!!!