大数运算_求1000的阶乘C语言实现

以下是简易的代码,因为受数据类型的限制,所以表示的数据范围有限,

故在表示大数据的时候,应该采用数组存储。

同时,在采用数组存储的时候,应该将数组声明为全局变量或static修饰,这样做的目的是使分配的内存空间在堆内存中。

 

代码如下:

[cpp]  view plain copy
  1. // 1000 的阶乘 2568 位  
  2. #include <stdio.h>  
  3.   
  4. int a[3000];  
  5. void show(int k)  
  6. {  
  7.     int i=0;  
  8.     printf("位数 %d 位\n",k);  
  9.     for (i=k-1; i>=0; i--)  
  10.     {  
  11.         printf("%d",a[i]);  
  12.     }  
  13. }  
  14. int fanc(int n)  
  15. int w=0;  
  16.     int i=0, j=0;  
  17. int t=n;  
  18. int k=0;    // 表示数据的位数。  
  19.   
  20.     i=0, k=0;  
  21. while(t)  
  22.         a[i++] = t%10;  
  23.         t/=10;  
  24.         k++;  
  25.     for (j=n-1; j>1; j--)  
  26.     {  
  27.         w=0;    // 表示进位  
  28.         for (i=0; i<k; i++)  
  29.         {  
  30.             t = a[i]*j+w;  
  31.             a[i] = t%10;  
  32.             w = t/10;  
  33.         }  
  34.         while(w)  
  35.         {  
  36.             a[i++] = w%10;  
  37.             w/=10;  
  38.             k++;  
  39.         }  
  40. return k;  
  41. }  
  42. int main()  
  43. int n;  
  44. int k=0;  
  45.     scanf("%d",&n);  
  46.     k = fanc(n);  
  47.     show(k);  
  48.     printf("\n");  
  49. return 0;  
  50. }  

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...