计算器(C语言课程设计)

  • Q0_432416
    了解作者
  • 6.9KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-26 10:55
    上传日期
用C语言编写的计算器,可以下载看看····
计算器.rar
  • 4_2
  • util.c
    9.4KB
  • compute.prj
    97B
  • mouse.c
    2.8KB
  • picture.c
    2.6KB
  • compute.h
    862B
  • compute.c
    8.3KB
内容介绍
#include "compute.h" /********************************************************** * 函数原型:void GraphInit() * * 传入参数:无 * * 返 回 值:无 * * 函数功能:图形方式初始化 * * 图形初始化出错,程序终止退出 * **********************************************************/ void GraphInit() { int GraphDriver=DETECT; /* 自动检测图形模式 */ int GraphMode,ErrorCode; initgraph( &GraphDriver, &GraphMode, "c:\\tc" ); /* 指向tc安装目录 */ ErrorCode = graphresult(); if( ErrorCode != grOk ){ printf("Graphics System Error: %s\n",grapherrormsg(ErrorCode)); exit( 1 ); } } /********************************************************** * 函数原型:void bottondown(int x,int y) * * 传入参数:x-按钮左上角的x坐标 * * y-按钮左上角的y坐标 * * 返 回 值:无 * * 函数功能:绘制按下的按钮 * **********************************************************/ void bottondown(int x,int y) { setcolor(DARKGRAY); line(x,y,x+50,y); line(x+50,y,x+50,y+30); setcolor(WHITE); line(x,y,x,y+30); line(x,y+30,x+50,y+30); } /********************************************************** * 函数原型:void bottonup(int x,int y) * * 传入参数:x-按钮左上角的x坐标 * * y-按钮左上角的y坐标 * * 返 回 值:无 * * 函数功能:绘制弹起的按钮 * **********************************************************/ void bottonup(int x,int y) { setcolor(DARKGRAY); line(x,y,x,y+30); line(x,y+30,x+50,y+30); setcolor(WHITE); line(x,y,x+50,y); line(x+50,y,x+50,y+30); setcolor(BLACK); } /********************************************************** * 函数原型:void show(int x,int y) * * 传入参数:x-按钮左上角的x坐标 * * y-按钮左上角的y坐标 * * 返 回 值:无 * * 函数功能:单击按钮的效果显示 * **********************************************************/ void show(int x,int y) { bottondown(x,y); /* 显示按钮的按下状态 */ delay(5000); /* 延时 */ bottonup(x,y); /* 显示按钮的弹起状态 */ } /********************************************************** * 函数原型:char getnumber(int x,int y) * * 传入参数:x-鼠标位置的x坐标 * * y-鼠标位置的y坐标 * * 返 回 值:鼠标单击按钮的标签字符 * * 函数功能:根据鼠标单击时的位置确定单击的按钮 * **********************************************************/ char getnumber(int x,int y) { char d; /* 鼠标单击时在左上角为(150,105),右下角为(200,135)的矩形框中, 表明单击了'7'数字按钮 */ if(x<200&&x>150&&y>105&&y<135) d='7'; if(x<200&&x>150&&y>150&&y<180) d='4'; if(x<200&&x>150&&y>195&&y<225) d='1'; if(x<200&&x>150&&y>240&&y<270) d='0'; if(x<270&&x>220&&y>105&&y<135) d='8'; if(x<270&&x>220&&y>150&&y<180) d='5'; if(x<270&&x>220&&y>195&&y<225) d='2'; if(x<340&&x>290&&y>105&&y<135) d='9'; if(x<340&&x>290&&y>150&&y<180) d='6'; if(x<340&&x>290&&y>195&&y<225) d='3'; if(x<340&&x>290&&y>240&&y<270) d='.'; if(x<410&&x>360&&y>105&&y<135) d='%'; if(x<410&&x>360&&y>150&&y<180) d='*'; if(x<410&&x>360&&y>195&&y<225) d='-'; if(x<410&&x>360&&y>240&&y<270) d='+'; if(x<480&&x>430&&y>105&&y<135) d='C'; if(x<480&&x>430&&y>150&&y<180) d='S'; if(x<480&&x>430&&y>195&&y<225) d='/'; /* 正/负转换'+/-'按钮用'w'字符表示其标签 */ if(x<270&&x>220&&y>240&&y<270) d='w'; if(x<480&&x>430&&y>240&&y<270) d='='; return(d); } /********************************************************** * 函数原型:void clearscreen() * * 传入参数:无 * * 返 回 值:无 * * 函数功能:信息显示框的清除 * **********************************************************/ void clearscreen() { setfillstyle(SOLID_FILL,YELLOW); bar(150,60,480,90); } /********************************************************** * 函数原型:int kx(char d) * * 传入参数:d-按钮的标签 * * 返 回 值:按钮的左上角的x坐标 * * 函数功能:根据按钮标签字符确定按钮的x坐标 * **********************************************************/ int kx(char d) { int x; switch(d) { case '7':case '4':case '1':case '0': x=150;break; case '8':case '5':case '2':case 'w': x=220;break; case '9':case '6':case '3':case '.': x=290;break; case '%':case '*':case '-':case '+': x=360;break; case 'C':case 'S':case '/':case '=': x=430;break; default: x=0; } return(x); } /********************************************************** * 函数原型:int ky(char d) * * 传入参数:d-按钮的标签 * * 返 回 值:按钮的左上角的y坐标 * * 函数功能:根据按钮标签字符确定按钮的y坐标 * **********************************************************/ int ky(char d) { int y; switch(d) { case '7':case '8':case '9':case '%':case 'C': y=105;break; case '4':case '5':case '*':case '6':case 'S': y=150;break; case '1':case '2':case '3':case '-':case '/': y=195;break; case '0':case 'w':case '.':case '+':case '=': y=240;break; default: y=0; } return(y); } /********************************************************** * 函数原型:void outch(double sum) * * 传入参数:sum-待输出的双精度浮点数 * * 返 回 值:无 * * 函数功能:在信息显示框中输出sum的值 * **********************************************************/ void outch(double sum) { int i=0,m=0,j=0,fig; char FIG[8]; char temp[2]=""; long int xu; if(sum>1e20||sum<-1e20) /* sum绝对值大于1e20,输出E */ outtextxy(OUTX-10,OUTY,"E"); else if(sum>=1e8) /* sum小于等于1e20且大于等于1e8的处理 */ { clearscreen(); while(sum>100&&j<20) { sum/=10; j++; } j++; FIG[0]=((int)sum)%10+'0'; FIG[1]=floor(sum/10)+'0'; if(j<=9) { FIG[2]=j+'0'; temp[0] = FIG[2]; outtextxy(OUTX,OUTY,temp); outtextxy(OUTX-10,OUTY,"E"); temp[0] = FIG[0]; outtextxy(OUTX-30,OUTY,temp); outtextxy(OUTX-45,OUTY,"."); temp[0]=FIG[1]; outtextxy(OUTX-60,OUTY,temp); } else { FIG[2]=j%10+'0'; FIG[3]=floor(j/10)+'0'; temp[0]=FIG[2]; outtextxy(OUTX,OUTY,temp); temp[0]=FIG[3]; outtextxy(OUTX-15,OUTY,temp); outtextxy(OUTX-30,OUTY,"E"); temp[0]=FIG[0]; outtextxy(OUTX-45,OUTY,temp); outtextxy(OUTX-60,OUTY,"."); temp[0]=FIG[1]; outtextxy(360,OUTY,temp); } } else if(sum<=-1e8) /* sum大于等于-1e20且小于等于-1e8的处理 */ { outch(-sum); outtextxy(OUTX-90,OUTY,"-"); } else /* 此时sum的值在-1e8和1e8之间 */ { if(-1e-6<sum&&sum<1e-6) /* sum值是0的处理 */ { clearscreen(); outtextxy(OUTX-15,OUTY,"0"); outtextxy(OUTX,OUTY,"."); } if(sum>1e-6) /* sum值大于0的处理(小于1e8) */ { while(floor(sum)!=sum && sum<1e7 && m<8) { sum*=10; m++; } xu=floor(sum); while(xu!=0) { FIG[i++]=xu%10+'0'; xu=floor(xu/10); } clearscreen(); if(m==0) { for(fig=0;fig<i;fig++) { temp[0]=FIG[fig]; outtextxy(OUTX-15*(fig+1),OUTY,temp); } outtextxy(OUTX,OUTY,"."); } if(m<i) { for(fig=0;fig<m;fig++) { temp[0]=FIG[fig]; out
评论
    相关推荐
    • 谭浩强C语言
      这是谭浩强C语言的新版,有兴趣想学C语言的童鞋们可以下载来看看啊!
    • 谭浩强c语言
      谭浩强c语言,国内最权威的c语言学习宝典,从零基础开始,成为c语言高手。
    • Makefile c语言
      Makefile c语言Makefile c语言Makefile c语言Makefile c语言 四本资料!自己学习的时候整理的!
    • c语言教程
      c语言教程,优秀的c语言教程,简单基础,是学习c语言的好教程
    • C语言 实现
      C语言 项目实现 《计算方法》课件 俄罗斯方块游戏 C语言实训 综合案例-学生成绩管理程序 C语言程序设计学习与实践指导(源代码)
    • c语言
      c语言
    • C语言库函数
      C语言函数库,里面包括C语言的函数库,方便直接调用,还可以了解很多C语言一些函数模板
    • C语言
      C语言
    • 谭浩强C语言
      谭浩强C语言word版,学习C语言的,经典教材。 使用的编译工具有些老旧,建议是使用visual stdio 2008。
    • 水滴石穿C语言
      学习C语言的有用文档 水滴石穿C语言C语言的底层操作 水滴石穿C语言之extern声明辨析 水滴石穿C语言之static辨析 水滴石穿C语言之typedef的问题 水滴石穿C语言之编译器引出的问题 水滴石穿C语言之代码检查工具 ...