#include #define SIZE 1000

int BigFact(int m, short data[]);

int main()

{

short data[SIZE] = { 0 };//存储SIZE位数,表示SIZE位的大数,并且初始化为0

int i, j;

printf("请输入想要计算阶乘数的数值:");

scanf_s("%d", &i);

int x = BigFact(i, data);//计算阶乘i!,返回阶乘值的位数

if (x) //判断数组是否溢出,无溢出则打印阶乘值,否则打印溢出提示信息

{

printf("%d! = ", i);

for (j = x - 1; j >= 0; j--)//从最高位开始打印每一位阶乘值

printf("%d", data[j]);

printf("\n");

}

else

printf("数据太大,溢出!\n");

return 0;

}

/*****************************************************************************************/

/*功能描述:本函数用于实现计算自然数的阶乘值功能,目的是计算指定数的阶乘 */

/*入口参数:参数m,表示想要计算阶乘数的数值;数组data[],表示用于存储阶乘结果的数组*/

/*出口参数:数组data[],表示阶乘结果 */

/*返回值:返回0或x,当返回0时表示结果溢出,当返回其他数值时表示阶乘值的位数*/

/******************************************************************************************/

int BigFact(int m, short data[])

{

int i, j, k;

data[0] = 1; //初始化阶乘值

int x = 1; //初始化阶乘值的位数

if (m)

{

for (i = 1; i <= m; i++) //累乘计算阶乘m!

{

//乘法阶段

for (j = 0; j < x; j++)

data[j] = data[j] * i;

//进位阶段

for (k = 0; k < x; k++)

{

if (data[k] >= 10)

{

data[k + 1] = data[k + 1] + data[k] / 10;

data[k] = data[k] % 10;

//如果最高位发生进位,则增加阶乘结果位数,同时判断是否溢出

if (k == x - 1)

{

x++;//最高位有进位时,将位数x加1

if (x > SIZE)

return 0;//数据溢出,结束计算并返回0

break; //到最高位结束进位

}

}

}

}

}

return x;

}

1000的阶乘用c语言实现,用C语言实现计算大数的阶乘相关推荐

  1. 7-100 简单求阶乘问题 (10 分)本题要求编写程序,计算N的阶乘。输入格式:输入在一行中给出一个不超过12的正整数N。输出格式:在一行中输出阶乘的值。输入样例:4结尾无空行

    7-100 简单求阶乘问题 (10 分) 本题要求编写程序,计算N的阶乘. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出阶乘的值. 样例">输入样例 ...

  2. C#阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右

    关于阶乘,老郭和宝宝等前辈做了大量研究,计算速度也达到了非常快的水准.本文宗旨不在于和他们比快,因为他们专门为阶乘做了很多优化.本文介绍的是使用C#直接计算的方法,速度虽然不能跟他们相比,但在一般场合 ...

  3. 阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右

    关于阶乘,老郭和宝宝等前辈做了大量研究,计算速度也达到了非常快的水准.本文宗旨不在于和他们比快,因为他们专门为阶乘做了很多优化.本文介绍的是使用C#直接计算的方法,速度虽然不能跟他们相比,但在一般场合 ...

  4. c语言22阶乘太大,C语言计算大数阶乘的方法

    C语言计算大数阶乘的方法,整数,数组,阶乘,本文,格式 C语言计算大数阶乘的方法 易采站长站,站长之家为您整理了C语言计算大数阶乘的方法的相关内容. 本文实例为大家分享了C语言计算大数阶乘的具体代码, ...

  5. c语言 n阶阶乘尾0个数,计算n的阶乘(n!)末尾0的个数

    题目: 给定一个正整数n,请计算n的阶乘n!末尾所含有"0"的个数. 举例: 5!=120,其末尾所含有的"0"的个数为1: 10!= 3628800,其末尾所 ...

  6. 实验2-4-4 求阶乘序列前N项和 (C语言)

    实验2-4-4 求阶乘序列前N项和 (C语言) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出整数结 ...

  7. 7-223 sdut-C语言实验-求阶乘(循环结构)7-224 sdut-C语言实验-排序问题7-225 sdut-C语言实验- 冒泡排序中数据交换的次数

    目录 7-223 sdut-C语言实验-求阶乘(循环结构) 7-224 sdut-C语言实验-排序问题 7-225 sdut-C语言实验- 冒泡排序中数据交换的次数 7-223 sdut-C语言实验- ...

  8. n的阶乘三种实现方法(C语言)

    最近整理了曾经写的程序,把n的阶乘三种实现方法与小伙伴们分享,希望能给初学者一些帮助. 1.递归 #include <stdio.h> int Fact(int n); int main( ...

  9. 大一上半学期基础C语言程序(四则运算,日期求天数,阶乘....)

    author:刘钟泽 我所安装的编译器(IDE) Code::Blocks(内置摸鱼插件), Visual C++ 6.0(十分陈旧), Visual Studio 2019(比较全面,但是文件较大) ...

最新文章

  1. 计算机视觉:你必须了解的图像数据底层技术
  2. NMAP分布式扫描工具dnmap
  3. 无向图的最短路径求解算法之——Dijkstra算法
  4. SQLSERVER 性能优化统计信息
  5. Java导入导出CSV文件
  6. ATOM插件库,收藏以备不时仔细!
  7. 如何合理的规划一次 JVM 性能调优
  8. 出口同比中国经济三大怪状折射出啥危机?
  9. git配置密钥后无法pull
  10. 虚幻四中怎么保持导入模型坐标_「虚幻引擎5」为何让开发者们拍手叫好?它到底厉害在哪?...
  11. 各省简称 拼音 缩写_求全国各城市的拼音和简写拼音。
  12. 小米笔记本 镜像_小米笔记本Air 13.3原装出厂WIN10 2004 ISO镜像下载
  13. 常见计算机软件故障有哪些,电脑常见问题有哪些,电脑硬件/软件常见问题及处理方法...
  14. java.lang.OutOfMemoryError异常及相关问题解决
  15. 【笔试】计算机网络知识点整理
  16. 对抗苹果隐私新规?iOS应用1个月没更新 谷歌回应了
  17. 解决:tcpdump -w xxxxx.pcap 提示 Permission denied
  18. gts250 linux驱动下载,下载:NVIDIA显卡Linux驱动190.32测试版
  19. 学习笔记——STM32C8T6如何配置普通IO口
  20. JAVA CDI 学习(1) - @Inject基本用法

热门文章

  1. 阿里Fastjson使用
  2. Leap Motion新手入门必看教程
  3. 开启混合睡眠 解决Hybrid Sleep The hypervisor does not support this standby statewindows
  4. 最懂程序员面试的人,不一定是最优秀的开发者
  5. android 4.3新功能,Android 4.3新功能曝光
  6. C语言开发MicroPython模块(添加module)
  7. ABBYY FineReader16最新PDF图片文字识别软件
  8. ZZULIOJ-1102: 火车票退票费计算(函数专题)(Java)
  9. BIO,NIO,AIO分别是什么?他们有什么区别?
  10. 客户端与服务端长连接的几种方式