下载此文档

大整数阶乘程序设计-B.doc


文档分类:IT计算机 | 页数:约30页 举报非法文档有奖
1/30
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/30 下载此文档
文档列表 文档介绍
程序设计报告(2010/2011学年第一学期)题目::年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格大整数阶乘课题内容和要求1、系统的基本功能及要求(1)写一个类BigInteger,并有如下成员函数operator+/operator-/operator*/operator\,即整数的四则运算并重载运算符。(2)用该大整数计算n的阶乘并显示出来。(n∈[1,100])注:为了简化,可不考虑负数,则遇上形如“2-4”这样的表达式需要报错。2、程序执行过程(1)系统从键盘读入自然数n,直到输入了合法的n为止。(2)输出运算的结果,为便于观察结果,每输出四位中间插入空格,格式如下(例如,n=12):12!=479001600(3)询问用户是否继续进行,用户选择“是”,直到输入合法为止,转(1),否则退出程序。3、算法要求及提示(1)因为n较大时,n!的结果将超出长整形的保存范围,因此结果不能用longint型的变量来保存。本算法要求用链表来存储。(2)链表的每一个节点存储结果的一位数字,因此结果的输出实际上是链表的遍历问题,同时要先考虑用多少位来表示大整数。4、其他要求(1)输入时具备一定的容错性判断,如输入的不是数字,或输入的数超过范围等等。(2)变量、函数命名符合规范。(3)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。(4)程序的层次清晰,可读性强。需求分析1)课题要求已说明结果不能用longint型的变量来保存,要求用链表来存储。,首先要定义一个节点类,在这里定义一个双向节点类。2)定义一个BigInteger大整数类,使其能够存放大数阶乘,并实现其的四则运算。3)对输入整数的合法性进行检查,必须考虑用户各种输入情况。,结点类定义如下:classNode{intdata; Node*next;//指向大数的高位 Node*pre;//指向大数的低位 friendclassBigInteger;};,在主函数中通过定义大整数对象调用,大整数类定义如下:classBigInteger//定义大整数类{public: Node*head,*head1; intn,temp,i,jinwei; BigInteger();//无参构造函数 ~BigInteger();//析构函数 voidjiecheng();//阶乘函数 voidoperator+(BigIntegerp1);//加法运算重载声明 voidoperator-(BigIntegerp1);//减法运算重载声明voidoperator*(BigIntegerp1);//乘法运算重载声明 voidoperator/(BigIntegerp1);//除法运算重载声明};:因为n较大时,n!的结果将超出长整形的保存范围,因此结果不能用longint型的变量来保存。本算法数据用单链表来存储。链表的每一个节点存储结果的一位数字,因此结果的输出实际上是链表的遍历问题,同时要先考虑用多少位来表示大整数。首先申请一个结点类并赋数据域初值1,然后遍历单链表逐个的数据域与i(1到n)相乘;乘完后重新遍历,对每个结点的数据域处理,若小于10则跳过;否则,判断下一结点是否存在,若存在则该数据域除10取余,下一结点的数据域加上该数据域除10的结果,若不存在则申请新结点空间,处理同上;全部乘完并处理完后,遍历单链表并输出各自的数据域即可,注意每四个输出一个空格。4、流程图输入n开始N在1到100之间?是否计算n!是是是否继续?输出n!,在主函数通过定义大整数类对象调用,阶乘函数的定义如下:voidBigInteger::jiecheng(){ Node*cur,*cc; Node*head=newNode;//存放第一个节点,值为1 head->data=1; head->pre=head->next=NULL; for(i=2;i<=n;i++)//从2开始连乘到n { cur=head; jinwei=0; while(1) { temp=i*(cur->data)+jinwei; cur->data=te

大整数阶乘程序设计-B 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数30
  • 收藏数0 收藏
  • 顶次数0
  • 上传人iris028
  • 文件大小379 KB
  • 时间2020-07-01