C语言程序设计教学全套-11大数阶乘.pptx

C语言程序设计教学全套-11大数阶乘.pptx

ID:52848614

大小:1.23 MB

页数:8页

时间:2020-03-26

C语言程序设计教学全套-11大数阶乘.pptx_第1页
C语言程序设计教学全套-11大数阶乘.pptx_第2页
C语言程序设计教学全套-11大数阶乘.pptx_第3页
C语言程序设计教学全套-11大数阶乘.pptx_第4页
C语言程序设计教学全套-11大数阶乘.pptx_第5页
资源描述:

《C语言程序设计教学全套-11大数阶乘.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、大数阶乘主讲人:刘斌02问题:大数阶乘,计算用户输入的自然数n的阶乘,并统计位数。要求能精确计算较大数的阶乘,例如10000!分析:构造一个新的数据类型来计算并存储-数组。数组的应用数组的应用03123*45=?1231234545×3*5=152*5=101*5=53*4=122*4=81*4=4数组的应用具体思路可以描述为:04从个位开始用i去乘(i-1)!的每一位,假设已处理到第j位,将bit[j]*i加上前一位的进位carry(如果是个位即j=N-1,carry=0)先放到bit[j]中,再将商bit[j]/10作为

2、下一位的进位,余数bit[j]%10就是本位应放的值。如果最高位(下标为k的那位)已处理完,看本位是否有进位,如果有,即carry!=0,就将k--,继续重复以上操作,直到carry==0,此时,i!以求完毕,k的值为i!最高位的下标。数组的应用05(1)#include"stdio.h"(2)#defineN500000//n!的位数,要足够大(3)intFact(intbit[N],intn)(4){(5)inti,j,k=N-1,carry;//k表示最高位的下标(6)bit[k]=1;//0或1的阶乘(7)for(i

3、=2;i<=n;i++)(8){//以1!为基础,依次求2!,3!,直到n!(9)carry=0;//carry表示进位数,开始进位数为0(10)for(j=N-1;j>=k;j--)(11){(12)bit[j]=bit[j]*i+carry;(13)carry=bit[j]/10;//处理进位(14)bit[j]=bit[j]%10;//处理当前位(15)if(j==k&&carry)//当处理到(i-1)!的最高位元素时(即j==k),只要有进位(即carry!=0),最高位元素下标前移(16)k--;(17)}(18

4、)}(19)returnk;(20)}数组的应用06(21)intmain()(22){(23)staticintbit[N]={0};//存放n!的结果(24)inti,k,n;(25)printf("请输入一个不超过十万的自然数,计算它的阶乘:");(26)scanf("%d",&n);(27)k=Fact(bit,n);(28)printf("%d!=",n);(29)for(i=k;i

5、d位数。",n,N-k);(33)return0;(34)}课堂实践::编写求整数a的b次方函数voidPower(intt[],intresult[],inta,intb)。要求对足够大的b能精确计算a的b次方,例如a的10000次方。数组的应用0708再见

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。