C语言程序设计 - 简单的计算器.doc

上传人:豆**** 文档编号:29963596 上传时间:2022-08-02 格式:DOC 页数:29 大小:285KB
返回 下载 相关 举报
C语言程序设计 - 简单的计算器.doc_第1页
第1页 / 共29页
C语言程序设计 - 简单的计算器.doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《C语言程序设计 - 简单的计算器.doc》由会员分享,可在线阅读,更多相关《C语言程序设计 - 简单的计算器.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言程序设计程序设计基础(C)课程设计报告简易计算器设计学 生 姓 名: 学 号: 班 级: 指 导 老 师: 日 期: 309工作室设计目 录一、设计目标2二、总体设计3三、详细设计5四、调试与测试10五、分析及结论11六、参考文献12【附录】13一、设计目标设计一个C语言程序(简单计算器设计)具体要求:在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。主要功能:进行+、-、*、/、三角函数、对数、幂等各项数学运算,能够进行进制间的相互转换与计算。二、总体设计1、程序设计组成框图2、设计思路简单计算器的设计的程序中主要调用的函数有:数学函数的定义和I/O函数;设计

2、思路和理念在于一切追求简便易操作原理,通过个人的构思和设计以及调试运行设计出这一款简单的计算器。3、程序设计流程图三、详细设计1、功能函数 函数的功能: 两数的+、-、*、/计算、求平均函数的入口: 从main()的if(flag=1)开关结构中进入,即flag的值为1时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的结构。 2、功能函数 函数的功能: x的y次方的计算、两数的求余、以x为底y的对数函数的入口: 从main()的if(flag=2)开关

3、结构中进入,即flag的值为2时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的结构。 3、功能函数 函数的功能: 单个数值sin、cos、tan的计算,以e为底的指数、求绝对值函数的入口: 从main()的if(flag=3)开关结构中进入,即flag的值为3时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的

4、结构 4、功能函数 函数的功能: 单个数值的ln值、以10为底的对数、取整、平方、立方计算函数的入口: 从main()的if(flag=4)开关结构中进入,即flag的值为4时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的结构 5、功能函数 函数的功能: 单个数值的倒数、阶乘函数的入口: 从main()的if(flag=5)开关结构中进入,即flag的值为5时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入

5、。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的结构 6、功能函数 函数的功能: 进行进制间的转换函数的入口: 从main()的if(flag=6)开关结构中进入,即flag的值为6时进入该函数,从而进行该功能函数的计算。函数调用关系: 被主函数调用,由if()开关结构中进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :),此时输入“Y”,继续前面的结构7、功能函数主菜单 本函数由本组成员共同设计 函数的功能: 提供本计算器的几个功能选项,方便用户使用 函数的入口: 从main函数的while(command_begi

6、n=Y|command_begin=y)开始,当输入“Y”时进入本菜单。 函数调用关系: 被主函数调用,由while()结构进入。函数的出口: 函数的出口为printf(是否继续运算?(Y/N) :8、功能函数主函数 本函数由本组成员共同设计 函数的功能: 欢迎页面及退出画面提示四、调试与测试1、调试方法打开Microsoft Visual C+ 6.0,先将各个功能函数的的内容清空,只保留主函数main(),然后编译检验main()函数中是否有错,如果没有错误,再连接、运行。确认main()函数一切无误后,然后依次加入功能函数进行调试。当所有的功能函数都加上且正确无误时,就可以进入下一个环节

7、程序的测试。2、测试方法: 运行程序,然后进入简易计算器的界面,在这里需要做的就是把自己当成一个公司的程序使用者,来对该程序进行使用,看该程序有哪些方面用着不够爽,把这些问题依次整理出来,再对源程序进行修改,在这个过程中也需要对程序进行调试,不过不必将各个功能函数的的内容清空再进行如上述的调试方法,而是,改一部份运行一次,看是否有无错误。若所有的错误都改过来了,且运行无误,那就大功告成了。【在调试中遇到的问题:】调试过程中,我们遇到诸多小问题,但都在我们共同讨论后解决了。1、问题:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。解决方法:用“替换”。如

8、果程序中的error很多,不管error是什么,先将标点替换成英文的标点。2、问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误。而且,这种错误让我们不知道怎么修改。但是我们的程序的确正确。解决方法:将源程序保存(save),然后关掉Microsoft Visual C 6.0,重新启动Microsoft Visua C 6.0, 五、分析及结论A、在设计中实现了设计目标能进行简单的数学运算,在功能上极力地模仿windows计算器B、其中遇到的问题 输入时,scantf()函数中出现非地址项,某变量未进行类型定义,以及语句末尾缺少分号等常见的低等错误。 解决办法: 根据

9、Microsoft Visual C 6.0的错误提示(error)与警告(warning)回到源程序逐一对错误和警告修改,每修改一次调试一次。C、该程序的不足生成的可执行程序操作界面不美观,用Microsoft Visual C 6.0编写,未使用标准的Turbor C 2.0中的图库,所以不好看,但是这中DOS界面的东西再怎么弄都不好看,强烈建议下学期开课C+。D、实践心得 通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。经过C语言课程设计实践学习,

10、使我对c语言有了更进一步的认识和了解,板通过实践,我也发现我的好多不足之处,首先是在程序输入上还不够熟练,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。熟练地掌握了C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,以及文件的读写操作等我认为要学好c语言程序这门课程,不仅

11、要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。只有这样我们才能成为合格的计算机人材。六、参考文献(1) C语言程序设计.普措才仁版(2) C语言程序设计.谭浩强版(3) 全国计算机等级考试二级C语言.2008版(4) C语言上机指导(5) Microsoft Visual C+ 6.0指南(6) C语言之家()(7) C语言教室()【附录】源程序清单#include#include#include#include#includevoid main() char command_begin; /开始字符 int flag; int act; int i; double fi

12、rst_number; double second_number; double value_jia,value_jian,value_cheng,value_chu,value_pingjun; double value_mi,value_yu,value_duishu; double value_sin,value_cos,value_tan; double value_exp,value_ln,value_log; double value_floor,value_n,value_2,value_3,value_daoshu,value_fabs; printf(nn); printf(

13、 n); printf( *n); printf( *n); printf( *n); printf( *n); printf( * 欢迎使用简易计算器系统 *n); printf( * *n); printf( * *n); printf( * 2013.07.05 *n); printf( *n); printf( *n); printf( *n); printf( *n); printf( n); printf(nn); printf( printf( printf( 【输入Y,按回车键开始使用】nn); printf(是否开始?(Y/N): ); scanf(%c,&command_b

14、egin); system(CLS); printf(n); /由本组成员共同设计 while(command_begin=Y|command_begin=y) /当接收Y/y命令时执行计算器程序 printf( 【请选择计算类别】nn); printf(* *n); printf(* *n); printf(* (1). 两数的+、-、*、/计算、求平均 *n); printf(* *n); printf(* (2). x的y次方的计算、两数的求余、以x为底y的对数 *n); printf(* *n); printf(* (3). 单个数值sin、cos、tan的计算,以e为底的指数、求绝对

15、值 *n); printf(* *n); printf(* (4). 单个数值的ln值、以10为底的对数、取整、平方、立方计算 *n); printf(* *n); printf(* (5). 单个数值的倒数、阶乘 *n); printf(* *n); printf(* (6). 进制之间的转换 *n); printf(* *n); printf(* *n); printf(nn); printf(请输入1、2、3、4、5或6(按回车键继续):n); printf(nnnnn); scanf(%d,&flag); /由本组成员共同设计 if(flag=1) system(CLS); print

16、f(nn); printf(请输入两个数字,中间用空格隔开:nnn); scanf(%lf%lf,&first_number,&second_number);if(second_number=0) value_jia=first_number+second_number;/加法 printf(两数之和:%lfn,value_jia); value_jian=first_number-second_number;/减法 printf(两数之差:%lfn,value_jian); value_cheng=first_number*second_number;/乘法 printf(两数之积:%lfn

17、,value_cheng); value_chu=first_number/second_number;/除法 printf(两数之商:除数不能为零,如果需要求商,请重新输入:n);/除法 value_pingjun=value_jia/2;/求平均 printf(平均数是:%lfn,value_pingjun);else value_jia=first_number+second_number;/加法 printf(两数之和:%lfn,value_jia); value_jian=first_number-second_number;/减法 printf(两数之差:%lfn,value_ji

18、an); value_cheng=first_number*second_number;/乘法 printf(两数之积:%lfn,value_cheng); value_chu=first_number/second_number;/除法 printf(两数之商:%lfn,value_chu); value_pingjun=value_jia/2;/求平均 printf(平均数是:%lfn,value_pingjun); if(flag=2) system(CLS); printf(nn); printf(请输入两个数字,中间用空格隔开:nnn); scanf(%lf%lf,&first_nu

19、mber,&second_number);if(second_number=0) value_mi=pow(first_number,second_number);/幂次 printf(x的y次幂:%lfn,value_mi); printf(取余为:除数不能为零,如果需要求余,请重新输入:n);/取余 printf(以x为底y的对数为:计算结果趋于无穷,无法显示:n);/x为底y的对数else value_mi=pow(first_number,second_number);/幂次 printf(x的y次幂:%lfn,value_mi); value_yu=fmod(first_number

20、,second_number);/取余 printf(取余为:%lfn,value_yu); value_duishu=(log10(second_number)/log10(first_number);/x为底y的对数 printf(以x为底y的对数为:%lfn,value_duishu); if(flag=3) system(CLS); printf(nn); printf(请输入一个数字:); scanf(%lf,&first_number); if(first_number0) value_sin=sin(first_number);/求sin printf(sin值:%lfn,val

21、ue_sin); value_cos=cos(first_number);/求cos printf(cos值:%lfn,value_cos); value_tan=tan(first_number);/求tan printf(tan值:%lfn,value_tan); value_exp=exp(first_number);/以e为底的指数 printf(exp值:%lfn,value_exp); value_fabs=fabs(first_number);/求绝对值 printf(x的绝对值:%lfn,value_fabs); if(first_number=0) value_sin=sin

22、(first_number);/求sin printf(sin值:%lfn,value_sin); value_cos=cos(first_number);/求cos printf(cos值:%lfn,value_cos); value_tan=tan(first_number);/求tan printf(tan值:%lfn,value_tan); value_exp=exp(first_number);/以e为底的指数 printf(exp值:%lfn,value_exp); value_fabs=fabs(first_number);/求绝对值 printf(x的绝对值:%lfn,valu

23、e_fabs); if(first_number0) value_ln=log(first_number);/求ln printf(ln值:%lfn,value_ln); value_log=log10(first_number);/以10为底的对数 printf(10为底的对数:%lfn,value_log); value_floor=floor(first_number);/取整 printf(x取整:%lfn,value_floor); value_2=pow(first_number,2);/求x的平方 printf(x的平方:%lfn,value_2); value_3=pow(fi

24、rst_number,3);/求x的立方 printf(x的立方:%lfn,value_3); if(first_number=0) printf(ln值:计算结果趋于无穷,无法显示:n);/求ln printf(10为底的对数:计算结果趋于无穷,无法显示:n);/以10为底的对数 value_floor=floor(first_number);/取整 printf(x取整:%lfn,value_floor); value_2=pow(first_number,2);/求x的平方 printf(x的平方:%lfn,value_2); value_3=pow(first_number,3);/求

25、x的立方 printf(x的立方:%lfn,value_3); if(first_number0) value_n=1;/求阶乘 for(i=1;i(first_number+1);i+) value_n=value_n*i; printf(n阶乘:%lfn,value_n); value_daoshu=1/first_number;/求倒 printf(x的倒数:%lfn,value_daoshu); if(first_number=0) value_n=1;/求阶乘 for(i=1;i(first_number+1);i+) value_n=value_n*i; printf(n阶乘:%l

26、fn,value_n); printf(x的立方:%lfn,value_3); printf(x的倒数:0不能求倒n);/求倒 if(first_number0) printf(n阶乘:所输入数字无法求阶乘,请重新输入:n);/求阶乘 value_daoshu=1/first_number;/求倒 printf(x的倒数:%lfn,value_daoshu); if(flag=6)lab: system(CLS); printf(nn); printf(八进制转换为其他进制请输入8,n十进制转换为其他进制请输入10,n十六进制转换为其他进制请输入16,n请按照需要输入8、10或16:); sc

27、anf(%d,&act); if(act=8)/八进制转换为十进制、十六进制 printf(请输入一个八进制数字:nn); scanf(%o,&first_number); printf(八进制%onn,first_number); printf(转换为:n); printf(十进制%un,first_number); printf(十六进制%xn,first_number); if(act=10)/十进制转换为八进制、十六进制 printf(请输入一个十进制数字:nn); scanf(%d,&first_number); printf(十进制%unn,first_number); print

28、f(转换为:n); printf(八进制%on,first_number); printf(十六进制%xn,first_number); if(act=16)/十六进制转换为八进制、十进制 printf(请输入一个十六进制数字:nn); scanf(%x,&first_number); printf(十六进制%xnn,first_number); printf(转换为:n); printf(八进制%on,first_number); printf(十进制%un,first_number); if(act!=8&act!=10&act!=16) printf(输入有误,请重新输入nnn); goto lab; printf(nnnn); printf(是否继续运算?(Y/N) :); fflush(stdin);/清空缓存区 scanf(%c,&command_begin); system(CLS); printf(nnn); printf( * *n); printf( * *n); printf( * *n); printf( * -谢谢使用- *n); printf( * *n); printf( * *n); printf( * *n); printf(nnn); printf( 程序设计:nn); printf(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁