该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*

程序功能:计算一个正整数n的阶乘,目前最大能运算10000的阶乘,可秒杀。

程序意义:加强自己对于大数的处理。

说明:此程序对乘法和除法还未做任何优化,如果用上位运算的知识应该可以继续优化。 */ #include #define N 10000//宏定义数组长度 int main()

{

int nResult[N] = {0};//必须用一个足够大的数组来存储计算结果来确保计算结果不会溢出

int nDigit = 1; //位数

int nTemp = 0;//阶乘的任一元素与临时结果的某位的乘积结果

int i = 0;

int j = 0;

int nCarry = 0;//进位

int nNum = 0;

printf("Please input n:");

scanf("%d", &nNum);

nResult[0] = 1;//先将结果初始化为1

for (i = 2; i <= nNum; i++)//开始阶乘,阶乘元素从2开始一次“登场”

{

//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘

for (j = 1, nCarry = 0; j <= nDigit; j++)

{

nTemp = nResult[j - 1]*i + nCarry;//相应阶乘中的一项与当前所得临时结果的某位相乘且加上进位

nResult[j - 1] = nTemp % 100000;//更新临时结果的位上信息

nCarry = nTemp / 100000;//看是否有进位

}

while (nCarry)//判断当前临时结果的最高位是否有进位

{

nResult[nDigit++] = nCarry % 100000;//新增一位

nCarry /= 100000;//看是否还能继续进位

}

}

for (i = nDigit; i >= 1; i--)//显示结果

{

printf("%d", nResult[i - 1]); if (0 == nResult[i - 1])

{

printf("0000");//因为每个数组元素存储5位数字,每次输出项为0时需补上缺少的4个零

}

}

printf("\r\n");

return 0;

}

求一个数的阶乘值c语言代码,求10000的阶乘(c语言代码实现)相关推荐

  1. 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值

    编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值 目录 题目描述 代码实现 题目描述 序列重排:给一个长度为n的序列A,求找出 ...

  2. Verilog学习之求两个数的差值设计

    文章目录 前言 一.题目描述 二.代码展示 总结 前言 今天我们做的是第七道题--求两个数的差值,其实听名字就可以知道这道题其实特别的简单,只是两个数之间的比较求差而已,所以这道题我们就不具体写思路了 ...

  3. Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数

    今天参加腾讯笔试,做编程题时在最小公倍数.最大公约数这些这么简单的知识点上卡壳了,自信心受到强烈的打击,下来后猛复习了这方面的相关编程知识. 有以下几个关键点: 1.任意正整数的最大公约数.最小公倍数 ...

  4. 数据结构专题(二):2.2单链表与顺序表,求元素个数,取值与查找

    先了解一下头结点: 头结点本身并不存在链表里面的元素信息,我们用头结点的目的是方便以后将所有元素全部找起来. 如下代码分别对应求个数,取值,查找 注意:取值的函数第二个参数是位置 查找的函数第二个参数 ...

  5. 牛客VL7 求两个数的差值

    题目描述: 根据输入信号a,b的大小关系,求解两个数的差值:输入信号a,b为8bit位宽的无符号数.如果a>b,则输出a-b,如果a≤b,则输出b-a. 接口信号图如下: 核心代码: alway ...

  6. C语言求三个数的中间值(三目运算符)

    第一种方法:用三个数的和减去最大数和最小数// 获得三个数中的中间数 int getSecond(int a,int b,int c){int max = a > b ? a : b;max = ...

  7. 用函数求10个数的平均值_Excel AVERAGEIF函数条件求平均值

    AVERAGEIF 函数 说明:返回某个区域内满足给定条件的所有单元格的平均值(算术平均值) 语法:AVERAGEIF(range, criteria, [average_range]) 中文语法:A ...

  8. python求三个数的最大值编程_python 判断三个数字中的最大值实例代码

    python 判断三个数字中的最大值,具体代码如下所示: #判断三个数中最大值 n1= int(input('please enter the firest number:')) n2 = int(i ...

  9. python求两个数的最大公约数和最小公倍数_Python求两个数最大公约数、最小公倍数...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  10. C语言自定义输入10000个整数,C语言

    5. [问题描述] 输入一个以回车结束的字符串(少于80 个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串? 原字母 对应字母 A → Z B → Y C → ...

最新文章

  1. 亚信安全服务器深度安全防护系统中标“世界最长”的城轨网络
  2. shell操作典型案例--FTP操作
  3. 工业物联网发展环境加速形成 中国企业如何突围?
  4. GitHub上最励志的计算机自学教程,绝对牛B
  5. 使用jQuery快速高效制作网页交互特效(1)
  6. linux cpu 个数、核心数、线程数
  7. 网络工程师计算机职称考试,软考网络工程师中级职称评定条件
  8. JAVA校园二手交易平台
  9. 基于Neo4j图数据库的反欺诈模型初探1
  10. 三津谈保险系统建设:序言
  11. 博途/S7-1200 PLC 仿真时线圈得电却不能构成自锁回路解决方法
  12. java+动态修改prooper_Spring Aop 权限开发(Java后台管理权限) (完整版)
  13. 无法导入reg:指定的文件不是注册脚本——兼了解文本格式问题
  14. 发送网页内容到onenote_如何直接在网页上做笔记并保存到 Onenote?
  15. 微信小程序之模板的使用
  16. linux总复习(二)
  17. 三极管原理及贴片封装注意
  18. 【零基础微信小程序】基于百度大脑人像分割的证件照换底色小程序实战开发
  19. Guessing Game
  20. for 循环的流程图等价形式

热门文章

  1. java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z 的解决
  2. 首次公开,阿里云开源PolarDB总体架构和企业级特性
  3. 海云健康:上云为10万家药店带去了什么价值?
  4. 如何做规划?分享2种思维和4个方法
  5. 如何落地云原生DevOps?
  6. 全民加速节:全站加速在互联网媒体应用上的最佳实践
  7. 阿里云发布迁移解决方案,“迁移上云”这件事有专业的人做
  8. 移动云TeaTalk(长沙站)| 聚焦“云网一体”发展新机遇
  9. 各企业正在纷纷向“云”,背后有着哪些原因?
  10. 云+X案例展 | 传播类:富通云腾加速联通云数字化转型步伐