




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书 题 目计算器程序设计 起讫日期 2006 年7月3日至2006年8月6日 所在院系软件学院 专 业机械+软件班 级04-2 学生姓名偶偶哦 学 号 指导教师 2006年8 月 摘要 当今社会是信息社会,科技经济高速发展的社会!为了更方便人们的工作生活和加速 人们处理信息的速度,计算器应运而生。由于它体积小巧,携带方便,价格便宜,构造 简单等诸多的优点成为人们生活中的必备品! 随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小!电脑的出 现改变人们的生活习惯,很多事情都可以电脑来完成!电脑的更大一个优点就是可以通 过软件的应用无限的延伸电脑功能的外延!下面我们将用我
2、们学习的 c 语言编写一个简 易的计算器程序!实现简单的初步的计算功能! 本程序的编写基础是 Tubro 汉化版 , 它在 tubro c 的原有基础上实现了多汉字的支 持方便了我们的使用。 生成的程序可移植性强兼容性好稳定! 现在只实现了加、 减、乘、 除、求幕、求模,求平方根,求 Sin,求Cos,求LoglO,以及一个时钟原代码。这个系 统是基于软件发展的生命周期来研制的, 它可以直接输入数学表达式, 不需要任何转换, 就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式。不能运算多个 表达式。在程序里面在添加一组选择函数即可。本论文主要介绍了本课题的开发背景, 开发的过程和所
3、要完成的功能。重点的说明了系统设计思想,设计的步骤、难点技术和 解决方案。 关键词:C语言Tubro c 汉化版 计算器 时钟 目录 第一章综述 1 1. 1课题的现实意义 1 1. 2软件环境 1 1. 3硬件环境 1 第二章系统设计流程图2 2. 1 系统流程图 2 2. 2 主要功能表 2 第三章 系统分析和设计 3 3. 1 图形的绘制和输出 3 3. 2 文本的输出显示 3 3. 3计算函数的调用 4 3. 4 程序的运行和退出 5 第四章系统测试 6 4. 1 系统测试 6 4. 2 调试 6 4. 3错误原因分析一 6 4. 4错误原因分析二 6 第五章用户使用说明书8 5. 1
4、 运行Turbo C程序进入计算器界面 8 5. 2 计算器的使用 9 5. 3 退出程序 9 第六章工作总结 10 参考文献 11 附录: 源代码 第一章 综述 课题的现实意义 现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困 难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己 的学习工作。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算 工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵 盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活 给我们更多的选择和实现方式。 这个
5、程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运 算的结果。并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主 要计算功能有以下几个方面: 加法,减法,乘法,除法,求幂,求模,求平方根, 求 Sin , 求Cos,求LoglO。计算器的设计使我们所学到的c语言知识在现实中得到检验! 信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活 工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方 便他人,可行性很强! 硬件环境 一台完整的电脑,包括键盘、鼠标,最小硬盘空间 1GHz 386,486,586 及兼容机 .64
6、OK 基本内存 ; 1M以上扩充内存,10M以上的显示内存. 软件环境 开发环境:本系统的设计采用的是 TC语言开发 Windows XP sp2 操作系统, Turbo C 汉化版 , WPS word 第二章程序设计流程图 2. 1系统流程图(图1) 2. 2主要功能表(表1 ) 序号 文件名 主要功能 备注 1 + 加法 两个操作数 2 - 减法 两个操作数 3 * 乘法 两个操作数 4 / 除法 两个操作数 5 % 求模 两个操作数 6 A 求x的y次幕 两个操作数 7 S 求平方根 一个操作数 8 O 求Sin 一个操作数 9 I 求Cos 一个操作数 10 L 求表og1o 一个操
7、作数 11 = 等于 12 C 寄存器清零 13 Q 退出 三章系 分析和 计 图形的绘制和输出 在Turbo C环境下,绘制程序中的计算器的图形,计算器的输入输出和显示结果的 显示屏,绘制计算器的按键,绘制边框。 Turbo C为用户提供了一个功能很强的画图软件库,它又称为BorLand图形接口,它 包括图形库文件,图形头文件()和许多图形显示器(图形终端)的驱动程序(如、等) 还有一些字符集的字体驱坳程序(如黑体字符集等)。编写图形程序时用到的一些图形库 函数均在 中,执行这些函数时,所需的有关信息(如宏定义等)则包含在头文件中。因 此用户在自已的画图源程序中必须包括头文件,在进行目标程序
8、连接时,要将连接到自 己的目标程序中去。 在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化, 即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应 程序的入口地址) ,以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要 支持所选用的显示模式,否则将出错。提供了一个图形系统初始化函数 initgraph 可完 成这些功能。 当我们使用的存储模式为tiny (微型)、small (小型)或 medium (中型)时,不 需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的 任一函数) : intitgrapg(其中驱动
9、程序目录路径 为空字符“”时,表示就在当前目录下,参数 graphmode 用所示的模式号或标示符来定 义,参数 graphdriver 是一个枚举变量DETECT,CGA,VGA;,一般:graphdriver=DETECT 一旦执行了初始化,显示器即被设置成相应模式的图形方式。 上面初始化过程中,将由DETECT佥测所用适配器类型,并将当前目录下相应的驱动 程序装入,并采用最高分辩率显示模式作为graphmode的值。如检测到为 CGA适配器时, 则graphmode等于4或为CGAHI若检测到 VGA适配器,贝U graphmode等于2或为VGAH。 由于图形程序运行并显示图象直接与显
10、示器有关, 而如何控制驱动显示器进行显示, Turbo C并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相 关,编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示, 则必须要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动 程序也不同,这些驱动程序已经在 Tubro C 系统盘上提供。在用户的图形程序中,进行 图形系统初始 化时, 即执行函 数。 initgraph( 函数中形式参数 (int left, int top) 是窗口左上角的坐标 , (int right, int bottom) 是窗口的右下角坐标 , 其中 (le
11、ft, top) 和 (right, bottom) 是相对于整个屏幕而言的。 Turbo C 规定整个屏幕的左上角坐标为 (1, 1), 右下角坐标为 (80, 25) 。并规定沿 水平方向为 X 轴, 方向朝右 ; 沿垂直方向为 Y 轴, 方向朝下。 若 window() 函数中的坐标 超过了屏幕坐标的界限 , 则窗口的定义就失去了意义 , 也就是说定义将不起作用 , 但程 序编译链接时并不出错。 另外 , 一个屏幕可以定义多个窗口 , 但现行窗口只能有一个 (因 为 DOS 为单任务操作系统 ), 当需要用另一窗口时 , 可将定义该窗口的 window() 函数再 调用一次 , 此时该窗
12、口便成为现行窗口了。 如要定义一个窗口左上角在屏幕 (20, 5) 处 , 大小为 30 列 15 行的窗口可写 成:win dow(20, 5, 50, 25);窗口内文本的输出函数 int cprintf(, ); int cputs(char *string); int putch(int ch); cprintf() 函数输出一个格式化的字符串或数值到窗口中。它与 printf() 函数的用 法完全一样 , 区别在于 cprintf() 函数的输出受窗口限制 , 而 printf() 函数的输出为整 个屏幕。 cputs() 函数输出一个字符串到屏幕上 , 它与 puts() 函数用法
13、完全一样 , 只是受窗 口大小的限制。 putch() 函数输出一个字符到窗口内。 int getche(void); 该函数在前面已经讲过 , 需要说明的是 , getche() 函数从键盘上获得一个字符 , 在 屏幕上显示的时候 , 如果字符超过了窗口右边界 , 则会被自动转移到下一行的开始位 置。 void clrscr(void); 清除当前窗口中的文本内容 , 并把光标定位在窗口的左上角 (1, 1) 处。 void clreol(void); 清除当前窗口中从光标位置到行尾的所有字符 , 光标位置不 变。 void gotoxy(x, y); 该函数很有用 , 它用来定位光标在当前
14、窗口中的位置。这里 x, y 是指光标要定位处的坐标 ( 相对于窗口而言 ), 当 x, y 超出了窗口的大小时 , 该函数就 不起作用了。 计算函数的调用 1. 调用 C 库函数中的函数 , 数学函数 #inchude 如 :sin,cos,sqrt,log10 2. 建立一些函数,如 c 键清空寄存器 程序的运行和退出 1.运行 通过Tubro C安装路径找到文件夹中的文件,双击该文件,即可进入环境。 2.退出 退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可 退出TC环境。(也可以在TC环境下直接按 Alt+X键退出程序。这是 TC环境下的热键) 第四章
15、系统测试 程序调试是指对程序的查错和排错。为了便于查错、阅读,在设计该程序的过程中 我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程带 来了很多方便。 经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误, 屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反 复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有: 缺少变量定义,定义位置不正确、语法错误、转义字符漏用、逻辑错误等。 .1系统测试 系统测试结果如下: 输出: 错误C: 183:未定义的符号LEFT在Run函数中 错误C: 183:需要用常量表
16、达式在Run函数中 错误:C: 393: main的宣告; 开始编译文件 : C: 4 2 调试 根据电脑所给的提示出现语法错误, 缺少变量的定义大多的语法错误在通过书本参 考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用 是有一定的范围限定;过分重视分号的重要性而在for 、if 、 while 语句中画蛇添足加 分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造 成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般 是能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑 不容易发现。所以更要
17、对程序仔细的检查。经认真修改之后重新保存文件。 错误原因分析一 缺少变量定义,定义位置不正确 由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的 提示下一般还是很容易找到。 不过需要注意的是在定义的时候有些函数使用同样的变量 名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样 的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。 例 如 : 未 定 义 void mwindow(char *header); /* 窗 口 函 数 */ 或 mwindow( Calculator ); /* 显示主窗口 */ ,所以输出 void mw
18、indow( char *header ) 中就有错误,因为缺少定义。 语法错误 大多的语法错误在通过书本参考下能够修改。 主要是平时缺乏锻炼、 不太注意而产生的。 如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for 、if 、 while 语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式 错误原因分析二 注释的位置 程序设计中在注释的时候不能同我们平常写字一样随心所欲, 我们应该注意注释的 格式。注释中不能含有 c 语言可执行的语句! 逻辑错误 编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来, 这时需要对数据结果进行分析。这种
19、错误的查找是最难的,需要有相当的耐心和细心去 把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另 人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个 printf 函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调 试完毕将设置的 printf 都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严 谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我 就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数 据文件中存在的数据记录的时候,却一条记录也显示不出来,可能是对n 变量
20、的定义或 使用出错了, 于是在每个主要函数的操作过程中添加了 printf 语句用来显示 n 的变化, 在执行某个函数前添加插入语句显示 n 的起始值, 在执行完该个函数后再添加插入语句 显示此时n的结果值,观察 n的变化是否正确,如果错误了,也就说明该函数编写过程 有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到 最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。 第五章 用户使用说明书 51 运行 Turbo C 程序进入计算器界面 通过他Tubroc的路径找到TC文件夹 L 找到TC文件夹中的文件,并用鼠标双击该文件名 TC.EJCE 进入TC环
21、境。 打开文件 5. 2 计算器的使用 基本使用:用控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数 字或执行对应的函数。 减法 : 输入被减数数,按“ - ”,输入减数,按“ =”,输出结果。 乘法 : 输入一个数,按“ * ”,输入另个数,按“ =”,输出结果。 除法 : 输入一个被除数,按“ +”,输入另个除数,按“ =”,输出结果。 求x的y次方:输入数x,按“八”,输入数y,按“=”,输出结果。 求x/y的模:输入数x,按“ %,输入数y,按“=”,输出结果。 求sin:输入一个数,按“0”,按“=”,输出结果。 求 cos: 输入一个数 , 按“ I ”,按“ =”,输出结
22、果。 求Iog10:输入一个数,按“ L”,按“=”,输出结果。 C键:把寄存器清零 Q键:退出计算器界面 5 3 退出程序 退出TC可以按F10键进入主菜单,选择 File菜单下的Quit命令,再按回车键即可退 出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是 TC环境下的热键) 第六章 工作总结 经过了四个星期的 c 语言程序设计终于在老师的细心指导和同学的热情帮助下基本完 成了计算器课题的设计修改任务!虽然有些地方不尽如人意但是初步达到了对自己的要 求!刚开始设计的时候找不到头绪,不知道该从哪里下手!通过向同学询问和向老师寻 求帮助找走进了设计的门槛!通过网上查找到很多成
23、功的计算器程序,通过对那些已经 成功地程序进行分析找到自己的设计思路,制定设计流程。并通过比较各种程序了解各 个程序的利弊,从而明确自己计算器的设计方向和如何通过技术手段达到自己的目的! 万事开头难, 可是对于并不是很熟悉的 c 语言在下面的工作中困难处处能遇见 . 通过查找 c 语言教材去图书馆查找相关的资料和同学一起讨论终于把一个个棘手的陌生的问题解 决。测试阶段中发现了几处错误导致程序不能编译,通过耐心的分析源代码终于编好了 一个完整无误的程序。 在这次的 c 语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解 决积累了编程的实践经验。 在实际的编程操作中发现自己 c 语言
24、知识的不足, 加深了对 c 语言的理解。在学习之余体验到收获的感觉。同时认识到程序员的工作并不是我们想象 的那么简单轻松的,在现在的编程中要有足够的耐心和热情。 参考文献 1 黄明等 .21 世纪进阶辅导 C 语言程序设计 . 大连理工大学出版 社,2005 2 马靖善等 .C 语言程序设计 . 清华大学出版社, 2005 3 谭浩强.C语言程序设计(第二版)北京:高等教育出版社, 2002 2003 4 张毅坤等.C语言程序设计教程M.西安交通大学出版社, 参考文献 1 谭浩强.C程序设计.北京:清华大学出版社,1999 1997 1995 2 薛刚等.C语言实用教程.长春:吉林科学技术出版
25、社, 3 高福祥等 . 汇编语言程序设计 . 沈阳:东北大学出版社, 4 C 语言程序设计网 附录: 源代码: #include /*DOS #include /* #include /* #include /*I/O #include /* #include /* #include /* #include /* #include /* #define UP 0 x48 /* #define DOWN 0 x50 /* #define LEFT 0 x4b /* #define RIGHT 0 x4d /* 接口函数 */ 数学函数的定义 */ 屏幕操作函数 */ 函数 */ 库函数 */ 变
26、量长度参数表 */ 图形函数 */ 字符串函数 */ 字符操作函数 */ 光标上移键 */ 光标下移键 */ 光标左移键 */ 光标右移键 */ #define ENTER 0 x0d /* 回车键 */ #include #include #include #define CENTERX 320 #define CENTERY 175 #define CLICK 100 #define CLICKDELAY 30 #define HEBEEP 10000 #define LOWBEEP 500 改变文本 #define BEEPDELAY 200 void *rar; /* 全局变量,保存光
27、标图象 */ struct palettetype palette; /*使用调色板信息 int GraphDriver; /* 图形设备驱动 */ int GraphMode; /* 图形模式值 */ int ErrorCode; /* 错误代码 */ int MaxColors; /* 可用颜色的最大数值 */ int MaxX, MaxY; /* 屏幕的最大分辨率 */ double AspectRatio; /* 屏幕的像素比 */ void drawboder(void); /* 画边框函数 */ void initialize(void); /* 初始化函数 */ void com
28、puter(void); /* 计算器计算函数 */ void changetextstyle(int font, int direction, int charsize); /* 样式函数 */ void mwindow(char *header); /* 窗口函数 */ int specialkey(void) ; /* 获取特殊键函数 */ int arrow(); /* 设置箭头光标函数 */ int Mrk_18=-5,-160,5,-160,5,-130,-5,-130, ; int Mrk_28=-5,-160,5,-160,2,-130,-2-130, ; int HourHa
29、nd8=-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(HEBEEP); delay(BEEPDELAY); nosound; void LowBeep() sound(LOWBEEP); void DrawPoly(int *data,int angle,int col
30、or) int usedata8; float sinang,cosang; int i; sinang=sin(float)angle/180*; cosang=cos(float)angle/180*; for(i=0;i8;i+=2) usedatai =CENTERX+ cosang*datai-sinang*datai+1+.5; usedatai+1=CENTERY+sinang*datai+cosang*datai+1+.5; setfillstyle(SOLID_FILL,color); fillpoly(4,usedata); void DrawClock(struct ti
31、me *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)cutime-ti_hour/12)+minrate)/12; ang=hourrate*360; DrawPoly(HourHand,ang,YELLOW);/* 画时针 */ ang=minrate*360; DrawPoly
32、(MiHand,ang, GREEN);/* 画分针 */ ang=secrate*360; DrawPoly(SecHand,ang, RED);/*画秒针 */ /* 主函数 */ int main() int gdriver=EGA, gmode=EGAHI; int curpage; struct time curtime ,newtime ; initgraph( setbkcolor(BLUE); cleardevice(); gettime( curpage=0; DrawClock( while(1) if(kbhit() break; gettime( if!= if(cur
33、page=0) curpage=1; else curpage=0; curtime=newtime; int xasp, yasp; /*用于读 x 和 y 方向纵横比 */ setactivepage(curpage); DrawClock( setvisualpage(curpage); if=0 else if=59 else Click(); closegraph(); initialize();/* 设置系统进入图形模式 */ computer(); /* 运行计算器 */ closegraph();/* 系统关闭图形模式返回文本模式 */ return(0); /* 结束程序 *
34、/ /* 设置系统进入图形模式 */ void initialize(void) GraphDriver = DETECT; /*自动检测显示器 */ initgraph( /* 初始化图形系统 */ ErrorCode = graphresult(); /*读初始化结果 */ if( ErrorCode != grOk ) /*如果初始化时出现错误 */ printf(Graphics System Error: %sn, grapherrormsg( ErrorCode ) ); /* 显示错误代码 */ exit( 1 ); /*退出 */ getpalette( /* 读面板信息 */
35、 MaxColors = getmaxcolor() + 1; /*读取颜色的最大值 */ MaxX = getmaxx(); /* 读屏幕尺寸 */ MaxY = getmaxy(); /* 读屏幕尺寸 */ getaspectratio( /*拷贝纵横比到变量中 */ AspectRatio = (double)xasp/(double)yasp;/*计算纵横比值 */ /* 计算器函数 */ void computer(void) struct viewporttype vp; /*定义视口类型变量 */ int color, height, width; 操作数和计算结果变量 */ i
36、nt 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=+-789*/Qc=A%;/*定义字符串在按钮图形上显示的符号*/ mwindow( Calculator ); /*显示主窗口 */ color = 7;/*设置灰颜色值 */ getviewsettings( /* 读取当前窗口的大小 */ width=+1)/10;/* height=/10 ; /* x = width /2; /* y = height/2; /* 设置
37、按钮宽度 */ 设置按钮高度 */ 设置 x 的坐标值 */ 设置 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 ); /* 画一个矩形边框线 */ 输出字符串 0.*/ setcolor(RED); /* 设置颜色为红色 */ outtextxy(x+3*wi
38、dth,y+height/2,0.); /* x =2*width-width/2; /* y =2*height+height/2; /* for( j=0 ; j4 ; +j ) /* 设置 x 的坐标值 */ 设置 y 的坐标值 */ 画按钮 */ 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+6*width; m=4; /* 如果
39、移到头,再左移,则移动到最右边字符位置 */ 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=.) /* 判断是否是数字或小数点 */ if(flag=-1) /
40、* 如果标志为 -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); /* 显示字符串 */
41、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; /* 设置负数
42、标志 */ 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,);
43、/* 将 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(c=/) num1=atof(str2); /* 将第二个操作数转换为浮点数 */ strcpy(str2,); /* 将 str2 清空 */ act=4; /* 做计算除法标志值 */ setfillstyle(SOLID_FILL,color+3); b
44、ar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,0.); /* 显示字符串 */ 设置用淡绿色实体填充 */ if(c=A) num1=atof(str2); /* 将第二个操作数转换为浮点数 */ strcpy(str2,); /* 将 str2 清空 */ setfillstyle(SOLID_FILL,color+3); /* 画矩形 */ bar(2*width+width/2,height/2,15*width/2,3*height/2); /* outtextxy(5*widt
45、h,height,0.); /*显示字符串 */ if(c=%) num1=atof(str2); /* 将第二个操作数转换为浮点数 */ strcpy(str2,); /* 将 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(str
46、2); /* 将第二个操作数转换为浮点数 */ switch(act) /* 根据运算符号计算 */ case 1:result=num1+num2;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); /* 设置用淡绿色实体填充 */ /* 覆盖结果区 */ sprintf(temp,%f,result); /* 将结果保存到 temp 中 */ outtextxy(5*width,height,temp); /* 显示结果 */ if(c=c) num1=0; /*将两个操作数复位 0,符号标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 24129-2025胶鞋、运动鞋外底不留痕试验方法
- 计算机通信技术试题及答案
- 行政法学研讨会试题及答案分享
- 对火灾应急预案的评价(3篇)
- 儿科火灾应急演练预案(3篇)
- 计算机硬件选型与配置试题及答案
- 2025年企业整合与风险管理的策略探讨及试题及答案
- 2025年软件设计师考试的职业生涯规划试题及答案
- 2025年竞争优势构建与风险管理试题及答案
- 行政管理法律法规试题及答案
- 退休对女性职工抑郁的影响研究
- 设备润滑保养制度(4篇)
- 渤海银行借款合同模板
- 《海尔公司现行绩效考核体系存在的问题及完善对策研究》11000字(论文)
- 肩关节镜术后康复护理
- 企业环保项目激励制度设计
- 深圳2020-2024年中考英语真题复习专题01 语法填空(解析版)
- 2024年大学生电子版三方协议书模板
- GB/T 25216-2024煤与瓦斯突出危险性区域预测方法
- 日晷项目评价分析报告
- GB/T 29038-2024薄壁不锈钢管道技术规范
评论
0/150
提交评论