高手帮忙写个程序,急~

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:04:02
求2个大整数的乘积.所谓大整数, 就是指不受C语言 int 类型最大值限定的整数.

示例
a = 9999999999999999999999999999999999999999999999999999
b = 9999999999999999999999
a * b = 99999999999999999999989999999999999999999999999999990000000000000000000001

C语言

楼上的好像有点问题,是输出的问题(前面有太多的0了啊),
我用的是C语言:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define MAX(a,b) ((a>b)?a:b)
#define N 60 //可以用来相乘的数的位数

main()
{
/*str1[N]为第一个乘数,str2[N]为第二个乘数,str3[2*N]为结果的保留字符数组,为最大相乘数的两倍宽度*/
char str1[N],str2[N],str3[2*N];

/*******
num用来控制每位数字的相乘结果,
next=0保留进位的多少数,
i,j对字符数组进行遍历.
now原来字符与NUM中的个位相加的结果,result控制结果中的位数,
down=1用法看后面,
result_num用来表示结果的最后一位,用来加上'\0'结束符
******/

int num,next=0,i,j,now,result,down=1,result_num;

/*读入两个乘数*/
printf("Please insert your num1:");
gets(str1);
printf("Please insert your num2:");
gets(str2);

/*把结果字符数组初始化为每个都是'0'字符*/
for(i=0;i<N+1;i++)
str3[i]='0';
str3[i]='\0';//结束符

result=2*MAX(strlen(str1),strlen(str2));//得到结果字符数组的长度

/*