共有回帖数  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号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知