




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南文理学院课程设计报告课程名称: 计算器程序设计 系 部: 电气与信息工程学院 专业班级: 通信09102班 学生姓名: 邱金华 指导教师: 杨民生 完成时间: 2010/9/25 报告成绩: 评阅意见: 评阅教师 日期 计算器程序设计第一章 综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种
2、平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。这个程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求平方根,求Sin,求Cos,求Log10。计算器的设计使我们所学到的c语言知识在现实中得到检验!信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方便他人,可行性很强!1.2 硬件环境一台完整的电脑,包括键盘、鼠标,
3、最小硬盘空间1GHz<1> 386,486,586及兼容机.640K基本内存;<2> 1M以上扩充内存,10M以上的显示内存.1.3 软件环境开发环境:本系统的设计采用的是TC语言开发Windows XP sp2操作系统,Turbo C 2.0汉化版 , WPS word第二章 程序的作用及设计目的2.1 程序的功能作用计算器是Windows 操作系统提供的一个附件功能许多人用Visual Basic Visual C+等编制计算器,由于这些程序提供了控件所以实现相对容易。Turbo C 没有控件,但我们可以利用它所具有的函数模仿画出其界面,实现计算器的基本功能,进行浮
4、点数加、减、乘、除、乘方和求模运算。2.2 程序设计目的通过本程序训练读者程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、Turbo C 图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示。第三章 程序分析和设计实现计算器功能,首先是输出计算器图形样式,然后是通过按键的方式实现数值运算。所以程序主要由两大部分实现,一部分功能是显示计算器,一部分是实现计算功能显示。计算器是在屏幕上显示图形,Turbo C 提供了PC 系统环境下扩充的屏幕和图形支持系统,利用此系统提供的字符屏幕处理函数和图形系统的有关信息及函数即可很好地实现。计算功能主要要解决的是接收按键信息的处理,要进
5、行识别,如果按键是数字符号,要将其转变为操作数,如果是运算操作符,则进行相应的处理。3.1 主界面首先是画一个带标题calculator 的窗口,窗口为一白色边框,窗口中最上面是一个绿色光条,此光条上显示数字和运算结果,光条下有20 个红色边框的灰色矩形块模拟命令按钮按钮,上面显示有数字和运算符号,并且在按钮上有图形光,标通过移动光标键移动到所需位置,按回车键即选择了相应的符号。主界面如图2-1。 所示光标移动到字符Q 上,按回车键结束运算.3.2 设计思路(1) main()主函数设置了程序的流程,首先初始化图形系统,然后调用计算器computer()函数进行计算,当从计算器程序返回时,关闭
6、图形系统,结束程序。(2) initialize()初始化函数Turbo C 通常的工作方式是字符文本模式,要显示图形,调用图形函数,则必须进入图形工作方式,应首先调用函数initgraph(&GraphDriver, &GraphMode, "" )初始化图形系统,并装入相应的图形驱动器。该函数把由GraphDriver 所指向的图形驱动器代码装入内存。如果图形驱动器未装入内存,图形函数将不能操作图形函数所用的屏显模式由GraphMode所指向的整数值确定。该函数的第三个参数为图形驱动器的路径,设为空串表示在当前工作路径上寻找。图形驱动器包含在.BGI 文
7、件中,且必须在该系统下是可用的,.BGI 程序在Turbo 的目录下。用DETECT 自动检测目前系统屏显硬件的类型,并且选用最大分辨率的屏显模式。初始化后将一些信息保存在相应的变量中,以备后用。如果图形初始化失败,则程序结束。为了方便设计计算器界面,在这个函数中,获取了图形屏幕的最大尺寸以及纵横比。(3) mwindow() 主窗口函数设置视口大小为当前窗口的一半,然后调用画边框函数drawboder()画出边框。本程序视口设置在左上角位置,读者可以自行计算将视口设在屏幕中央,同时将计算函数中的图形输出做相应的调整。(4) drawboder()画边框函数通过函数getviewsetting
8、s(&vp)把有关当前视口的信息装入由vp 所指向的结构中。vp是struct viewporttype 类型,其结构定义如下:struct viewporttypeint left,top,right,bottom;int clip;域left 、top、 right、 bottom 中存放视口左上角和右下角的坐标。当clip 为0时不进行对超出视口边界输出的剪裁,否则,执行剪裁以防止超出边界。字符屏幕操作和图形函数的核心是窗口,它是屏幕的活动部分,在这个活动窗口中将显示输出。Turbo C 在字符屏幕和图形系统之间用了稍微不同的术语,以保持两个系统的独立。字符屏幕的函数提供了窗口(
9、Window), 而图形系统提供了视口(Viewport), 但概念是一样的,但是当屏幕用字符模式时,左上角坐标为(1,1), 而在图形状态下,左上角坐标为(0,0)。根据视口坐标,利用画矩形函数rectangle()画出边框线。本程序视口设置在屏幕的左上角位置,我们可以自行计算将视口设在屏幕中央,同时将计算器函数中的图形输出做相应的调整。(5) computer()计算器函数该函数是本程序的主要函数,其流程是先调用mwindow()函数显示一白色边框的窗口,再在窗口中显示计算器,然后接收按键进行运算。为了布局合理、操作方便要根据窗口大小设计按钮的大小和位置。读取当前窗口的大小后,设置了两个单
10、位变量width 和height, 图形显示以这两个变量为计算单位,布局如图2-2 所示。图中的符号按钮利用函数setfillstyle()设置用淡绿色实体填充模式,然后用bar()函数画一个二维矩形条,setcolor()函数设置边框线颜色,rectangle()函数画一个矩形边框线,利用outtextxy()函数将预先存储在str1 中的字符串中的字符输出,因为outtextxy()输出的是字符串,所以先利用函数sprintf()将要输出的字符写入字符数组str2, 转变为字符串,然后输出。界面设置好后,首先在第一个按钮位置显示光标,此时可以移动和按下光标,当按下Alt+X 键时可以结束程
11、序,否则执行循环判断移动的是哪个光标键,变量m 和n 记录光标位置,光标移动某个位置按回车后则程序判断所按的字符进行相应的处理:1 当所选为数字或小数点,则先判断是否为负数,如果是负数则将符号连接到字符串中,否则只连接所选的数字或小数点,并显示数据。2 当所选为“-” 时先判断有无操作数,没有则为负数,做负数标记,否则是做减法,做减法标志,并将当前的操作数保存3 当所选为”+”, “*”, “/”, “” ,”%”, 时处理方式一样均是先保存第一个操作数,做运算标志。准备接受第二个操作数4 当所选为“=” 时,根据运算符号标志值act 进行相应的运算,将结果显示。5. 当所选为“c” 时,表示
12、清零,所以将第一和第二操作数均置0。6. 当所选为“Q” 时,则运算结束。数据和结果的显示仍然是用outtextxy()函数,并且利用填充二维矩形条覆盖前一次的输出.(6) arrow()设计图形鼠标函数由于在图形方式下,光标是不可见的,所以为了能正确地选择按钮,自己设计一个光标图形。方法是用fillpoly(8,raw)画一个由raw 所指向的数组中定义的8 个x、 y 坐标点所围成的封闭图形。用当前填充模式和颜色对该形状进行填充后形状像鼠标,利用函数imagesize()测试图像大小,分配内存区域,将图像保存,通过图像的读取函数getimage()和putimage()以及图像算子异或XO
13、R_PUT 操作实现光标图像的显示和隐藏,同一位置两次异或,图像就消去了。(7) specialkey()读取特殊键函数利用函数bioskey(1)读取用户所按键的信息,int bioskey(int cmd) 函数原型在bios.h 中,功能是完成直接键盘操作。如果cmd 是0, bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16 位的二进制数,包括两种不同的值。当按下”普通键”时,它的低8 位数存放该字符的ASCII 码;对于“特殊键”,低8 位为0。 “特殊键”包括箭头键、功能键等高8 位字节存放该键的扫描码,所以程序中用到了语句key=bioskey(0
14、), 表示返回下一个在键盘上按下的键,并保存在变量key 中,key=key&0xff?key&0xff:key>>8 ,对所按的键进行判断,如果key&0xff 为真,即低8 位不为0, 则说明按下的是普通键,因为 0xff 16 进制数代表的二进制码高8 位为0,低8 位为1。 和0 相与,结果为0, 和1 相与,结果保持原数。这样就将低8 位,也就是该字符的ASCII 码值赋给key, 如果key&0xff 为假,即低8 位为0 ,说明按下的是特殊键,将key 右移8 位后,也就是将其高8 位值赋给key。cmd 如果是1, bioskey()
15、查询是否按下了一个键,当按下一个键时返回非0 值,否则返回0 值,所以用while(bioskey(1)=0) 语句等待按键。(8)程序的运行和退出1.运行 通过Tubro C安装路径找到TC2.0文件夹中的tc.exe文件,双击该文件,即可进入TC2.0环境。2.退出退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键) 第四章 程序测试程序调试是指对程序的查错和排错。为了便于查错、阅读,在设计该程序的过程中我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程
16、带来了很多方便。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义,定义位置不正确、语法错误、转义字符漏用、逻辑错误等。41 系统测试系统测试结果如下:输出:错误C:jisuanqibyjzj.TXT 183: 未定义的符号'LEFT'在 Run 函数中错误 C:jisuanqibyjzj.TXT 183: 需要用常量表达式在 Run 函数中错误: C:jisuanqibyjzj.TXT 393:
17、main的宣告;开始编译文件: C:jisuanqibyjzj.TXT42 调试根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑不容易发现。所以更要对程序仔细的检查。经认真修改之后重新保存
18、文件。4.3 错误原因分析一缺少变量定义,定义位置不正确由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。例如: 未定义void mwindow(char *header); /*窗口函数*/ 或mwindow( "Calculator" ); /* 显示主窗口 */,所以输出void mwindow( char *header )中就有错
19、误,因为缺少定义。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式4.4 错误原因分析二注释的位置程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有c语言可执行的语句!逻辑错误编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中
20、碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,可能是对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了printf语句用来显示n的变化,在执行某个函数
21、前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。第五章 用户使用说明书 51 运行Turbo C程序进入计算器界面通过他Tubroc 的路径找到TC文件夹找到TC文件夹中的tc.exe文件,并用鼠标双击该文件名进入TC环境。打开jisuanqibyjzj.c文件52 计算器的使用 基本使用:用控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。
22、加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求x的y次方: 输入数x,按“”,输入数y,按“=”,输出结果。53 退出程序退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键) 第六章 心得体会及总结经过了一个星期的c语言程序设计终于在老师的细心指导和同学的热情帮助下基本完成
23、了计算器课题的设计修改任务,虽然有些地方不尽如人意但是初步达到了对自己的要求。刚开始设计的时候找不到头绪,不知道该从哪里下手,通过向同学询问和向老师寻求帮助找走进了设计的门槛。通过网上查找到很多成功的计算器程序,通过对那些已经成功地程序进行分析找到自己的设计思路,制定设计流程。并通过比较各种程序了解各个程序的利弊,从而明确自己计算器的设计方向和如何通过技术手段达到自己的目的。万事开头难,可是对于并不是很熟悉的c语言在下面的工作中困难处处能遇见.通过查找c语言教材去图书馆查找相关的资料和同学一起讨论终于把一个个棘手的陌生的问题解决。测试阶段中发现了几处错误导致程序不能编译,通过耐心的分析源代码终
24、于编好了一个完整无误的程序。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。 在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉。同时认识到程序员的工作并不是我们想象的那么简单轻松的,在现在的编程中要有足够的耐心和热情。通过这次课程设计
25、,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划
26、,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前! 附: 源程序#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*库函数*/#include <stdarg.h> /*变量长度参数表*/#include <gr
27、aphics.h> /*图形函数*/#include <string.h> /*字符串函数*/#include <ctype.h> /*字符操作函数*/#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/struct palettetype palette; /*使用调色板信息*/int GraphDr
28、iver;/* 图形设备驱动*/int GraphMode;/* 图形模式值*/int ErrorCode;/* 错误代码*/int MaxColors;/* 可用颜色的最大数值*/int MaxX, MaxY;/* 屏幕的最大分辨率*/double AspectRatio;/* 屏幕的像素比*/void drawboder(void); /*画边框函数*/void initialize(void); /*初始化函数*/void computer(void); /*计算器计算函数*/void changetextstyle(int font, int direction, int charsi
29、ze); /*改变文本样式函数*/void mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*/*主函数*/int main() initialize();/* 设置系统进入图形模式*/ computer();/*运行计算器*/ closegraph();/*系统关闭图形模式返回文本模式*/ return(0); /*结束程序*/* 设置系统进入图形模式*/void initialize(void) int xasp, yasp;/* 用于读x和y方向纵横比*/ Gr
30、aphDriver = DETECT; /* 自动检测显示器*/ initgraph( &GraphDriver, &GraphMode, "" );/*初始化图形系统*/ ErrorCode = graphresult();/*读初始化结果*/ if( ErrorCode != grOk ) /*如果初始化时出现错误*/ printf("Graphics System Error: %sn", grapherrormsg( ErrorCode ) ); /*显示错误代码*/ exit( 1 ); /*退出*/ getpalette( &
31、amp;palette );/* 读面板信息*/ MaxColors = getmaxcolor() + 1;/* 读取颜色的最大值*/ MaxX = getmaxx(); /* 读屏幕尺寸*/ MaxY = getmaxy(); /* 读屏幕尺寸*/ getaspectratio( &xasp, &yasp );/* 拷贝纵横比到变量中*/ AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/*计算器函数*/void computer(void) struct viewporttype vp; /*定义视口类型变量*/ int
32、 color, height, width; int x, y,x0,y0, i, j,v,m,n,act,flag=1; float num1=0,num2=0,result; /*操作数和计算结果变量*/ char cnum5,str220="",c,temp20="" char str1="1230.456+-789*/Qc=%"/* 定义字符串在按钮图形上显示的符号 */ mwindow( "Calculator" ); /* 显示主窗口 */ color = 7; /*设置灰颜色值*/ getviewse
33、ttings( &vp ); /* 读取当前窗口的大小*/ width=(vp.right+1)/10; /* 设置按钮宽度 */ height=(vp.bottom-10)/10 ; /*设置按钮高度 */ x = width /2; /*设置x的坐标值*/ y = height/2;/*设置y的坐标值*/ setfillstyle(SOLID_FILL, color+3); bar( x+width*2, y, x+7*width, y+height ); /*画一个二维矩形条显示运算数和结果*/ setcolor( color+3 ); /*设置淡绿颜色边框线*/ rectang
34、le( x+width*2, y, x+7*width, y+height ); /*画一个矩形边框线*/ setcolor(RED); /*设置颜色为红色*/ outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/ x =2*width-width/2; /*设置x的坐标值*/ y =2*height+height/2; /*设置y的坐标值*/ for( j=0 ; j<4 ; +j ) /*画按钮*/ for( i=0 ; i<5 ; +i ) setfillstyle(SOLID_FILL
35、, color); setcolor(RED); bar( x, y, x+width, y+height ); /*画一个矩形条*/ rectangle( x, y, x+width, y+height ); sprintf(str2,"%c",str1j*5+i); /*将字符保存到str2中*/ outtextxy( x+(width/2), y+height/2, str2); x =x+width+ (width / 2) ;/*移动列坐标*/ y +=(height/2)*3;/* 移动行坐标*/ x =2*width-width/2; /*复位列坐标*/ x0
36、=2*width; y0=3*height; x=x0; y=y0; gotoxy(x,y); /*移动光标到x,y位置*/ arrow(); /*显示光标*/ putimage(x,y,rar,XOR_PUT); m=0; n=0; strcpy(str2,""); /*设置str2为空串*/ while(v=specialkey()!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/ while(v=specialkey()!=ENTER) /*当压下键不是回车时*/ putimage(x,y,rar,XOR_PUT); /*显示光标图象*/ if(v=R
37、IGHT) /*右移箭头时新位置计算*/ if(x>=x0+6*width) /*如果右移,移到尾,则移动到最左边字符位置*/ x=x0; m=0; else x=x+width+width/2; m+; /*否则,右移到下一个字符位置*/ if(v=LEFT) /*左移箭头时新位置计算*/ if(x<=x0) x=x0+6*width; m=4; /*如果移到头,再左移,则移动到最右边字符位置*/ else x=x-width-width/2;m-; /*否则,左移到前一个字符位置*/ if(v=UP) /*上移箭头时新位置计算*/ if(y<=y0) y=y0+4*hei
38、ght+height/2;n=3; /*如果移到头,再上移,则移动到最下边字符位置*/ else y=y-height-height/2; n-; /*否则,移到上边一个字符位置*/ if(v=DOWN) /*下移箭头时新位置计算*/ if(y>=7*height) y=y0; n=0; /*如果移到尾,再下移,则移动到最上边字符位置*/ else y=y+height+height/2;n+; /*否则,移到下边一个字符位置*/ putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ c=str1n*5+m; /*将字符保存到变量c中*/ if(isdig
39、it(c)|c='.') /*判断是否是数字或小数点*/ if(flag=-1) /*如果标志为-1,表明为负数*/ strcpy(str2,"-"); /*将负号连接到字符串中*/ flag=1; /*将标志值恢复为1*/ sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将temp中的字符串连接到str2中*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,
40、3*height/2); outtextxy(5*width,height,str2); /*显示字符串*/ if(c='+') num1=atof(str2); /*将第一个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=1; /*做计算加法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*显示
41、字符串*/ if(c='-') if(strcmp(str2,"")=0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/ else num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=2; /*做计算减法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outte
42、xtxy(5*width,height,"0."); /*显示字符串*/ if(c='*') num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=3; /*做计算乘法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*显示字符串*/ if
43、(c='/') num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=4; /*做计算除法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*显示字符串*/ if(c='') num1=atof(str2); /*将第二个操作数转换为浮点数*/
44、 strcpy(str2,""); /*将str2清空*/ act=5; /*做计算乘方标志值*/ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/ if(c='%') num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,"")
45、; /*将str2清空*/ act=6; /*做计算模运算乘方标志值*/ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/ if(c='=') num2=atof(str2); /*将第二个操作数转换为浮点数*/ switch(act) /*根据运算符号计算*/ case 1:result=num1+num2
46、;break; /*做加法*/ case 2:result=num1-num2;break; /*做减法*/ case 3:result=num1*num2;break; /*做乘法*/ case 4:result=num1/num2;break; /*做除法*/ case 5:result=pow(num1,num2);break; /*做x的y次方*/ case 6:result=fmod(num1,num2);break; /*做模运算*/ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/ sprintf(temp,"%f",result); /*将结果保存到temp中*/ outtextxy(5*width,height,temp); /*显示结果*/ if(c='c') num1=0; /*将两个操作数复位0,符号标志为1*/ num2=0; flag=1; strcpy(str2,""); /*将str2清空*/ setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ bar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生职业规划大赛《给排水科学与工程专业》生涯发展展示
- 2025混凝土浇筑劳务合同
- 《2025年度劳动合同签订申请书》
- 2025箱包招商加盟合同
- 2025年外贸出口合同模板
- 2025标准临时工作合同范本2
- 2025跨国企业合作合同范本
- 2025年中学生安全教育
- 毕业安全教育主题班会
- 2025唐山市迁安市赵店子镇社区工作者考试真题
- 2024年内蒙古师范大学招聘事业编制人员考试真题
- (二模)2025年河南省五市高三第二次联考历史试卷(含答案)
- 飞行员劳动合同模板及条款
- 《劳动项目五:煮鸡蛋》(教案)-2024-2025学年人教版劳动三年级上册
- 第中西艺术时空对话 课件 2024-2025学年岭南美版(2024) 初中美术七年级下册
- 2025-2030检测设备行业行业风险投资发展分析及投资融资策略研究报告
- (三模)广西2025届高中毕业班4月份适应性测试 英语试卷(含答案解析)
- (四调)武汉市2025届高中毕业生四月调研考试 物理试卷(含答案)
- 中级财务会计课件第四章 金融资产学习资料
- 2025年济南市中区九年级中考数学一模考试试题(含答案)
- 中国印楝素市场调查报告
评论
0/150
提交评论