版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告撰写要求数据结构课程设计报告撰写要求(一)纸张与页面要求 1采用国际标准 A4 型打印纸或复印纸,纵向打印。 2封页和页面按照下面模板书写(正文为:小四宋体 1.5 倍行距) 。3图表及图表标题按照模板中的表示书写。 (二) 课设报告书的内容应包括以下各个部分:(按照以下顺序装订)1.封页(见课设模版)2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。2.任务书(学生教师均要签字,信息填写完整)3.目录4.正文一般应包括以下内容: (1)题目介绍和功能要求(或描述)课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述;(2) 系统功能
2、模块结构图 绘制系统功能结构框图及主要模块的功能说明; (3) 使用的数据结构的描述: 数据结构设计及用法说明;(4) 涉及到的函数的描述 ; (5) 主要算法描述( 程序流程图)(6) 给出程序测试/运行的结果设计多组数据加以描述(包括输入数据和输出结果) (7) 课程设计的总结及体会(8) 参考文献 格式要求:1作者,等. 书名.出版地:出版社,出版年 5.附录:程序清单 (应带有必要的注释) 沈阳航空航天大学课课 程程 设设 计计 报报 告告课程设计名称:数据结构课程设计数据结构课程设计课程设计题目: 大整数计算器大整数计算器院(系):计算机学院专 业: 班 级:学 号:姓 名:指导教师
3、说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。不予通过。报告和电子数据必须作为实验现象重复的关键依据。沈阳航空航天大学课程设计报告 学术诚信声明 本人声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同
4、工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日沈阳航空航天大学课程设计报告 I 沈阳航空航天大学沈阳航空航天大学课课程程设设计计任任务务书书课程设计名称 数数据据结结构构课课程程设设计计专业网网络络工工程程学生姓名李李典典通通班级34010201学号2013040102031题目名称大大整整数数计计算算器器的的实实现现起止日期2015年1月5日起至2015年1月16日止课设内容和要求:内容:内容:由于整形数据存储位数有限,因此引
5、入串的概念,将整型数据用字符串进行存储,利用字符串的一个字符存储大整数的一位数值,然后根据四则运算规则对相应位依次进行运算,同时保存进位,从而实现大整数精确的运算。要求: 1以大整数形式从键盘输入操作数。2演算在求值的运算操作中,输入操作数和主要的操作的变化过程。3利用所学知识,设计相应的数据结构。参考资料: 1 严蔚敏,吴伟民.数据结构(C 语言版)M.北京:清华大学出版社,2006 2 吕国英.算法设计与分析M.北京:清华大学出版社,20063 徐宝文 李志. C 程序设计语言M.北京: 机械工业出版社,2004教教研研室室审审核核意意见见:同同意意 教教研研室室主主任任签签字字:指导教师
6、(签名)指导教师(签名)2014年12月29日学学 生(签名)生(签名)2014年12月31日沈阳航空航天大学课程设计报告 II 目目 录录1 课程设计课程设计内容内容.11.1 题目介绍 .11.2 功能要求 .22 系统功能模块系统功能模块.32.1 主模块 .32.1.1 系统功能结构图.3 2.2 主要模块功能说明.33 详细设计详细设计.53.1 数据结构描述.53.2 算法流程.74 程序测试及总结程序测试及总结.114.1 测试、运行 .11参考文献参考文献.15附附 录(关键部分程序清单)录(关键部分程序清单).16沈阳航空航天大学课程设计报告 0 1 课程设计内容1.1 题目
7、介绍题目介绍由于整形数据存储位数有限,因此将整型数据用字符串进行存储。在大整数计算器分为四个大模块,分别为大整数加法运算、大整数减法运算、大整数乘法运算、大整数除法运算函数模块。由一个主模块所调用。加法运算功能,从个位开始逐位相加,超过或达到 10 则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。减法运算功能,首先调用库函数 strcmp 判断这两个大整数是否相等,如果相等则结果为 0,否则用 Compare 函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。乘法运算功能,首先让乘数的每
8、一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。主函数,主函数是程序的入口,采用模块化设计。通过一定的入口可以进行加法运算功能、减法运算功能、乘法运算功能、除法运算功能。沈阳航空航天大学课程设计报告 1 1.2 功能要求功能要求1.大整数加法:采用数学中列竖式的方法,从个位开始逐位相加,超过或达到 10 则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数
9、的所有位为止。2.大整数减法:首先调用库函数判断这两个大整数是否相等,如果相等则结果为 0,否则用 Compare 函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。3.大整数乘法:首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。4.大整数除法:反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数。5.其实就是利用算法中的高精度算法进行加减乘除的实现。来实现大整数计算器。沈阳航空航天大学课程设
10、计报告 2 2 系统功能模块2.1 主模块主模块2.1.1 系统功能结构图系统功能结构图设计程序实现两个大整数四则运算,输出这两个大整数的和、差、积、商及余数,实现大整数(200 位以内的整数)的加、减、乘、除运算。根据需要可以进行如下操作:加法、减法、乘法、除法。其功能模块图如图 2-1 所示。图图 2.12.1 主模块设计图主模块设计图 2.2 数据结构描述数据结构描述大整数计算器分为四个大模块,分别为大整数加法运算、大整数减法运算、大整数乘法运算、大整数除法运算函数模块。 加法运算功能,加法运算功能是将两个字符从个位开始进行逐位相加,然沈阳航空航天大学课程设计报告 3 后把每一位的相加结
11、果存放到字符串中,并且输出运算结果。其流程图如图 3-2所示。输入两个相加的字符,然后从个位开始逐位相加,判断两个数相加的结果是否大于或等于十,如果是,那么向前一位进一,并将所得结果存放到另一个字符串中,如果不是,则直接将所得结果存放到另一个字符串中。当所有结果都存入该字符串中时,判断是否所有位都进行了加法运算,若是,输出结果,若不是,重复上述过程,继续进行运算,直至所有位都进行了加法运算时输出结果。 减法运算功能,减法运算功能是将输入的两个相减的大整数,对齐位依次进行减法运算,并输出结果。首先,在输入两个大整数后开始判断他们是否相等,若相等,输出结果为零,结束运算。若不相等,开始进行运算结果
12、的正负判断,当被减数大于减数时,结果为正,否则结果为负。然后,对两个大整数对齐位依次进行减法,若够减且每一位都已减完,那么输出运算结果;若不够减,则向前借位依次进行减法运算,直到每一位都已减完,输出结果。其功能流程图如图 3-3 所示。乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。主函数,主函数是程序的入口,采用模块化设计。通过一定的
13、入口可以进行加法运算功能、减法运算功能、乘法运算功能、除法运算功能。沈阳航空航天大学课程设计报告 4 3 算法描述3.1 数据结构描述数据结构描述 加法运算功能加法运算功能是将两个字符从个位开始进行逐位相加,然后把每一位的相加结果存放到字符串中,并且输出运算结果。输入两个相加的字符,然后从个位开始逐位相加,判断两个数相加的结果是否大于或等于十,如果是,那么向前一位进一,并将所得结果存放到另一个字符串中,如果不是,则直接将所得结果存放到另一个字符串中。当所有结果都存入该字符串中时,判断是否所有位都进行了加法运算,若是,输出结果,若不是,重复上述过程,继续进行运算,直至所有位都进行了加法运算时输出
14、结果。详细代码及程序见附录中的代码的void IntAddition(char *augend, char *addend, char *sum)/整数加法 模块。流程图见图 3.1 加法模块 减法运算功能减法运算功能是将输入的两个相减的大整数,对齐位依次进行减法运算,并输出结果。首先,在输入两个大整数后开始判断他们是否相等,若相等,输出结果为零,结束运算。若不相等,开始进行运算结果的正负判断,当被减数大于减数时,结果为正,否则结果为负。然后,对两个大整数对齐位依次进行减法,若够减且每一位都已减完,那么输出运算结果;若不够减,则向前借位依次进行减法运算,直到每一位都已减完,输出结果。详细代码及
15、程序见附录中的代码的 void IntSubtration(char *minuend, char *subtrahend, char *difference)/整数减法 模块。流程图见图 3.2 减法模块沈阳航空航天大学课程设计报告 5 乘法运算功能乘法运算功能是将输入的两个大整数进行乘法运算,并输出结果。 首先,输入两个大整数,一个为乘数一个为被乘数,让乘数和被乘数的每一位相乘,并将相乘后所得的结果存放到另一个字符串中,以此循环下去。然后,判断两个大整数的每一位是否乘完,若是,则将所得的 i 个字符串相加,并输出相加后的结果,其值为两数相乘的乘积,若不是,继续进行以上操作,直至得到两个大整
16、数相乘的结果。详细代码及程序见附录中 void IntMultiplication(char *multiplicand, char *multiplier, char *product)/整数乘模块。流程图见图 3.3 乘法模块 除法运算功能除法运算功能是将输入的两个大整数进行除法运算,并输出结果。输入两个数,其中一个是除数,一个是被除数。用被除数减去除数,若被除数小于除数,则输出被除数减除数的个数作为商,剩余不够减的数则为余数,并输出商和余数。若被除数大于除数,继续循环被除数减除数的过程,直至被除数小于除数,输出所得结果。详细代码及程序见附录中 void IntDivision(char
17、*dividend, char *divisor, char *quotient, char *remainder)/整数除模块。流程图见图 3.4 除法模块沈阳航空航天大学课程设计报告 6 3.2 算法流程算法流程1. 加法运算功能图图 3.13.1 加法模块设计图加法模块设计图沈阳航空航天大学课程设计报告 7 2.减法功能图图 3.23.2 减法模块设计图减法模块设计图沈阳航空航天大学课程设计报告 8 3.乘法功能乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。图图 3.33.3 乘法模块设
18、计图乘法模块设计图 沈阳航空航天大学课程设计报告 9 4.除法功能除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。图图 3.43.4 除法模块设计图除法模块设计图沈阳航空航天大学课程设计报告 10 4 程序测试及总结4.1 测试、运行测试、运行 1、一般而言,编写一个能运行在操作系统上的程序,都需要一个主函数。主函数意味着建立一个独立进程,且该进程成为了程序的入口,对其它各函数进行调用,当然其它被调用函数也可以再去调用更多函数。主函数既是程序的入口,又是程序的出口。先输入两个数,选
19、择所需的运算。其功能实现图如图 4-1 所示。图图 4.14.1 主界面主界面2、加法运算功能,采用数学中列竖式的方法,从个位(即字符串的最后一个字符)开始逐位相加,超过或达到 10 则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。其功能实现图如图 4-2 所示。沈阳航空航天大学课程设计报告 11 3、减法运算功能,首先调用库函数 strcmp 判断这两个大整数是否相等,如果相等则结果为 0,否则用 Compare 函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。其功能实现图如图 4-
20、3 所示。图图 4.2 加法运行加法运行图图 4.3 减法运算减法运算3、乘法运算功能,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。功实现图如图 4-4 所示4、除法运算功能,类似做减法,基本思想是反复做减法,从被除数里最多沈阳航空航天大学课程设计报告 12 能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。其功能实现图如图 4-5 所示。图图 4.4 乘法运算实现乘法运算实现图图 4.5 除法运算除法运算沈阳航空航天大学课程设计报告 13 5、按 5 退
21、出计算本次计算,按任意键继续运算,按 Ctrl+z 退出计算器,其功能实现图如图 4-6 所示。图图 4.5 结束界面结束界面图图 4.6 0 与与 0 运算运算沈阳航空航天大学课程设计报告 14 参考文献1、谭浩强.C 程序设计.北京:清华大学出版社.1999.122、滕国文.数据结构课程设计.北京:清华大学出版社.2010.093、苏仕华 等编著. 数据结构课程设计. 北京:机械工业出版社.2005.05 4、张乃笑.数据结构与算法.电子工业出版社.2004.10 5、 徐孝凯.数据结构课程实验.清华大学出版.2002.76、严蔚敏.数据结构(C 语言版). 清华大学出版社.2006沈阳航
22、空航天大学课程设计报告 15 附 录(关键部分程序清单)#include#include#include#define MAX 200int Compare(const char *a, const char *b);void IntAddition(char *augend, char *addend, char *sum);void IntSubtration(char *minuend, char *subtrahend, char *difference);void IntMultiplication(char *multiplicand, char *multiplier, char
23、 *product);void IntDivision(char *dividend, char *divisor, char *quotient, char *remainder);int Radix(char *toStr, char *fromStr);void FloatAddition(char *augend, char *addend, char *sum);void FloatSubtration(char *minuend, char *subtrahend, char *difference);void FloatMultiplication(char *multiplic
24、and, char *multiplier, char *product);void FloatDivision(char *dividend, char *divisor, char *quotient, int precision);void Insert(char s, int left, int right);int IsCycle(char aMAX, int label);int main(void) int t;int p; char aMAX = 0; char bMAX = 0; char c3*MAX = 0; char dMAX = 0;puts(输入任意值开始计算 Ct
25、rl+z 结束计算);while(scanf(%d,&p)!=EOF) puts(请输入两个数 a,b:); scanf(%s %s,&a,&b); printf(=选择运算方式=); printf(ttttn1.加法运算n); printf(ttttn2.减法运算n); printf(ttttn3.乘法运算n); printf(ttttn4.除法运算n); printf(tttttn5.退出n); printf(=n);puts(a); puts(b);沈阳航空航天大学课程设计报告 16 t=1;while(t!=5) scanf(%d,&t); if(t=1
26、) FloatAddition(a, b, c); puts(两者之和:); puts(c); else if(t=2) FloatSubtration(a, b, c); puts(两者之差:); puts(c); else if (t=3) FloatMultiplication(a, b, c); puts(两者之积:); puts(c); else if(t=4) FloatDivision(a, b, c, MAX); puts(两者之商:); puts(c); system(pause); void FloatAddition(char *augend, char *addend,
27、 char *sum)/加法 char cAugMAX = 0; char cAddMAX = 0; char cSumMAX = 0;沈阳航空航天大学课程设计报告 17 int lenAug, lenAdd, lenSum;/分别存储三个数的小数点后的数字个数 int i, topAug, topAdd; /去掉小数点,把浮点数转化成整数后存储到新的字符串 lenAug = Radix(cAug, augend); lenAdd = Radix(cAdd, addend); topAug = strlen(cAug); topAdd = strlen(cAdd); /在小数部分较短的字符串后
28、补零,使得两个数的小数部分长度相等 if (lenAug lenAdd) lenSum = lenAug; for (i=lenAug-lenAdd; i0; i-) cAddtopAdd+ = 0; else lenSum = lenAdd; for (i=lenAdd-lenAug; i0; i-) cAugtopAug+ = 0; cAddtopAdd+ = 0; cAugtopAug+ = 0; /执行整数加法运算 IntAddition(cAdd, cAug, cSum); i = strlen(cSum) - 1; while (lenSum 0 & cSumi = 0)/
29、去掉小数部分多余的零 i-; lenSum-; cSumi+2 = 0; while (lenSum 0)/在适当位置插入. cSumi+1 = cSumi; i-; lenSum-; cSumi+1 = .;沈阳航空航天大学课程设计报告 18 strcpy(sum, cSum);void FloatSubtration(char *minuend, char *subtrahend, char *difference)/减法 if (strcmp(minuend, subtrahend) = 0) strcpy(difference, 0); return; char cMMAX = 0;
30、char cSMAX = 0; char cDMAX = 0; int lenM, lenS, lenD; int i, topM, topS; lenM = Radix(cM, minuend); lenS = Radix(cS, subtrahend); topM = strlen(cM); topS = strlen(cS); if (lenM lenS) lenD = lenM; for (i=lenM-lenS; i0; i-) cStopS+ = 0; else lenD = lenS; for (i=lenS-lenM; i0; i-) cMtopM+ = 0; cMtopM+
31、= 0; cStopS+ = 0; IntSubtration(cM, cS, cD); i = strlen(cD) - 1; while (lenD 0 & cDi = 0)沈阳航空航天大学课程设计报告 19 i-; lenD-; cDi+2 = 0; while (lenD 0) cDi+1 = cDi; i-; lenD-; cDi+1 = .; if (i = -1) cD0 = 0; cD1 = .; cD2 = 0; strcpy(difference, cD);void FloatMultiplication(char *multiplicand, char *mult
32、iplier, char *product)/乘法 char cDMAX = 0; char cRMAX = 0; char cP2*MAX = 0; int lenD, lenR, lenP; lenD = Radix(cD, multiplicand); lenR = Radix(cR, multiplier); lenP = lenD + lenR; IntMultiplication(cD, cR, cP); int i = strlen(cP) - 1; while (lenP 0 & cPi = 0) i-; lenP-; cPi+2 = 0;沈阳航空航天大学课程设计报告
33、20 while (lenP 0 & i = 0) cPi+1 = cPi; i-; lenP-; cPi+1 = .; if (i = -1) for (i=strlen(cP); i0; -i) cPi+1+lenP = cPi; for (i=0; i lenR) lenQ = lenD - lenR; else lenQ = 0; i = strlen(cD); for (j=0; jlenR-lenD; j+) cDi+ = 0; cDi = 0; IntDivision(cD, cR, cQ, cY); t = j = strlen(cQ); for (i=0; i 0) cQt = cQt-1; else t = 1; cQt = 0; cQt = .; if (t = 0) for (i=j+; i=0; -i) cQi+1 = cQi; cQ0 = 0; +j; i = t = 0; while (i precision & strcmp(cY, 0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国开大学劳动合同法形考
- 合同法36条对应民法典 区别
- 2024《集体合同示范文本》
- 2024新版个人对个人抵押合同范本
- 紧急事件安全防控
- 2024专卖店劳动合同范本
- 物业工程部技能培训课件
- 2024劳务分包合同范本建筑分包合同范本
- 2024所有户外广告合同标准版
- 2024《水电安装合同》
- 江西省建设项目环境监理技术指南
- 2024-2030年中国南美白对虾行业市场竞争格局及发展趋势与投资前景研究报告
- 重大事故隐患判定标准课件
- JJF(建材)157-2019 智能坐便器防水击性能和防虹吸功能测试装置校准规范报批稿
- 附件2:工程实体质量常见问题治理自评总结报告-施工
- 2023年江苏省公安机关招考录用人民警察简章
- 渐开线齿廓及啮合特性讲解
- 水工建筑物练习题库(附答案)
- 2024新老物业移交协议
- 在线网课知道智慧《电路(1)(山大)》单元测试考核答案
- 不履行合同义务催告函范文
评论
0/150
提交评论