加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 02:56:43 所属栏目:大数据 来源:网络整理
导读:以下是简易的代码,因为受数据类型的限制,所以表示的数据范围有限, 故在表示大数据的时候,应该采用数组存储。 同时,在采用数组存储的时候,应该将数组声明为全局变量或static修饰,这样做的目的是使分配的内存空间在堆内存中。 ? 代码如下: [cpp] ? vie

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

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

同时,在采用数组存储的时候,应该将数组声明为全局变量或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. } ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读