微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数运算_求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. }  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐