共有回帖数 0 个
-
本程序在windowsXP操作系统,VC++6.0编译环境下测试通过
为了规范,改程序划分为3个文件,请见注解。用过VC++6.0的朋友懂的。
//******name file:Huge.h*******
#define MAXSIZE 100000
typedef struct
{
int data[MAXSIZE];
int *begin,*end;
}Huge;
//******name file:algo.cpp*****
#includestdio.h
#includemalloc.h
#include"Huge.h"
Huge *multiply(Huge *multiplicand,int multiplier)
{
int product,unit,carry=0;
int *p=multiplicand-begin;
while(p!=multiplicand-end+1)
{
product=carry+(*p)*multiplier;
unit=product%10;
carry=product/10;
*p=unit;
p++;
}
while(carry!=0)
{
unit=carry%10;
carry=carry/10;
*p=unit;
p++;
}
multiplicand-end=p-1;
return multiplicand;
}
void show(Huge *h)
{
int *p=h-end;
while(p!=h-begin-1)
{
printf("%d",*p);
p--;
}
printf("n");
}
Huge *factorial(int num)
{
Huge *e=(Huge *)malloc(sizeof(Huge));
int i=1;
e-data[0]=1;
e-begin=e-data;
e-end=e-data;
while(i=num)
{
e=multiply(e,i);
i++;
}
return e;
}
//******name file:Test.cpp********
#includestdio.h
#includemalloc.h
#include"Huge.h"
extern void show(Huge *h);
extern Huge *factorial(int num);
void main()
{
int num;
printf("Input the number:");
scanf("%d",&num);
show(factorial(num));
}
计算1000阶乘的dos界面:

楼主 2016-04-15 08:52 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知