C语言课程设计计算器程序设计报告书_第1页
C语言课程设计计算器程序设计报告书_第2页
C语言课程设计计算器程序设计报告书_第3页
C语言课程设计计算器程序设计报告书_第4页
C语言课程设计计算器程序设计报告书_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书题 目 计算器程序设计 起讫日期 2006 年 7月 3日至 2006 年 8月 6日所在院系 软件学院 专 业 机械+软件 班 级 04-2 学生姓名 学 号 指导教师 2010年 8 月 日摘 要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延!下面

2、我们将用我们学习的c语言编写一个简易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是tubro c2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!现在只实现了加、减、乘、除、求幂、求模,求平方根,求sin,求cos,求log10,以及一个时钟原代码。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。重点的说

3、明了系统设计思想,设计的步骤、难点技术和解决方案。关键词:c语言 tubro c 2.0汉化版 计算器 时钟 目 录第一章 综述111 课题的现实意义112 软件环境113 硬件环境1第二章 系统设计流程图221 系统流程图222 主要功能表2第三章 系统分析和设计331 图形的绘制和输出332 文本的输出显示3 33 计算函数的调用434 程序的运行和退出5第四章 系统测试641 系统测试642 调试643 错误原因分析一644 错误原因分析二6 第五章 用户使用说明书851 运行turbo c程序进入计算器界面852 计算器的使用9 53 退出程序9 第六章 工作总结10 参考文献11附录

4、: 源代码第一章 综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。这个程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计

5、算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求平方根,求sin,求cos,求log10。计算器的设计使我们所学到的c语言知识在现实中得到检验!信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方便他人,可行性很强!1.2 硬件环境一台完整的电脑,包括键盘、鼠标,最小硬盘空间1ghz 386,486,586及兼容机.640k基本内存; 1m以上扩充内存,10m以上的显示内存.1.3 软件环境开发环境:本系统的设计采用的是tc语言开发windows xp sp2操作系统,turbo c 2

6、.0汉化版 , wps word大连交通大学软件学院课程设计说明书第二章 程序设计流程图21 系统流程图(图 1)开始输入第一个操作数加法减法乘法除法求幂求模开平方求正弦求余弦求对数输入第二个操作数显示结果寄存器清零结束22 主要功能表(表 1)序号文件名主要功能备注1+加法两个操作数2-减法两个操作数3*乘法两个操作数4/除法两个操作数5%求模两个操作数6求x的y次幂两个操作数7s求平方根一个操作数8o求sin一个操作数9i求cos一个操作数10l求log10一个操作数11=等于12c寄存器清零13q退出表 1第三章 系统分析和设计3.1 图形的绘制和输出在turbo c环境下,绘制程序中的

7、计算器的图形,计算器的输入输出和显示结果的显示屏,绘制计算器的按键,绘制边框。turbo c为用户提供了一个功能很强的画图软件库,它又称为borland图形接口,它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如cga.bgi、egavga.bgi等)。还有一些字符集的字体驱坳程序(如goth.chr黑体字符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib 中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自已的画图源程序中必须包括graphics.h头文

8、件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程序中去。在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。turbo.c提供了一个图形系统初始化函数initgraph可完成这些功能。当我们使用的存储模式为tiny(微型)、 small(小型)或medium(中型)时,不需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数): int

9、itgrapg(&graphdriver, &graphmode,”); 其中驱动程序目录路径为空字符“”时,表示就在当前目录下,参数graphmode用所示的模式号或标示符来定义,参数graphdriver是一个枚举变量detect,cga,vga,,一般: graphdriver=detect一旦执行了初始化,显示器即被设置成相应模式的图形方式。上面初始化过程中,将由detect检测所用适配器类型,并将当前目录下相应的驱动程序装入,并采用最高分辩率显示模式作为graphmode的值。如检测到为cga适配器时,则graphmode等于4或为cgahi,若检测到vga适配器,则graphmod

10、e等于2或为vgahi。由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示,turbo c并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关,编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示,则必须要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动程序也不同,这些驱动程序已经在tubro c系统盘上提供。在用户的图形程序中,进行图形系统初始化时,即执行函数。initgraph(&graphdriver,&graphmode,char path-for-driver)时,程序就按照path-for-drive

11、r所指的路径将图形驱动程序装入内存。这样,以后的图形功能才能被支持。若在所指路径下找不到相应显示器的驱动程序,或没有对驱动程序进行装入操作,则运行图形程序时,就会在屏幕上显示出错信息:bgi error: graphics not initialized(use”initgraph”)必须在工作盘上复制上这些文件,否则图形程序就无法运行,而出现上述的错误信息。3.2 文本的输出显示turbo c2.0的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。在turbo c2.0环境下,用ottextxy定位输出文本,如计算器上的函数意义的解释,一些使用说明,程

12、序设计人。 turbo c2.0默认定义的文本窗口为整个屏幕, 共有80列(或40列)25行的文本单元, 每个单元包括一个字符和一个属性, 字符即ascii 码字符, 属性规定该字符的颜色和强度。turbo c2.0可以定义屏幕上的一个矩形域作为窗口, 使用window()函数定义。 窗口定义之后, 用有关窗口的输入输出函数就可以只在此窗口内进行操作而不超出窗口的边界。 window()函数的调用格式为: void window(int left, int top, int right, int bottom); 函数中形式参数(int left, int top)是窗口左上角的坐标, (in

13、t right, int bottom)是窗口的右下角坐标, 其中(left, top)和(right, bottom) 是相对于整个屏幕而言的。turbo c 2.0规定整个屏幕的左上角坐标为(1, 1), 右下角坐标为(80, 25)。并规定沿水平方向为 x轴, 方向朝右; 沿垂直方向为 y轴, 方向朝下。若window()函数中的坐标超过了屏幕坐标的界限, 则窗口的定义就失去了意义, 也就是说定义将不起作用, 但程序编译链接时并不出错。另外, 一个屏幕可以定义多个窗口, 但现行窗口只能有一个(因为dos为单任务操作系统), 当需要用另一窗口时, 可将定义该窗口的window()函数再调用

14、一次, 此时该窗口便成为现行窗口了。 如要定义一个窗口左上角在屏幕(20, 5)处, 大小为30列15行的窗口可写成:window(20, 5, 50, 25); 窗口内文本的输出函数 int cprintf(, ); int cputs(char *string); int putch(int ch); cprintf()函数输出一个格式化的字符串或数值到窗口中。它与printf() 函数的用法完全一样, 区别在于cprintf()函数的输出受窗口限制, 而printf() 函数的输出为整个屏幕。 cputs()函数输出一个字符串到屏幕上, 它与puts()函数用法完全一样, 只是受窗口大小

15、的限制。 putch()函数输出一个字符到窗口内。 int getche(void); 该函数在前面已经讲过, 需要说明的是, getche()函数从键盘上获得一个字符, 在屏幕上显示的时候, 如果字符超过了窗口右边界, 则会被自动转移到下一行的开始位置。 void clrscr(void); 清除当前窗口中的文本内容, 并把光标定位在窗口的左上角(1, 1)处。 void clreol(void); 清除当前窗口中从光标位置到行尾的所有字符, 光标位置不变。 void gotoxy(x, y); 该函数很有用, 它用来定位光标在当前窗口中的位置。这里x, y是指光标要定位处的坐标(相对于窗口

16、而言), 当x, y超出了窗口的大小时, 该函数就不起作用了。 3.3 计算函数的调用1.调用 c库函数中的函数,数学函数#inchude 如:sin,cos,sqrt,log102.建立一些函数,如c键清空寄存器 3.4 程序的运行和退出1.运行 通过tubro c安装路径找到tc2.0文件夹中的tc.exe文件,双击该文件,即可进入tc2.0环境。2.退出退出tc可以按f10键进入主菜单,选择file菜单下的quit命令,再按回车键即可退出tc环境。(也可以在tc环境下直接按alt+x键退出程序。这是tc环境下的热键)第四章 系统测试程序调试是指对程序的查错和排错。为了便于查错、阅读,在设

17、计该程序的过程中我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程带来了很多方便。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义,定义位置不正确、语法错误、转义字符漏用、逻辑错误等。1 系统测试系统测试结果如下:输出:错误c:jisuanqibyjzj.txt 183: 未定义的符号left在 run 函数中错误 c:jisuanqibyjzj.txt 183: 需要用常量表达式在 r

18、un 函数中错误: c:jisuanqibyjzj.txt 393:main的宣告;开始编译文件: c:jisuanqibyjzj.txt42 调试根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,

19、一般电脑不容易发现。所以更要对程序仔细的检查。经认真修改之后重新保存文件。4.3 错误原因分析一缺少变量定义,定义位置不正确由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。例如: 未定义void mwindow(char *header); /*窗口函数*/ 或mwindow( calculator ); /* 显示主窗口 */,所以输出void mwind

20、ow( char *header )中就有错误,因为缺少定义。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式4.4 错误原因分析二注释的位置程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有c语言可执行的语句!逻辑错误编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和

21、细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,可能是对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了pr

22、intf语句用来显示n的变化,在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。 第五章 用户使用说明书 51 运行turbo c程序进入计算器界面通过他tubroc 的路径找到tc文件夹找到tc文件夹中的tc.exe文件,并用鼠标双击该文件名进入tc环境。打开jisuanqibyjzj.c文件52 计算器的使用 基本使用:用控制鼠标图形移动,当移动到相应

23、得按钮时按回车键输入当前数字或执行对应的函数。加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求x的y次方: 输入数x,按“”,输入数y,按“=”,输出结果。求x/y的模: 输入数x,按“%”,输入数y,按“=”,输出结果。求sin: 输入一个数, 按“o”,按“=”,输出结果。求cos: 输入一个数, 按“i”,按“=”,输出结果。求log10: 输入一个数, 按“l”,按“=”,输出结

24、果。c键:把寄存器清零q键:退出计算器界面53 退出程序退出tc可以按f10键进入主菜单,选择file菜单下的quit命令,再按回车键即可退出tc环境。(也可以在tc环境下直接按alt+x键退出程序。这是tc环境下的热键) 第六章 工作总结 经过了四个星期的c语言程序设计终于在老师的细心指导和同学的热情帮助下基本完成了计算器课题的设计修改任务!虽然有些地方不尽如人意但是初步达到了对自己的要求!刚开始设计的时候找不到头绪,不知道该从哪里下手!通过向同学询问和向老师寻求帮助找走进了设计的门槛!通过网上查找到很多成功的计算器程序,通过对那些已经成功地程序进行分析找到自己的设计思路,制定设计流程。并通

25、过比较各种程序了解各个程序的利弊,从而明确自己计算器的设计方向和如何通过技术手段达到自己的目的!万事开头难,可是对于并不是很熟悉的c语言在下面的工作中困难处处能遇见.通过查找c语言教材去图书馆查找相关的资料和同学一起讨论终于把一个个棘手的陌生的问题解决。测试阶段中发现了几处错误导致程序不能编译,通过耐心的分析源代码终于编好了一个完整无误的程序。 在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉。同时认识到程序员的工作并不是我们想象的那么简单轻松的,在现在

26、的编程中要有足够的耐心和热情。参考文献1 黄明等.21世纪进阶辅导 c语言程序设计.大连理工大学出版社,20052 马靖善等.c语言程序设计.清华大学出版社,20053 谭浩强.c语言程序设计(第二版).北京:高等教育出版社,20024 张毅坤等.c语言程序设计教程m .西安交通大学出版社,2003参考文献1 谭浩强.c程序设计.北京:清华大学出版社,19992 薛刚等.c语言实用教程.长春:吉林科学技术出版社,19973 高福祥等.汇编语言程序设计.沈阳:东北大学出版社,1995 4 c语言程序设计网附录:源代码:#include /*dos接口函数*/#include /*数学函数的定义*

27、/#include /*屏幕操作函数*/#include /*i/o函数*/#include /*库函数*/#include /*变量长度参数表*/#include /*图形函数*/#include /*字符串函数*/#include /*字符操作函数*/#define up 0x48 /*光标上移键*/#define down 0x50 /*光标下移键*/#define left 0x4b /*光标左移键*/#define right 0x4d /*光标右移键*/#define enter 0x0d /*回车键*/#include#include#include#define centerx

28、 320#define centery 175#define click 100#define clickdelay 30#define hebeep 10000#define lowbeep 500#define beepdelay 200void *rar; /*全局变量,保存光标图象*/struct palettetype palette; /*使用调色板信息*/int graphdriver; /* 图形设备驱动*/int graphmode; /* 图形模式值*/int errorcode; /* 错误代码*/int maxcolors; /* 可用颜色的最大数值*/int maxx

29、, maxy; /* 屏幕的最大分辨率*/double aspectratio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/void initialize(void); /*初始化函数*/void computer(void); /*计算器计算函数*/void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/void mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(

30、); /*设置箭头光标函数*/int mrk_18=-5,-160,5,-160,5,-130,-5,-130, ;int mrk_28=-5,-160,5,-160,2,-130,-2-130, ;int hourhand8=-3,-100,3,-120,4, 10,-4,10;int mihand8=-3,-120,3,-120,4, 10,-4,10;int sechand8=-2,-150,2,-150,3, 10,-3,10;void click() sound(click); delay(clickdelay); nosound();void highbeep() sound(he

31、beep); delay(beepdelay); nosound;void lowbeep() sound(lowbeep);void drawpoly(int *data,int angle,int color) int usedata8; float sinang,cosang; int i; sinang=sin(float)angle/180*3.14); cosang=cos(float)angle/180*3.14); for(i=0;i8;i+=2) usedatai =centerx+ cosang*datai-sinang*datai+1+.5; usedatai+1=cen

32、tery+sinang*datai+cosang*datai+1+.5; setfillstyle(solid_fill,color); fillpoly(4,usedata);void drawclock(struct time *cutime) int ang; float hourrate,minrate,secrate; setbkcolor(blue); cleardevice(); setcolor(white); for(ang=0;angti_sec/60; minrate=(float)cutime-ti_min+secrate)/60; hourrate=(float)cu

33、time-ti_hour/12)+minrate)/12; ang=hourrate*360; drawpoly(hourhand,ang,yellow);/*画时针*/ ang=minrate*360; drawpoly(mihand,ang, green);/*画分针*/ ang=secrate*360; drawpoly(sechand,ang, red);/*画秒针*/*主函数*/int main() int gdriver=ega, gmode=egahi; int curpage; struct time curtime ,newtime ; initgraph(&gdriver,

34、&gmode,c:tc); setbkcolor(blue); cleardevice(); gettime(&curtime); curpage=0; drawclock(&curtime); while(1) if(kbhit() break; gettime(&newtime); if(newtime.ti_sec!=curtime.ti_sec) if(curpage=0) curpage=1; else curpage=0; curtime=newtime; setactivepage(curpage); drawclock(&curtime); setvisualpage(curp

35、age); if(newtime.ti_min=0&newtime.ti_sec=0) highbeep(); else if(newtime.ti_min=59& newtime.ti_sec=59) lowbeep(); else click(); closegraph(); initialize();/* 设置系统进入图形模式 */ computer(); /*运行计算器 */ closegraph();/*系统关闭图形模式返回文本模式*/ return(0); /*结束程序*/* 设置系统进入图形模式 */void initialize(void) int xasp, yasp; /*

36、 用于读x和y方向纵横比*/ graphdriver = detect; /* 自动检测显示器*/ initgraph( &graphdriver, &graphmode, );/*初始化图形系统*/ errorcode = graphresult(); /*读初始化结果*/ if( errorcode != grok ) /*如果初始化时出现错误*/ printf(graphics system error: %sn, grapherrormsg( errorcode ) ); /*显示错误代码*/ exit( 1 ); /*退出*/ getpalette( &palette ); /* 读

37、面板信息*/ maxcolors = getmaxcolor() + 1; /* 读取颜色的最大值*/ maxx = getmaxx(); /* 读屏幕尺寸 */ maxy = getmaxy(); /* 读屏幕尺寸 */ getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/ aspectratio = (double)xasp/(double)yasp;/* 计算纵横比值*/*计算器函数*/void computer(void) struct viewporttype vp; /*定义视口类型变量*/ int color, height, width;

38、 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; /*设置灰颜色值*/ getviewsettings( &vp ); /* 读取当前窗口的大小*/ width=(vp.right+1)/10; /* 设置按钮宽度 */ he

39、ight=(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 ); /*设置淡绿颜色边框线*/ rectangle( x+width*2, y, x+7*width, y+height ); /*画一个矩形边框线*/ setcolor(red); /*

40、设置颜色为红色*/ outtextxy(x+3*width,y+height/2,0.); /*输出字符串0.*/ x =2*width-width/2; /*设置x的坐标值*/ y =2*height+height/2; /*设置y的坐标值*/ for( j=0 ; j4 ; +j ) /*画按钮*/ for( i=0 ; i=x0+6*width) /*如果右移,移到尾,则移动到最左边字符位置*/ x=x0; m=0; else x=x+width+width/2; m+; /*否则,右移到下一个字符位置*/ if(v=left) /*左移箭头时新位置计算*/ if(x=x0) x=x0+

41、6*width; m=4; /*如果移到头,再左移,则移动到最右边字符位置*/ else x=x-width-width/2; m-; /*否则,左移到前一个字符位置*/ if(v=up) /*上移箭头时新位置计算*/ 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(isdigit(c)|c=.)

42、/*判断是否是数字或小数点*/ 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,3*height/2); outtextxy(5*width,height,str2);

43、/*显示字符串*/ 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.); /*显示字符串*/ if(c=-) if(strcmp(str2,)=0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/

44、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); /*画矩形*/ outtextxy(5*width,height,0.); /*显示字符串*/ if(c=*) num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将str2清空*/ act=3; /

45、*做计算乘法标志值*/ 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,); /*将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); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将str2清空*/ act=5; /*做计算乘方标志值*/ setfillstyle(solid_fill,color+3); /*设置用淡绿色实体

温馨提示

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

评论

0/150

提交评论