其实这个求n的阶乘问题,我们在刚刚学习c语言的时候,应该就有大致的了解过了,那个时候我们可能会设置一个循环变量,或者使用递归方法,但是当n比较大时,我们会怎么做呢? 本文主要是将结果存放在int类型的数组中,然后每个单元存放6位数,整体思想还是采用我们小学时的竖乘法。 戳视频链接:n的阶乘问题视频讲解 再次声明:因为我本人主要是录着玩玩的,所以讲解时并没有备稿~ 输出结果时注意格式的控制,尤其是关于0的问题,因为int和char不太一样,如果结尾6个0,不控制好格式的话,可能就只剩下一个0了!!! 分析中,书上有一个地方印刷错误,应该是699238,不是699263!!! 竖式乘法我大致画了一个图帮助大家理解:算法题目
算法分析
代码实现
#include<stdio.h> //求n! int main() { int s[256]; //用来存放运算结果 int n; //用来输入求谁的阶乘 int d; //用来表示进位 int b; //用来表示临时结果 int m=1; //用来表示占用数组的单元个数 int i,j,k; //循环变量 i表示运算数循环变量 j表示运算结果数组循环变量 k表示输出控制循环变量 s[1]=1; printf("请输入你想求哪个数(n)的阶乘:n"); scanf("%d",&n); for(i=2;i<=n;i++) { d=0; for(j=1;j<=m;j++) { b=s[j]*i+d; s[j]=b%1000000; d=b/1000000; } if(d!=0) { m++; s[m]=d; } } printf("%d ",s[m]); for(k=m-1;k>=1;k--) printf("%06d ",s[k]); //因为int不比char,所以控制0需要注意 return 0; }
结果示例
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算