下载此文档

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


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

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

非法内容举报中心
文档信息
  • 页数26
  • 收藏数0 收藏
  • 顶次数0
  • 上传人君。好
  • 文件大小362 KB
  • 时间2020-10-09