C语言程序设计简单的计算器_第1页
C语言程序设计简单的计算器_第2页
C语言程序设计简单的计算器_第3页
C语言程序设计简单的计算器_第4页
C语言程序设计简单的计算器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、程序设计基础(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

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

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

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

6、同设计 函数的功能: 提供本计算器的几个功能选项,方便用户使用 函数的入口: 从main函数的while(command_begin='Y'|command_begin='y')开始,当输入“Y”时进入本菜单。 函数调用关系: 被主函数调用,由while()结构进入。函数的出口: 函数的出口为printf("是否继续运算?(Y/N) :"8、功能函数主函数 本函数由本组成员共同设计 函数的功能: 欢迎页面及退出画面提示四、调试与测试1、调试方法打开Microsoft Visual C+ 6.0,先将各个功能函数的的内容清空,只保留主函数mai

7、n(),然后编译检验main()函数中是否有错,如果没有错误,再连接、运行。确认main()函数一切无误后,然后依次加入功能函数进行调试。当所有的功能函数都加上且正确无误时,就可以进入下一个环节程序的测试。2、测试方法: 运行程序,然后进入简易计算器的界面,在这里需要做的就是把自己当成一个公司的程序使用者,来对该程序进行使用,看该程序有哪些方面用着不够爽,把这些问题依次整理出来,再对源程序进行修改,在这个过程中也需要对程序进行调试,不过不必将各个功能函数的的内容清空再进行如上述的调试方法,而是,改一部份运行一次,看是否有无错误。若所有的错误都改过来了,且运行无误,那就大功告成了。【在调试中遇到

8、的问题:】调试过程中,我们遇到诸多小问题,但都在我们共同讨论后解决了。1、问题:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,让修改的时候找不到目标。解决方法:用“替换”。如果程序中的error很多,不管error是什么,先将标点替换成英文的标点。2、问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误。而且,这种错误让我们不知道怎么修改。但是我们的程序的确正确。解决方法:将源程序保存(save),然后关掉Microsoft Visual C 6.0,重新启动Microsoft Visua C 6.0, 五、分析及结论A、在设计中实现了设计目标能进行简

9、单的数学运算,在功能上极力地模仿windows计算器B、其中遇到的问题 输入时,scantf()函数中出现非地址项,某变量未进行类型定义,以及语句末尾缺少分号等常见的低等错误。 解决办法: 根据Microsoft Visual C 6.0的错误提示(error)与警告(warning)回到源程序逐一对错误和警告修改,每修改一次调试一次。C、该程序的不足生成的可执行程序操作界面不美观,用Microsoft Visual C 6.0编写,未使用标准的Turbor C 2.0中的图库,所以不好看,但是这中DOS界面的东西再怎么弄都不好看,强烈建议下学期开课C+。D、实践心得 通过实践的学习,我认到学

10、好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。经过C语言课程设计实践学习,使我对c语言有了更进一步的认识和了解,板通过实践,我也发现我的好多不足之处,首先是在程序输入上还不够熟练,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。熟练地掌握了C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自

11、增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,以及文件的读写操作等我认为要学好c语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。只有这样我们才能成为合格的计算机人材。六、参考文献(1) C语言程序设计.普措才仁版(2) C语言程序设计.谭浩强版(3) 全国计算机等级考试二级C语言.2008版(4) C语言上机指导(5) Microsoft Visual C+ 6.0指南(6) C语言之家()(7) C语言教室()【附录】源程序清单#include<stdi

12、o.h>#include<math.h>#include<string.h>#include<conio.h>#include<stdlib.h>void main() char command_begin; /开始字符 int flag; int act; int i; double first_number; double second_number; double value_jia,value_jian,value_cheng,value_chu,value_pingjun; double value_mi,value_yu,val

13、ue_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(" n"); printf(" *n"); printf(" *n"); printf(" *n"); printf(" *n")

14、; printf(" * 欢迎使用简易计算器系统 *n"); printf(" * *n"); printf(" * *n"); printf(" * 2013.07.05 *n"); printf(" *n"); printf(" *n"); printf(" *n"); printf(" *n"); printf(" n"); printf("nn"); printf(" print

15、f(" printf(" 【输入Y,按回车键开始使用】nn"); printf("是否开始?(Y/N): "); scanf("%c",&command_begin); system("CLS"); printf("n"); /由本组成员共同设计 while(command_begin='Y'|command_begin='y') /当接收Y/y命令时执行计算器程序 printf(" 【请选择计算类别】nn"); printf

16、("*·················· ··················*n"); printf("* *n"); printf("* (1). 两数的+、-、*、/计算、求平均 *

17、n"); printf("* *n"); printf("* (2). x的y次方的计算、两数的求余、以x为底y的对数 *n"); printf("* *n"); printf("* (3). 单个数值sin、cos、tan的计算,以e为底的指数、求绝对值 *n"); printf("* *n"); printf("* (4). 单个数值的ln值、以10为底的对数、取整、平方、立方计算 *n"); printf("* *n"); printf(&

18、quot;* (5). 单个数值的倒数、阶乘 *n"); printf("* *n"); printf("* (6). 进制之间的转换 *n"); printf("* *n"); printf("*·················· ········

19、3;·········*n"); printf("nn"); printf("请输入1、2、3、4、5或6(按回车键继续):n"); printf("nnnnn"); scanf("%d",&flag); /由本组成员共同设计 if(flag=1) system("CLS"); printf("nn"); printf("请输入两个数字,中间用空格隔开:nnn

20、"); 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;/乘法

21、 printf("两数之积:%lfn",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); va

22、lue_jian=first_number-second_number;/减法 printf("两数之差:%lfn",value_jian); 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("平均数是:%

23、lfn",value_pingjun); if(flag=2) system("CLS"); printf("nn"); printf("请输入两个数字,中间用空格隔开:nnn"); scanf("%lf%lf",&first_number,&second_number);if(second_number=0) value_mi=pow(first_number,second_number);/幂次 printf("x的y次幂:%lfn",value_mi); prin

24、tf("取余为:除数不能为零,如果需要求余,请重新输入: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,second_number);/取余 printf("取余为:%lfn",value_yu); value_duishu=(log10(seco

25、nd_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_number>0) value_sin=sin(first_number);/求sin printf("sin值:%lfn&

26、quot;,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的绝对值

27、:%lfn",value_fabs); if(first_number=0) value_sin=sin(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

28、为底的指数 printf("exp值:%lfn",value_exp); value_fabs=fabs(first_number);/求绝对值 printf("x的绝对值:%lfn",value_fabs); if(first_number<0) value_sin=sin(first_number);/求sin printf("sin值:%lfn",value_sin); value_cos=cos(first_number);/求cos printf("cos值:%lfn",value_cos); va

29、lue_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(flag=4) system("CLS"); printf("nn"); printf(&qu

30、ot;请输入一个数字:"); scanf("%lf",&first_number); if(first_number>0) 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&quo

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

32、(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);/求x的立方 printf("x的立方:%lfn",value_3); if(first_number<0) value_exp=exp(first_number);/以e为底的指数 printf("exp值:%lfn",val

33、ue_exp); printf("ln值:X不能小于0,请重新输入:n");/求ln printf("10为底的对数:Y不能小于0,请重新输入:n");/以10为底的对数 value_floor=floor(first_number);/取整 value_2=pow(first_number,2);/求x的平方 printf("x的平方:%lfn",value_2); value_3=pow(first_number,3);/求x的立方 printf("x的立方:%lfn",value_3); if(flag=5)

34、 system("CLS"); printf("nn"); printf("请输入一个数字:"); scanf("%lf",&first_number); if(first_number>0) 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的倒数:

35、%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阶乘:%lfn",value_n); printf("x的立方:%lfn",value_3); printf("x的倒数:0不能求倒n");/求倒 if(first_number<0) printf("n阶乘:所输入数字无法求阶乘,请重新输入:n");/求阶乘 valu

36、e_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:"); scanf("%d",&act); if(act=8)/八进制转换为十进制、十六进制 printf("请输入一个八

37、进制数字: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); prin

温馨提示

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

评论

0/150

提交评论