样例-C语言总结报告_第1页
样例-C语言总结报告_第2页
样例-C语言总结报告_第3页
样例-C语言总结报告_第4页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、丽水学院C 语言课程设计总结报告题目计算器指导教师院系专业班级学 02)姓名成绩二一五年七月十五日表1 进度安排表C语言课程设计进度表选题名称:计算器班级:学号:02)姓名:任课教师:卢敏一、系统设计起始时间及计划完成时间:6.27 6.28二、系统实现起始时间及计划完成时间:6.28 6.30三、测试起始时间及计划完成时间:6.30 7.01表 2 中期报告表C语言课程设计中期报告(系统设计)选题名称:计算器班级:网络 15学号02)姓名:陈标任课教师:卢敏起始时间及计划完成时间:6.27 7.01一、题目(问题)

2、描述该计算器主要实现的是四则运算,以及N次方的运算,阶乘运算和累加运算;其中对溢出需要进行控制,对错误的输入进行提示以及对运算结果进行清零或继续运算;另外需要一个列举功能的实现计算器功能的菜单,有需要时可设置二级或者三级菜单,使条理更加清楚。二、问题分析实现最基本计算器的功能需要进行进行加减乘除的运算,这时就有两种思路:一是利用线性关系进行处理,将数字进行一次一次的运算,这样的运算效果低,相对来说功能也弱。二是利用栈进行处理,可输入数字的表达式, 。三、系统设计1程序总体结构主菜单大数菜单小数菜单四则运算加减乘除N次方阶乘累加2界面设计界面设计运用了简单的菜单布局,设计了二级菜单,可以进行随意

3、来返两个菜单之间。菜单第一行都是提示输入信息或进行该菜单的描述,后面若干行都是该菜单功能的描述。一级主菜单/*计算器*/*请按照提示进行输入数字*/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.大数的加减乘除6.退出小数二级菜单/*请按照提示进行输入数字*/1.N 次方运算2.阶乘运算3.累加运算4.清零并返回大数二级菜单/*请按照提示进行输入数字*/1.加法运算2.减法运算3.乘法运算4.除法运算5.返回菜单目录第一章系统功能说明1第二章程序结构22 1 程序结构说明22 2 重要数据说明22 3 函数清单3第三章使用说明73 1 安装手册73 2 使用手册7第四章系统设计难

4、点及其解决方法94 1 栈的四则运算94 2 大数的加减乘除94 2 1 大数的加法94 2 2 大数的减法94 2 3 大数的乘法94 2 3 大数的除法9第五章不足之处10计算器丽水学院 C 语言课程设计总结报告第一章系统功能说明本程序可实现简单的计算机功能,对数字进行加减乘除的运算,N次方的运算,阶乘和累加,并能对错误的输入进行提示,对溢出进行判断以及继续运算和返回菜单的功能。对小数的加减乘数是利用栈来实现的,因此与一般的须分步进行运算的计算器不同,该计算器可直接输入一串关于运算的表达式,并以#结束,可直接输出结果,无需人为的判断优先关系,进行分步运算,因此在运算操作上大大节省了用户的时

5、间,减少了繁琐的步骤。 。1计算器丽水学院 C 语言课程设计总结报告第二章程序结构21程序结构说明该计算器程序大体结构如图2-1所示。主菜单大数菜单四则运算N次方阶乘累加加减乘除图 2-1计算器程序大体结构程序结构如图所示,通过主菜单可直接进入栈的四则运算,N 次方运算,阶乘运算和累加运算; 另外也可通过主菜单进入大数菜单的界面,进而选择大数加法运算,大数减法运算,大数乘法运算或大数除法运算。22重要数据说明/- 全局变量 -int N=0;/ 作为全局变量使用,用于存储运算结果/- 函数结果状态代码-#define TRUE 1#define FALSE 0#define OK 1#defi

6、ne ERROR 0#define OVERFLOW -2 / 用于分配地址空间错误时的返回#define MN 1000 / 大数的存放位数上限/- 定义函数类型,返回结果状态代码-2计算器丽水学院 C 语言课程设计总结报告typedef int Status;/- 定义栈的元素类型-typedef int ElemType;/- 栈的顺序存储表示-#define STACK_INIT_SIZE 100#define STACKINCREMENT 10/- 顺序栈的定义,并定义栈顶和栈底元素-typedef structElemType *base;ElemType *top;int sta

7、cksize;Stack;23函数清单/- 大数运算基本操作的函数原型说明-1int Inversion(char *str);/ 该函数为倒置函数, 可引入一个数组将数组中元素倒置存放。该函数大体流程如图2-2所示。倒置函数引入需要倒置的函数调用函数求函数长度为len,设 i=0 ,定义暂时存储变量i<len/2 ?c=stri;stri=strlen-i-1;YesNostrlen-i-1=c;结束i+ ;c通过折半交换的方法,从第一个元素到到倒数第二个元素,通过暂时存储的变量c 进行交换图 2-2倒置函数3计算器丽水学院 C 语言课程设计总结报告2int numcomp(char

8、*a,char *b);/ 该函数为字符串大小比较的函数,对个数组中元素进行逐一比较若相等返回0,不然返回第一次出现差异的两数之差。该函数大体流程如图2-3所示。大小比较函数结束引入需要比较的两个的函数求得第一个函数的长度为la,第二个为 lb返回 alb-blbNoYesLa! =lb ?lb<la ?alb-blb !=0?YesNo返回两数之差结束Lb+ ;图 2-3字符串比较函数3int carry(char * num);/ 进位函数, 引入数组, 利用算法使得原先以ASCII 存储的非 09的元素以 0 9的字符存储。该函数大体流程如图2-4所示。进位算法求得引入的函数长度为

9、len,并调用 Inversion(char*str) ,使得原数组中的元素进行倒置NoNoi<len ?numlen !=0YesYesnumi>'9' ?Nonumlen+='0'i+;numlen+1=0;Yes从第一位开始,若满numi+1+=(numi-'0')/10;足条件,除10,将商numi=(numi-'0')%10+'0'进位,然后为该位模10,取得余数再次调用 Inversion(char *str) 倒置元素结束图 2-4进位算法4计算器丽水学院 C 语言课程设计总结报告4int

10、 abdicate(char *num);/ 退位函数, 引入数组,利用算法使得原先以ASCII 存储的非0 9的元素以 0 9的字符存储。该函数大体流程如图2-5所示。退位算法求得引入的函数长度为lenNoLen>0?结束Yesnumi<'0' ?NoLen-;Yesnumlen+=10;numlen-1-从第一位开始,若满足条件,加10,将前一位退位,然后为该位新值图 2-5退位算法5int numclear(char * num);/ 清零函数,引入数组,从第一位开始寻找,直到找到第一个不为 0的值为止,从该值开始向前推进,达到清零效果。该函数大体流程如图2-

11、6所示。清零算法求得引入的函数长度为lenNo退出i<len?i+ ;YesNonumi='0'?i<len+1?从不是0 的那位开始赋值为第YesYes一位,依此类推,直至全部赋值完毕i+ ;numj+=numi+;图 2-6清零算法5计算器丽水学院 C 语言课程设计总结报告6 int numadd(char *a,char *b,char * sum);/ 大数加法,引入两个数组需要进行加法的数组以及用来存放其和的空数组。该函数大体流程如图2-7所示。大数加法sumi=0;YesNoInversion(a); Inversion(b);strcat(sum,a+

12、i)ai!=0?将引用的a, b 数组倒置将余下的未进行运算判断 a 且 b 的的部分赋给sum数组均不为空strcat(sum,b+i)Noai&&bi! =0?Yessumi=ai+bi-'0'Yes将 a,b 以及 sun 数组进行倒置将每一位的值相加并调用 carry(sum); 进行进位减去 0,以 ASCII 形式存储起来结束i+;图 2-7大数加法7 int numsm(char *a,char *b,char * mul);/ 大数乘法的主要运算函数,引入两个需要进行相乘的数组和一个用于存放其乘积的数组,通过 b中的第一位与 a中的每一位进行相乘

13、从而模拟乘法运算。该函数大体流程如图2-8所示。大数相乘运算函数末尾补 0,进行进位定义 tempnMN 来暂时存储相Yes乘 之 积 , 求 得 len=strlen(b);flag!=0?strcpy (tempn,mul);numadd(tempn,a,mul);flag=0; t=b0-'0'NoNocarry(mul);若是进行相乘的数是9,t=9?i=strlen(mul);将已经相乘的数先存储Yes起来,最后与 a 进行大Yes数相加t=8; flag=1;-len=!0 ?muli+='0'NoNoai!=0?muli+=0;Yes一一相乘,最后

14、加 0,muli=(ai-'0')*t+'0'i+以 ASCII 形式存储结束图 2-8大数乘法主要运算函数6计算器丽水学院 C 语言课程设计总结报告第三章使用说明31安装手册该计算机程序无需安装,已由exe运行程序的形式导出,只需双击打开并运行即可。主界面有关于功能的提示,运行时也有相关的输入提示和错误的提示,对界面的跳转和返回也有相关选项说明,并且可以随时暂停二级运算,回到主界面进行其他功能的选择。32使用手册打开名为计算器.exe的程序进入主界面/*计算器 */*请按照提示进行输入数字*/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.大数的

15、加减乘除6.退出主界面有 6个选项, 前四个为小数运算,第五个可进入大数运算的菜单,选项 6为退出程序。选择选项 1,进行小数四则运算,若不是继续运算,则会提示“请输入四则运算表达式,并以 '#'结束”;若为继续运算,则提示“请输入四则运算表达式,用于继续运算的值以''代替,并以 '#'结束”。按照提示输入一串四则运算的表达式并以#结束,可直接输出答案。选择选项 2,进行 N次方运算,若不是继续运算,则会提示“请输入两个数,第一个为底数,第二个为自变量”;若为继续运算,则提示“请输入自变量”,按照提示输入一个或两个数即可。若所求值会造成数据溢出,

16、则提示“所求N次方过大,溢出”。选择选项 3,进行阶乘运算,若不是继续运算,则会提示“请输入需要求阶乘的数”;若是继续运算,直接对该数进行程序运算。按提示进行操作,若所求值会造成数据溢出,则会提示“所求阶乘数过大,溢出,请选择其他功能进行操作”。选择选项 4,进行累加运算,若不是继续运算,则会提示“请输入需要求累加的数”;若是继续运算,直接对该数进行程序运算。按提示进行操作,若所求值会造成数据溢出,则会提示“所求累加数过大,溢出”。7计算器丽水学院 C 语言课程设计总结报告选择选项 5,进入大数操作的菜单。选择选项 6,退出该程序,若是无法退出。则会提示“请再次输入 6来结束程序”,按照提示操

17、作即可退出程序。对小数操作的过程中,运行一次之后会跳出提示“是否进行继续运算(y/n) ”,按照提示进行输入。、若选择y,将会跳转到小数的二级菜单;若选择n,退回到主菜单界面可选择其他操作。/*请按照提示进行输入数字*/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.清零并返回该小数运算界面有六个选项,前四个选项均为继续运算的操作,功能与上述相同,这里不在介绍,选项6为返回功能,若不想继续运算,可选择选项6,对原有数据进行清零,并返回主菜单。/*请按照提示进行输入数字*/1.加法运算2.减法运算3.乘法运算4.除法运算5.返回菜单该界面为大数运算界面,在上述中已提到,该界面有五个

18、选项,前四个均为运算功能,实现大数的加减乘除,选项5可返回主菜单。8计算器丽水学院 C 语言课程设计总结报告第四章系统设计难点及其解决方法41 栈的四则运算为了使得关于小数的四则运算更加方便,因此选用了栈作为基本数据结构来完成计算器功能,即可通过直接输入一串表达式直接求出该运算的结果。 42 大数的加减乘除421 大数的加法为了使得算法更加简洁易懂,简化运算步骤, 方便运算, 之前须先定义一个数组倒置的函数 Inversion() ,在加法运算中,讲存放两个大数的数组进行逆序存放,然后从第一位开始逐项相加减去0存放在 sum数组中, 。422 大数的减法调用 numcomp() 对读入的两个字符串进行对比,若是相等说明作差为0,直接输出 0即可,若是前者大, 。423 大数的乘法大数乘法利用乘法法则,将短的字符串作为参考系,调用numsm() 与长的字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论