大一新生初谈C语言中的高精度乘法
1、为什么需要高精度乘法及其实质
我们知道,计算机内部直接用int或double等数据类型储存数字是有范围限制的,即当数据运算大小过大后,计算机将会出现溢出情况,使得计算结果不够精确。为了能够使计算机精确地计算高位的数字,我们需要学会使用高精度乘法。
事实上,高精度乘法就是通过编程的方法,把我们小学时候简单的数学乘法运算的步骤在计算机上完美的演示一遍而已
2、高精度乘法原理
既然是一个很大的整数,我们便不能够再用简单的数据类型直接储存这些整数。我们可以自然得想到要通过数组或字符串来储存数字。字符串的特点方便我们对于高位整数的输入,而整形数组的简便性更有利于每个位数的计算,因而我们结合两者的优点,不难得出高精度乘法的大致流程:
a、通过两个字符串输入两个整数;
b、引人两个数组,将两个整数通过一定的运算,分别将每一位的数字储存进数组中;
c、进行每一位的运算;
d、处理进位;
e、输出结果;
下面我们通过代码来一步步实现它
3、高精度乘法的实现
(a) 运算前的准备
#include<stdio.h>
#include<string.h>
int main() {
char number1[1500], number2[1500];
scanf("%s%s", number1, number2);
int n = strlen(number1), m = strlen(number2);
int a[n], b[m];
上面的代码使我们输入了两个乘数,并且通过strlen函数确定了乘数的位数,并且将整形数组的长度同时定位好了。
我们接着来写:
int i, j;
for (i = 0, j = n - 1; i < n;