由于C语言中整数的表示范围有限,如我们要计算55555*99999的值,将会超出整数表示的范围。改成float型,又无法得到精确值。这时就需要我们编写程序来获得精确值。通过学习别人的代码,自己也写了一个,代码如下:
#include<stdio.h>
void multiply(int m, int n)
{
int result[100] = {0}; //保存计算结果,不超过100位
int i = 0;
int j, k, r;
if(m == 0)
{
printf("0/n");
return;
}
else
{
while(m != 0) //把乘数m按数字存入数组
{
result[i++] = m % 10;
m = m / 10;
}
}
for(j = 0; j < i; j++) //得到结果
result[j] *= n;
for(k = 0; k < i; k++) //平整得到的结果
if(result[k] >= 10)
{
if(result[i-1] >= 10)
i++;
result[k+1] += result[k] / 10;
result[k] = result[k] % 10;
}
for(r = i - 1; r >= 0; r--) //输出结果
printf("%d", result[r]);
printf("/n");
}
int main()
{
int a, b;
printf("a*b:");
scanf("%d*%d", &a, &b);
printf("%d*%d=", a, b);
multiply(a, b);
return 0;
}
运行结果:
a*b:55555*99999
55555*99999=5555444445