C语言课程设计-计算器设计

C语言课程设计-计算器设计|c语言程序代码编程小程序设计|c语言课程设计报告课程案例#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;  /*做计算加法标志值*/

c语言课设作业 计算器,C语言课程设计-计算器设计相关推荐

  1. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  2. c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc

    C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...

  3. c语言 杨平 答案,C语言课设作业模版.doc

    分析设计与说明 分别建立两个数据文件 文件1(c.txt)用于存放学生成绩: 文件2(xuefen.txt)用于存放课程及其学分. 程序设计思想 (1)学生成绩管理系统 1读入原始数据并显示(将其读入 ...

  4. C语言课设作业《通讯录》全程记录 ps:动态版本

    写在前面: 通讯录算是前面对学过知识的一个综合运用,涉及到的知识点有 :枚举类型,结构体.结构体指针.动态内存分配(malloc,calloc,realloc,free).typedef关键字.多文件 ...

  5. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc

    c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...

  6. 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc

    C语言拼图游戏实验报告 课程设计实验报告 班级:光电104-2 姓名:刘云龙 学号:201058501220 一.实验题目:使用C语言编写一个小游戏(拼图游戏) 二.实验目的:C语言是每一个通信学生的 ...

  7. c语言课设报告水果,C语言--水果

    #include #include #include using namespace std; struct node { char name[81]; char addr[81]; int num; ...

  8. c语言打印五角星图案设计报告,C语言课设绘制态五角星.doc

    C语言课设绘制态五角星 目 录 一.设计题目-----------------------2 二.题目内容的描述--------------------应用程序功能的详细说明------------- ...

  9. c语言学生成绩查询课设报告,C语言课设报告(学生考试成绩查询程序)【荐】.doc...

    C语言课设报告(学生考试成绩查询程序)[荐].doc 学生考试成绩查询程序 学号:******** 姓名:***** 完成日期:****年月 通过键盘输入学生的考试信息,包括:学号.姓名.课程名称.学 ...

  10. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

最新文章

  1. 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
  2. SAP Spartacus org unit table不同区域focus然后回车的行为差异
  3. vue --- vue中的几个钩子属性
  4. PostgreSQL Oracle 兼容性之 - INDEX SKIP SCAN (递归查询变态优化) 非驱动列索引扫描优化...
  5. jquery常用表单操作
  6. 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
  7. 四边形内接于圆定理_2020中考几何秘籍:初中最全几何定理和解题思路
  8. 如何导出python所有的安装包
  9. arduino 有源 蜂鸣器_Arduino 入门到精通 蜂鸣器发声
  10. mac下如何设置excel下拉表格
  11. Adobe Photoshop 2021哪会出,PS2021功能界面抢先看
  12. 2019腾讯广告算法大赛
  13. python求解函数偏导数sympy
  14. 图片尺寸放大不改变清晰度
  15. SpringBoot 轻松搞定数据验证 (三)
  16. 蓝桥杯java备赛Day3——跳马
  17. 《全基因组测序WGS数据分析——1.DNA测序技术》学习笔记
  18. c语言改错题字符串a放在b后面,C语言程序改错题汇总.doc
  19. Linux——Ubuntu忘记用户密码的解决及登录root
  20. [渝粤教育] 中国地质大学 政府与事业单位会计 复习题 (2)

热门文章

  1. python运维开发实战项目-1
  2. 利用TCP协议进行ping
  3. 前端多人开发统一代码格式化工具
  4. 计算机组成原理(白中英) 第三章 课后题答案
  5. carmaker/matlab联合仿真(二) 新建测试场景
  6. 按键精灵注册服务器,按键精灵网页注册脚本教程
  7. rostcm6情感分析案例分析_微博分析-内容分析系统 ROST CM 6 使用手记
  8. modelsim安装教程
  9. pythoncharm设置翻译器_pyCharm 设置调试输出窗口中文显示方式(字符码转换)
  10. 计算机网络安全重要性