




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、intxasp,yasp;intxasp,yasp;/*用于读x和y方向纵横比*/C语言计算器源代码ttinclude/*DOS接口函数*/ttinclude/*数学函数的定义*/ttinclude/*屏幕操作函数*/ttinclude/*I/0函数*/ttinclude/*库函数*/ttinclude/*变量长度参数表*/ttinclude/*图形函数*/ttinclude/*字符串函数*/ttincludectype.h/*字符操作函数*/ttdefineUP0 x48/*光标上移键*/ttdefineDOWN0 x50/*光标下移键*/ttdefineLEFT0 x4b/*光标左移键*/
2、ttdefineRIGHT0 x4d/*光标右移键*/ttdefineENTEROxOd/*回车键*/void紅ar;/*全局变量,保存光标图象*/structpalettetypepalette;/*使用调色板信息*/intGraphDriver;/*图形设备驱动*/intGraphMode;/*图形模式值*/intErrorCode;intMaxColors;intErrorCode;intMaxColors;intMaxX,MaxY;doubleAspectRatio;voiddrawboder(void);/*错误代码*/*可用颜色的最大数值*/*屏幕的最大分辨率*/*屏幕的像素比*/
3、*画边框函数*/voidinitialize(void);/*初始化函数*/voidcomputer(void):/*计算器计算函数*/voidchangetextstyle(intfont,intdirection,intcharsize):/*改变文本样式函数*/voidmwindow(charheader);/*窗口函数*/intspecialkey(void);/*获取特殊键函数*/intarrow();/*设置箭头光标函数*/*主函数*/intmain()TOC o 1-5 h zinitialize();/*设置系统进入图形模式*/computer():/*运行计算器*/close
4、graph();/*系统关闭图形模式返回文本模式*/return(0);/*结束程序*/*设置系统进入图形模式*/voidinitialize(void)GraphDriver二DETECT;/*自动检测显示器*/initgraph(&GraphDriver,&GraphMode,);/*初始化图形系统*/ErrorCode=graphresult():/*读初始化结果*/if(ErrorCode!=grOk)/*如果初始化时出现错误*/printf(GraphicsSystemError:grapherrormsg(ErrorCode);/*显示错误代码*/exit(1);/*退出*/亠ge
5、tpalette(&palette);/*读面板信息*/MaxColors=getmaxcolor()+1;/*读取颜色的最大值*/MaxX=getmaxx();/*读屏幕尺寸*/MaxY=getmaxy();/*读屏幕尺寸*/getaspectratio(&xasp,&yasp);/*拷贝纵横比到变量中*/AspectRatio=(double)xasp/(double)yasp;/*计算纵横比值*/*计算器函数*/voidcomputer(void)structviewporttypevp;/*定义视口类型变量*/intcolor,height,width;intx,y,xO,yO,i,j
6、,v,m,n,act,flag=l;floatnuml=0,num2=0,result;/*操作数和计算结果变量*/charcnum5,str220二,c,temp20=;charstrl二1230.456+-789*/Qc=”;/*定义字符串在按钮图形上显示的符号*/_mwindow(Calculator);/*显示主窗口*/color=7:/*设置灰颜色值*/getviewsettings(&vp);/*读取当前窗口的大小*/width=(vp.right+l)/10;/*设置按钮宽度*/height=(vp.bottom-10)/10;/*设置按钮高度*/x=width/2;/*设置x的
7、坐标值*/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的坐标值*
8、/y二2*height+height/2;/*设置y的坐标值*/for(j=0;j4;+j)/*画按钮*/for(i=0;i=x0+6*width)/*如果右移,移到尾,则移动到最左边字符位置*/x=xO;m二0;elsex二x+width+width/2;m+;/*否则,右移到下一个字符位置*/if(V二二LEFT)/*左移箭头时新位置计算*/if(x=xO)x=x0+6*width;m=4;/*如果移到头,再左移,则移动到最右边字符位置*/elsex=xwidth-width/2;m;/*否则,左移到前一个字符位置*/if(v=UP)/*上移箭头时新位置计算*/辻(y=7*height)y
9、=yO;n=0;/*如果移到尾,再下移,则移动到最上边字符位置*/elsey=y+height+height/2;n+;/*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT);/*在新的位置显示光标箭头*/c=strln*5+m:/*将字符保存到变量c中*/if(isdigit(c)|c=.)/*判断是否是数字或小数点*/if(flag=-l)/*如果标志为-1,表明为负数*/strcpy(str2,-);/*将负号连接到字符串中*/flag=l;/*将标志值恢复为1*/sprintf(temp,c);/*将字符保存到字符串变量temp中*/strcat(str2
10、,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=,+)numl=atof(str2);/*将第一个操作数转换为浮点数*/strcpy(str2,;/*将str2清空*/act=l;/*做计算加法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,1
11、5*width/2,3*height/2);outtextxy(5*width,height,0.);/*显示字符串*/if(c=,-)if(strcmp(str2,,)=0)/*如果str2为空,说明是负号,而不是减号*/flag=-l;/*设置负数标志*/elsenuml=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);/*画矩
12、形*/outtextxy(5*width,height,0.);/*显示字符串*/if(c=,*)numl=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(c=/)numl=atof(str2);/*将第二个操作数转换为浮点数*/strcpy(str2,;
13、/*将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(d)numl=atof(str2);/*将第二个操作数转换为浮点数*/strcpy(str2,,/);/*将str2清空*/act二5;/*做计算乘方标志值*/setfillstyle(SOLID_FILL,color+3);/*设置用淡绿色实体填充*/bar(2*width+width/
14、2,height/2,15*width/2,3*height/2);/*画矩形*/outtextxy(5*width,height,0.);/*显示字符串*/if(c二二)numl=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.
15、);/*显示字符串*/if(c=,二)nuin2=atof(str2);/*将第二个操作数转换为浮点数*/switch(act)/*根据运算符号计算*/case1:result=numl+num2;break;/*做加法*/case2:result=numl-num2;break;/*做减法*/case3:result=numl*num2;break;/*做乘法*/case4:result=numl/num2;break;/*做除法*/case5:result=pow(numl,num2);break;/*做x的y次方*/case6:result=fmod(numl,num2);break;/
16、*做模运算*/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,)numl=0;/*将两个操作数复位0,符号标志为1*/num2=0;flag=l;strcpy(str2,;/*将str2清空*/setfillstyle(SOLID_FILL,color+3);
17、/*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2);/*覆盖结果区*/outtextxy(5*width,height,0.);/*显示字符串*/if(c=Q)exit(0);/*如果选择了q回车,结束计算程序*/putimage(x,y,rar,X0R_PUT);/*在退出之前消去光标箭头*/return;/*返回*/*窗口函数*/voidmwindow(charheader)intheight:cleardevice():/*清除图形屏幕*/setcolor(MaxColors-1);/*设置当前颜色为白色*/
18、setviewport(20,20,MaxX/2,MaxY/2,1):/*设置视口大小*/height=textheight(H);/*读取基本文本大小*/settextstyle(DEFAULT_FONT,H0RIZ_DIR,1);/*设置文本样式*/settextjust辻夕(CENTER_TEXT,T0P_TEXT);/*设置字符排列方式*/outtextxy(MaxX/4,2,header);/*输出标题*/setviewport(20,20+height+4,MaxX/2+4,MaxY/2+20,1);/*设置视口大小*/drawboder();/*画边框*/_voiddrawboder(void)/*画边框*/structviewporttypevp;/*定义视口类型变量*/setcolor(MaxColors-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省无棣县鲁北高新技术开发区实验学校2024-2025学年中考押题预测卷(生物试题文)试卷含解析
- 吉林省长春二道区七校联考2025年初三5月阶段测试化学试题含解析
- 我们能否建立生物医学研究的系统规范二
- 蓝色扁平简约财务知识培训
- 服务标准化与咖啡厅服务质量考核试卷
- 太阳能光伏电站项目管理流程考核试卷
- 消费金融市场的监管科技应用考核试卷
- 皮革护理行业服务标准制定考核试卷
- 有机化学专题习题课专题部分课件
- 白酒酿造过程中的糖化与酒化考核试卷
- 第三章水肥一体化或灌溉施肥
- 《办公用品管理》课件
- 《寿险的功能与意义》课件
- 地铁保洁安全培训
- 延伸护理服务的课件
- 污水处理设施运维服务投标方案(技术方案)
- 冠脉搭桥术个案查房
- 驾驶员日常安全教育培训大纲
- 幼儿园大班语言-福气糕
- 0.4kv线路施工方案
- 《高值医用耗材临床应用点评制度》
评论
0/150
提交评论