文档视界 最新最全的文档下载
当前位置:文档视界 › C语言_程序设计_计算器

C语言_程序设计_计算器

C语言_程序设计_计算器
C语言_程序设计_计算器

C语言_程序设计_计算器

课程设计说明书

题目多功能计算器起讫日期 2006 年 7月 3日至 2006 年 8月 6日

所在院系

专业班级

学生姓名学号

指导教师

2006年 8 月 1 日

摘要

当今社会,随着人们物质生活的不断提高,电子产品已经走进家家户户,无论是生活和学习还是娱乐和消遣几乎样样都离不开电子产品,计算器可谓是我们最亲密的电子伙伴之一。

随着科技的发展,人们对计算要求的精确度越来越高,各种不同功能的计算器已经悄悄走进我们的生活和学习中。对于学生来说一个功能齐全的计算器对我们的学习有着莫大的帮助。借着C语言程序设计的机会,我决定自己动手来研究一下计算器。在练习巩固C语言学习的同时又可以从中体会到计算器的强大功能,然而由于学习的内容和时间有限,至今为止我只能实现四则运算加、减、乘、除、平方、立方和开方的一些简单功能,并且在计算器的里面加了一个漂亮的时钟,用来方便我们的学习。在今后的学习中,我会继续研究,争取进一步来完善它的功能。

本系统采用Turbo C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。本论文主要介绍了该课题的开发背景以及过程和

所要完成的功能。并且重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。由于“初来乍到”,这个程序设计还有一些漏洞和缺陷,希望您多多提出~关键字:Turbo c 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 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使

用..................................................................9 5(3 退出程序 (9)

第六章工作总结 (10)

参考文献………………………………………………………………………11附录: 原代码

第一章综述

1.1 课题的现实意义

我们在学习生活中,常会遇到一些繁杂的数值运算,徒手算将是一件非常头痛

的事,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活。

这个程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四

则运算的结果。并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求

平方根,求Sin,求Cos,求Log10。它让我真正体会到了学以致用。

伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作

用。借着软件发展的周期,我研究了这个课题,既紧随科技发展的前沿,又方便了我们的生活,具有着一定的现实意义。

1.2 硬件环境

一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz

<1> 386,486,586及兼容机.640K基本内存;

<2> 1M以上扩充内存,10M以上的显示内存.

1.3 软件环境

开发环境:本系统的设计采用的是TC语言开发

Windows操作系统,Turbo C 2.00 , Office word

第二章程序设计流程图 2(1 系统流程图(图 1)

开始

输入第一个操作数

减寄开求加乘除求求求求

法存平对法幂模法法正余

方数器弦弦

显示结果输入第二个操作数

结束

图 1

2(2 主要功能表(表 1)

序号文件名主要功能备注 1 + 加法两个操作数

2 - 减法两个操作数

3 * 乘法两个操作数

4 / 除法两个操作数

5 % 求模两个操作数

6 ^ 求x的y次幂两个操作数

7 S 求平方根一个操作数 8 O 求Sin 一个操作数 9 I 求Cos 一个操作数

10 L 求Log10 一个操作数

11 = 等于

12 C 寄存器清零

13 Q 退出

表 1

第三章系统分析和设计

3.1 图形的绘制和输出

在Turbo C环境下,绘制程序中的计算器的图形,计算器的输入输出和显示结果的显示屏,绘制计算器的按键,绘制边框。

Turbo C为用户提供了一个功能很强的画图软件库,它又称为BorLand图形接口,它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGI、EGAVGA.BGI等)。还有一些字符集的字体驱坳程序(如goth.chr黑体字符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib 中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自已的画图源程序中必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程序中去。

在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。Turbo.C提供了一个图形系统初始化函数initgraph可完成这些功能。

当我们使用的存储模式为tiny(微型)、 small(小型)或medium(中型)时,不需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数): intitgrapg(&graphdriver, &graphmode,,””); 其中驱动程序目录路径

为空字符“”时,表示就在当前目录下,参数graphmode用所示的模式号或标示符来定义,参数graphdriver是一个枚举变量{DETECT,CGA,VGA,…},一般: graphdriver=DETECT

一旦执行了初始化,显示器即被设置成相应模式的图形方式。

上面初始化过程中,将由DETECT检测所用适配器类型,并将当前目录下相应的驱动程序装入,并采用最高分辩率显示模式作为graphmode的值。如检测到为CGA适配器时,则graphmode等于4或为CGAHI,若检测到VGA适配器,则graphmode等于2或为VGAHI。

由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示,Turbo C并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关,编程者并不需要知道这些东西,否则太复杂了~但用户的图形程序要能运行并显示,则必须要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动程序也不同,这些驱动程序已经在Tubro C系统盘上提供。在用户的图形程序中,进行图形系统初始化时,即执行函数。

initgraph(&graphdriver,&graphmode,char

path-for-driver)时,程序就按照path-for-driver所指的路径将图形驱动程序装入内存。这样,以后的图形功能才能被支持。若在所指路径下找不到相应显示器的驱动程序,或没有对驱动程序进行装入操作,则运行图形程序时,就会在屏幕上显示出错信息: BGI Error: Graphics not initialized(use”initgraph”)必须在工作盘上复制上这些文件,否则图形程序就无法运行,而出现上述的错误信息。

3.2 文本的输出显示

Turbo C2.0的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。

在Turbo C2.0环境下,用ottextxy定位输出文本,如计算器上的函数意义的

解释,一些使用说明,程序设计人。

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)是窗口左上角的坐标, (int right, int bottom)

是窗口的右下角坐标, 其中(left, top)和(right, bottom) 是相对于整个屏

幕而言的。

Turbo C 2.0规定整个屏幕的左上角坐标为(1, 1), 右下角坐标为(80, 25)。

并规定沿水平方向为 X轴, 方向朝右; 沿垂直方向为 Y轴, 方向朝下。若

window()函数中的坐标超过了屏幕坐标的界限, 则窗口的定义就失去了意义, 也就是说定义将不起作用, 但程序编译链接时并不出错。另外, 一个屏幕可以定义多个窗口, 但现行窗口只能有一个(因为DOS为单任务操作系统), 当需要用另一窗口时, 可将定义该窗口的window()函数再调用一次, 此时该窗口便成为现行窗口了。

如要定义一个窗口左上角在屏幕(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()函数用

法完全一样, 只是受窗口大小的限制。

putch()函数输出一个字符到窗口内。

int getche(void);

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

3.3 计算函数的调用

1.调用 C库函数中的函数,数学函数#inchude

如:sin,cos,sqrt,log10 2.建立一些函数,如c键清空寄存器

3.4 程序的运行和退出

1.运行

通过“资源管理器”找到TC文件夹中的tc.exe文件,用鼠标双击该文件名,

即可进入TC环境。

2.退出

退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键)

第四章系统测试

程序调试是指对程序的查错和排错。为了便于查错、阅读,在设计该程序的过程中我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程带来了很多方便。

经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译……如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义,定义位置不正确、语法错误、转义字符漏用、逻辑错误等。 4.1 缺少变量定义,定义位置不正确

由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。例如: 未定义void mwindow(char *header); /*窗口函数*/ 或

mwindow( "Calculator" );

/* 显示主窗口 */,所以输出void mwindow( char *header )中就有错误,因为缺少定义。 4.2 语法错误

大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式

与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。

4.3 注释的位置

程序设计中在注释的时候不能同我们平常做笔记一样随心所欲地爱写哪就写哪,这造成我最后本来已经编译成功的程序一下子又多了很多错误。注释的时候,注释文字应写在一起中间不能有中断包含了c语言的语句,不然又引起错误格式不正确或是多了字符等。

4.4 逻辑错误

编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,可能是对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了printf语句用来显示n的变化,在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。

第五章用户使用说明书

5(1 运行Turbo C程序进入计算器界面

通过“资源管理器”找到TC文件夹

找到TC文件夹中的tc.exe文件,并用鼠标双击该文件名

进入TC环境。

进入计算器界面

5(2 计算器的使用

基本使用:用????控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。

:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。加法

减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。

: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。除法

求x的y次方: 输入数x,按“^”,输入数y,按“=”,输出结果。求x/y

的模: 输入数x,按“%”,输入数y,按“=”,输出结果。求sin: 输入一个数, 按“O”,按“=”,输出结果。

求cos: 输入一个数, 按“I”,按“=”,输出结果。

求log10: 输入一个数, 按“L”,按“=”,输出结果。

C键:把寄存器清零

Q键:退出计算器界面

5(3 退出程序

退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车

键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键)

第六章工作总结

对我来说本次课题很成功,虽然没有按要求完成,但在研究的过程之中,我学

会了额外的运算功能。这些大大增强了我对研究本次课题的信心。刚选这个课题时,头一下子就昏了,这么复杂的课题要怎么才会完成,可是随着老师的指导以及

自己认真的查阅资料,边学习边研究,渐渐的明白了许多。写代码时虽然重写了好多次,每次又都有不同的错误,真的好想放弃,可是在老师的耐心帮助下,我没有灰心,坚信一定会取得成功~经过反复练习终于我的计算器取得了成功。接着我又研究来怎么实现漂亮时钟功能,经过几天的研究,我学会怎样实现时钟的功能。可是由于时间的限制,我的时钟还不够完善,还没有达到预想的要求,但我不会让它变成一个遗憾,我会继续努力研究的~

这次课题也大大增强了我做事情的决心,使我深深领悟了“世上无难事,只怕

有心人”这句话的道理。它将成为我以后学习和工作的座右铭。

通过本次研究,我也大大体会了C语言这一高级语言的方便之处。我会努力学习这门学科来方便我的生活~另外作为软件专业的我更要从现在开始学好这一科,来为以后更好的工作奠定一个好的根基~

参考文献

[1] 黄明等.21世纪进阶辅导 C语言程序设计.大连理工大学出版社,2005

[2] 马靖善等.C语言程序设计.清华大学出版社,2005 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002 [4] 张毅坤等.C语言程序设计教程[M] .西安交通大学出版社,2003 [5] 张龙祥等.面向对象程序设计[M].北京:人民邮电出版社,2001.

附录:

源代码:

#include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /*库函数*/

#include /*变量长度参数表*/ #include /*图形函数*/ #include /*字符串函数*/ #include /*字符操作函数*/ #define UP 0x48 /*光标上移键*/ #define DOWN 0x50 /*光标下移键*/ #define LEFT 0x4b /*光标左移键*/ #define RIGHT 0x4d /*光标右移键*/

#define ENTER 0x0d /*回车键*/

void *rar; /*全局变量,保存光标图象*/ struct palettetype palette; /*使用调色板信息*/ int GraphDriver; /* 图形设备驱动*/ 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 charsize); /*改变文本样式函数*/

void mwindow(char *header); /*窗口函数*/ int specialkey(void) ; /*获取特殊键函数*/ int arrow(); /*设置箭头光标函数*/ /*主函数*/ int main()

{

initialize();/* 设置系统进入图形模式 */

computer(); /*运行计算器 */

closegraph();/*系统关闭图形模式返回文本模式*/

return(0); /*结束程序*/

}

/* 设置系统进入图形模式 */

void initialize(void)

{

int xasp, yasp; /* 用于读x和y方向纵横比*/

GraphDriver = DETECT; /* 自动检测显示器*/

initgraph( &GraphDriver, &GraphMode, "" );

/*初始化图形系统*/

ErrorCode = graphresult(); /*读初始化结果*/

if( ErrorCode != grOk ) /*如果初始化时出现错误*/

{

printf("Graphics System Error: %s\n",

grapherrormsg( ErrorCode ) ); /*显示错误代码*/

exit( 1 ); /*退出*/

}

getpalette( &palette ); /* 读面板信息*/

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;

int x, y,x0,y0, i, j,v,m,n,act,flag=1;

float num1=0,num2=0,result; /*操作数和计算结果变量*/

char cnum[5],str2[20]={""},c,temp[20]={""};

char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号 */

mwindow( "Calculator" ); /* 显示主窗口 */

color = 7; /*设置灰颜色值*/

getviewsettings( &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 ); /*设置淡绿颜色边框线*/

rectangle( 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, color);

setcolor(RED);

bar( x, y, x+width, y+height ); /*画一个矩形条*/ rectangle( x, y, x+width, y+height );

sprintf(str2,"%c",str1[j*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=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==RIGHT) /*右移箭头时新位置计算*/

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*height+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=str1[n*5+m]; /*将字符保存到变量c中*/

if(isdigit(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,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."); /*显示字符串*/

}

if(c=='-')

{

if(strcmp(str2,"")==0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/

else

相关文档