数据结构课程设计报告撰写要求(一)纸张与页面要求1.采用国际标准A4型打印纸或复印纸,纵向打印。
2.封页和页面按照下面模板书写(正文为:小四宋体1.5倍行距)。
3.图表及图表标题按照模板中的表示书写。
(二)课设报告书的内容应包括以下各个部分:(按照以下顺序装订)1.封页(见课设模版)2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。
2.任务书(学生教师均要签字,信息填写完整)3.目录4.正文一般应包括以下内容:(1)题目介绍和功能要求(或描述)课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述;(2) 系统功能模块结构图绘制系统功能结构框图及主要模块的功能说明;(3) 使用的数据结构的描述: 数据结构设计及用法说明;(4) 涉及到的函数的描述 ;(5) 主要算法描述( 程序流程图)(6) 给出程序测试/运行的结果设计多组数据加以描述(包括输入数据和输出结果)(7) 课程设计的总结及体会(8) 参考文献格式要求:[1]作者,等. 书名.出版地:出版社,出版年5.附录:程序清单 (应带有必要的注释)沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:大整数计算器院(系):计算机学院专业:班级:学号:姓名:指导教师说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日沈阳航空航天大学课程设计任务书目录1 课程设计内容 (1)1.1题目介绍 (1)1.2功能要求 (2)2 系统功能模块 (3)2.1主模块 (3)2.1.1 系统功能结构图 (3)2.2主要模块功能说明 (3)3 详细设计 (5)3.1数据结构描述 (5)3.2 算法流程 (7)4 程序测试及总结 (11)4.1测试、运行 (11)参考文献 (13)附录(关键部分程序清单) (16)1 课程设计内容1.1 题目介绍由于整形数据存储位数有限,因此将整型数据用字符串进行存储。
在大整数计算器分为四个大模块,分别为大整数加法运算、大整数减法运算、大整数乘法运算、大整数除法运算函数模块。
由一个主模块所调用。
加法运算功能,从个位开始逐位相加,超过或达到10则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。
减法运算功能,首先调用库函数strcmp判断这两个大整数是否相等,如果相等则结果为0,否则用Compare函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。
乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。
除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。
主函数,主函数是程序的入口,采用模块化设计。
通过一定的入口可以进行加法运算功能、减法运算功能、乘法运算功能、除法运算功能。
1.2 功能要求1.大整数加法:采用数学中列竖式的方法,从个位开始逐位相加,超过或达到10则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。
2.大整数减法:首先调用库函数判断这两个大整数是否相等,如果相等则结果为0,否则用Compare函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。
3.大整数乘法:首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。
4.大整数除法:反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数。
5.其实就是利用算法中的高精度算法进行加减乘除的实现。
来实现大整数计算器。
2 系统功能模块2.1 主模块2.1.1 系统功能结构图设计程序实现两个大整数四则运算,输出这两个大整数的和、差、积、商及余数,实现大整数(200位以内的整数)的加、减、乘、除运算。
根据需要可以进行如下操作:加法、减法、乘法、除法。
其功能模块图如图2-1所示。
图2.1 主模块设计图2.2 数据结构描述大整数计算器分为四个大模块,分别为大整数加法运算、大整数减法运算、大整数乘法运算、大整数除法运算函数模块。
加法运算功能,加法运算功能是将两个字符从个位开始进行逐位相加,然后把每一位的相加结果存放到字符串中,并且输出运算结果。
其流程图如图3-2所示。
输入两个相加的字符,然后从个位开始逐位相加,判断两个数相加的结果是否大于或等于十,如果是,那么向前一位进一,并将所得结果存放到另一个字符串中,如果不是,则直接将所得结果存放到另一个字符串中。
当所有结果都存入该字符串中时,判断是否所有位都进行了加法运算,若是,输出结果,若不是,重复上述过程,继续进行运算,直至所有位都进行了加法运算时输出结果。
减法运算功能,减法运算功能是将输入的两个相减的大整数,对齐位依次进行减法运算,并输出结果。
首先,在输入两个大整数后开始判断他们是否相等,若相等,输出结果为零,结束运算。
若不相等,开始进行运算结果的正负判断,当被减数大于减数时,结果为正,否则结果为负。
然后,对两个大整数对齐位依次进行减法,若够减且每一位都已减完,那么输出运算结果;若不够减,则向前借位依次进行减法运算,直到每一位都已减完,输出结果。
其功能流程图如图3-3所示。
乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。
除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。
主函数,主函数是程序的入口,采用模块化设计。
通过一定的入口可以进行加法运算功能、减法运算功能、乘法运算功能、除法运算功能。
沈阳航空航天大学课程设计报告错误!未指定书签。
3 算法描述3.1 数据结构描述⑴加法运算功能加法运算功能是将两个字符从个位开始进行逐位相加,然后把每一位的相加结果存放到字符串中,并且输出运算结果。
输入两个相加的字符,然后从个位开始逐位相加,判断两个数相加的结果是否大于或等于十,如果是,那么向前一位进一,并将所得结果存放到另一个字符串中,如果不是,则直接将所得结果存放到另一个字符串中。
当所有结果都存入该字符串中时,判断是否所有位都进行了加法运算,若是,输出结果,若不是,重复上述过程,继续进行运算,直至所有位都进行了加法运算时输出结果。
详细代码及程序见附录中的代码的——void IntAddition(char *augend, char *addend, char *sum)//整数加法模块。
流程图见图3.1加法模块⑵减法运算功能减法运算功能是将输入的两个相减的大整数,对齐位依次进行减法运算,并输出结果。
首先,在输入两个大整数后开始判断他们是否相等,若相等,输出结果为零,结束运算。
若不相等,开始进行运算结果的正负判断,当被减数大于减数时,结果为正,否则结果为负。
然后,对两个大整数对齐位依次进行减法,若够减且每一位都已减完,那么输出运算结果;若不够减,则向前借位依次进行减法运算,直到每一位都已减完,输出结果。
详细代码及程序见附录中的代码的void IntSubtration(char *minuend, char *subtrahend, char *difference)//整数减法模块。
流程图见图3.2减法模块⑶乘法运算功能乘法运算功能是将输入的两个大整数进行乘法运算,并输出结果。
首先,输入两个大整数,一个为乘数一个为被乘数,让乘数和被乘数的每一位相乘,并将相乘后所得的结果存放到另一个字符串中,以此循环下去。
然后,判断两个大整数的每一位是否乘完,若是,则将所得的i个字符串相加,并输出相加后的结果,其值为两数相乘的乘积,若不是,继续进行以上操作,直至得到两个大整数相乘的结果。
详细代码及程序见附录中void IntMultiplication(char *multiplicand, char *multiplier, char *product)//整数乘模块。
流程图见图3..3乘法模块⑷除法运算功能除法运算功能是将输入的两个大整数进行除法运算,并输出结果。
输入两个数,其中一个是除数,一个是被除数。
用被除数减去除数,若被除数小于除数,则输出被除数减除数的个数作为商,剩余不够减的数则为余数,并输出商和余数。
若被除数大于除数,继续循环被除数减除数的过程,直至被除数小于除数,输出所得结果。
详细代码及程序见附录中void IntDivision(char *dividend, char *divisor, char *quotient, char *remainder)//整数除模块。
流程图见图3.4除法模块3.2 算法流程1. 加法运算功能图3.1 加法模块设计图2.减法功能图3.2减法模块设计图3.乘法功能乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。
图3.3乘法模块设计图4.除法功能除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。
图3.4除法模块设计图4 程序测试及总结4.1 测试、运行1、一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数。
主函数意味着建立一个独立进程,且该进程成为了程序的入口,对其它各函数进行调用,当然其它被调用函数也可以再去调用更多函数。
主函数既是程序的入口,又是程序的出口。
先输入两个数,选择所需的运算。
其功能实现图如图4-1所示。
图4.1主界面2、加法运算功能,采用数学中列竖式的方法,从个位(即字符串的最后一个字符)开始逐位相加,超过或达到10则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。