C++ 计算器 程序(加强版)
c课程设计计算器报告
c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
用c语言设计一个多功能计算器
用C语言设计一个多功能计算器实现功能:1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘X’退出。
例如:输入:2+5输出:72)实现单运算符表达式计算的功能。
输入的操作数可以包含整数或浮点数。
如果遇到错误的表达式,应输出错误提示信息。
输入表达式如下:例如:输入:2+5输出:7目录摘要 (1)第一章引言 (3)1.1 计算器概述 (3)第二章设计任务及要求 (5)2.1 设计任务 (5)2.2 设计要求 (6)第三章计算器硬件设计 (7)3.1 方案说明 (7)3.2 设计单片机主体电路图 (8)第四章软件设计 (9)4.1 模块介绍 (9)4.2 程序流程图 (10)4.3 程序部分 (11)第五章总结 (16)参考文献 (17)摘要:[目录]一、课程设计题目及任务要求二、设计思路三、部分程序介绍四、程序框图五、汇编程序六、参考资料[原文]一、课程设计题目及任务要求请设计十进制加减法计算器。
要求能(不同时)显示3位输入和4位输出。
二、设计思路1、操作显示设备显示设备采用八片七段共阴极LED显示器,共设置16 个键,其中数字键0~9 共十个,接下来依次是加号键、减号键、等于号、清除键。
操作设备是两行八列共16键的简单键盘。
第一行从左至右分别为0、1、2、3、4、5、6、7,第二行分别为8、9、A(+)、B(-)、C(=)、D(清除键)、E (清除键)、F(清除键),“清除键”表示程序初始化,为下次输入准备。
2、程序实现功能(1)十进制加减法计算:输入范围为(1~999),该程序输入两个定点数,每个3位,输出4位;A为加,B为减,C为等于,输出为四位计算结果。
数据输入采用规范化输入,即必须输入3个数才算完成一个运算数的输入,两个运算数之间输入运算符A或者B,输入完成按C显示计算结果;(2)计算机复位功能:DEF均为清零重启,任何时候按下DEF中一个将重新开始;三、部分程序介绍(1)主程序(START)程序开始运行初始化程序,设置输入输出口PA、PB、PC,扫描键盘,输入两个待求数据和运算符,存入寄存器,等待输入等号同时显示第二个数,运行计算程序,并将计算结果分离,输出到显示器;(2)读键子程序(RD_KB)程序分别扫描两行键盘,若有键按下则通过移位的方式计算键码;若无键按下,则将键码缓存设置为10H,判断后进行相应的跳转。
计算器的python代码
计算器的python代码摘要:1.计算器概述2.Python实现计算器的基本功能3.进阶功能拓展4.代码实例与解释正文:计算器是日常生活中广泛使用的工具,其功能包括加、减、乘、除等基本运算。
随着编程语言的普及,许多人开始用Python编写计算器。
本文将介绍如何用Python实现一个简单的计算器,并对其进行功能拓展。
一、计算器概述计算器作为一种数学工具,其基本功能包括进行加、减、乘、除等运算。
在Python中,我们可以通过编写代码实现这些功能。
二、Python实现计算器的基本功能1.输入与输出我们可以使用Python的input()函数接收用户输入的两个数值,然后使用print()函数输出计算结果。
```pythonum1 = float(input("请输入第一个数字:"))um2 = float(input("请输入第二个数字:"))operation = input("请输入运算符(+、-、*、/):")if operation == "+":result = num1 + num2elif operation == "-":result = num1 - num2elif operation == "*":result = num1 * num2elif operation == "/":result = num1 / num2else:print("无效的运算符")print(f"计算结果为:{result}")```2.运算符重载我们可以为Python的自定义函数添加运算符重载,使得用户可以使用更简洁的方式进行计算。
```pythondef add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x * ydef divide(x, y):if y == 0:return "除数不能为0"return x / yprint(add(3, 4)) # 输出:7print(subtract(10, 5)) # 输出:5print(multiply(2, 3)) # 输出:6print(divide(12, 6)) # 输出:2```三、进阶功能拓展1.支持括号我们可以通过解析输入的运算式,判断是否包含括号,并对其进行优先级处理。
计算器编程c语言
计算器编程 c语言用C语言设计计算器程序源代码#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/函数*/#include <stdio.h> /*I/O#include <stdlib.h> /*库函数*/变量长度参数表*/#include <stdarg.h> /*图形函数*/#include <graphics.h> /*字符串函数*/#include <string.h> /*字符操作函数*/#include <ctype.h> /*#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的坐标值*/x = width /2;设置y的坐标值*/y = height/2; /*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); /*输出字符串"0."*/outtextxy(x+3*width,y+height/2,"0."); /*/*设置x的坐标值*/x =2*width-width/2;设置y的坐标值*/y =2*height+height/2; /*画按钮*/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;设置str2为空串*/strcpy(str2,""); /*当压下Alt+x键结束程序,否则执行下面的循环while((v=specialkey())!=45) /**/{当压下键不是回车时*/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中*/c=str1[n*5+m]; /*判断是否是数字或小数点*/if(isdigit(c)||c=='.') /*{如果标志为-1,表明为负数*/if(flag==-1) /*{将负号连接到字符串中*/strcpy(str2,"-"); /*flag=1;} /*将标志值恢复为1*/将字符保存到字符串变量temp中*/ sprintf(temp,"%c",c); /*将temp中的字符串连接到str2中*/strcat(str2,temp); /*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); /*将str2清空*/strcpy(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=='-'){如果str2为空,说明是负号,而不是减号*/ if(strcmp(str2,"")==0) /*设置负数标志*/flag=-1; /*else{将第二个操作数转换为浮点数*/num1=atof(str2); /*将str2清空*/strcpy(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,""); /*将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);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='^'){将第二个操作数转换为浮点数*/num1=atof(str2); /*将str2清空*/strcpy(str2,""); /*做计算乘方标志值*/act=5; /*设置用淡绿色实体填充*/ 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=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(str2); /*根据运算符号计算*/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); /*覆盖结果区*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*将结果保存到temp中*/sprintf(temp,"%f",result); /*outtextxy(5*width,height,temp); /*显示结果*/}if(c=='c'){num1=0; /*将两个操作数复位0,符号标志为1*/num2=0;flag=1;strcpy(str2,""); /*将str2清空*/设置用淡绿色实体填充*/ setfillstyle(SOLID_FILL,color+3); /*覆盖结果区*/ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*显示字符串*/outtextxy(5*width,height,"0."); /*}如果选择了q回车,结束计算程序*/if(c=='Q')exit(0); /*}putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/返回*/return; /*}/*窗口函数*/void mwindow( char *header ){int height;cleardevice(); /* 清除图形屏幕 */setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*//* 设置视口大小 */ setviewport( 20, 20, MaxX/2, MaxY/2, 1 );height = textheight( "H" ); /* 读取基本文本大小 */settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify( CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/输出标题*/outtextxy( MaxX/4, 2, header ); /*setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小*/ 画边框*/drawboder(); /*}画边框*/void drawboder(void) /*{定义视口类型变量*/struct viewporttype vp; /*setcolor( MaxColors - 1 ); /*设置当前颜色为白色 */setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设置画线方式*/将当前视口信息装入vp所指的结构中*/getviewsettings( &vp );/*画矩形边框*/rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*}/*设计鼠标图形函数*/int arrow(){int size;定义多边形坐标*/int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*设置填充模式*/setfillstyle(SOLID_FILL,2); /*/*画出一光标箭头*/fillpoly(8,raw);测试图象大小*/size=imagesize(4,4,16,16); /*分配内存区域*/rar=malloc(size); /*存放光标箭头图象*/getimage(4,4,16,16,rar); /*putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/return 0;}/*按键函数*/int specialkey(void){int key;等待键盘输入*/while(bioskey(1)==0); /*key=bioskey(0); /*键盘输入*/只取特殊键的扫描值,其余为0*/ key=key&0xff? key&0xff:key>>8; /*return(key); /*返回键值*/}。
c的简易计算器(已通过实测)初学者参考
void LCD_init(void);//初始化函数
void delay_nms(unsigned int n);//延时函数
void LCD_write_command(unsigned char command);//写入指令函数
void LCD_write_dat(unsigned char dat);//写入数据函数
产生原因:液晶根本就没有进行初始化操作,需要检查连线或者程序。运气不好的情况 下就是整块 LCD 是坏的。 状态 2 屏上显示两排灰格
产生原因:程序中对液晶初始化不正常,应是部分初始化指令没有正常接收,建议按照 标准初始化步骤调整程序,或者调整指令之间的延时(加大一些试试)----补充:也有 可能是对比度太大,建议优先调整对比度电阻 状态 3 显示乱码
/*********************************
中
断
函
数
************************************/
void inter0() interrupt 0
{
unsigned char n;
delay_10ms();//延时
if(INT0==0)//没键按下
数量 1 17 1 9 1 1 1 2 1
--
--
2.3 硬件设计电路图 将 4*4 的键盘直接接在 P1 口上,用 P0 口作为 LCD 的显示输出,
P3.2 口的 INT0 作为外部中断位。
LCD1
LM016L
D0 D1 D2 D3 D4 D5 D6 D7
RS RW E
VSS VDD VEE
7 控制电路
微控制电路就是以AT89C51为核心的控制核心,主要注意晶振电路的接法和复
c语言输入半径求圆的面积
c语言输入半径求圆的面积随着计算机科学技术的快速发展,程序设计语言已经成为计算机领域中非常重要的学科之一。
作为一门经典的程序设计语言,C语言广泛应用于各类软件开发和程序设计中,因其简单易学、运行速度快等特点而受到了广大程序员的喜爱。
下面,我们就以“C语言输入半径求圆的面积”为例,分步骤介绍如何用C语言编写一个简单的计算器程序。
1. 创建一个新的C项目:首先,在开发环境中创建一个新的C项目,如Visual Studio或Code Blocks等。
在新项目中,创建一个名为“radius_calculator.c”的文件,作为我们计算器程序的主要代码文件。
2. 定义变量:在代码中首先需要定义变量,以存储我们所需的数据。
在此例中,我们需要定义一个名为“radius”的变量,以便储存我们从键盘上输入的圆的半径值。
int radius;3. 输入半径:接下来,我们需要从键盘输入圆的半径值,以便计算圆的面积。
为此,我们可以使用C语言中的“scanf”函数,将输入值存储到刚刚定义的“radius”变量中。
printf("请您输入圆的半径:");scanf("%d", &radius);4. 计算面积:有了半径值之后,我们可以使用公式计算圆的面积。
下面的代码使用了“π(PI)*半径*半径(radius * radius)” 的公式来计算圆的面积。
float area = 3.1415926 * radius * radius;5. 输出结果:最后,我们将计算得到的面积输出到控制台,以便用户可以查看计算结果。
printf("圆的面积是:%f", area);6. 程序完成:现在,我们的计算器程序就完成了。
在控制台窗口上,用户可以看到一个提示,提示用户输入圆的半径。
然后,用户输入半径,计算器程序将会计算圆的面积,并在控制台窗口上输出圆的面积。
总结:以上是C语言输入半径求圆的面积的步骤,只需要遵循这些步骤,我们就可以使用C语言编写一个简单的计算器程序。
STC89c52单片机 计算器C语言程序
STC89c52单片机计算器C语言程序STC89C52单片机计算器C语言程序下面是STC89C52单片机计算器的C语言程序,适用于P2位选P0段选时钟12MHZ。
程序代码如下:includedefine uchar unsigned chardefine uint unsigned intuchar Led[17] = {0x3f。
0x06.0x5b。
0x4f。
0x66.0x6d。
0x7d。
0x07.0x7f。
0x6f。
0x77.0x7c。
0x39.0x5e。
0x79.0x71.0x00};long float Number[]={0,0,0,0};uchar A[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};long int D[] = {0,0,0,0,0,0,0,0};uchar code C[] = {0x0.0xFE。
0xFD。
0xFB。
0xF7.0xEF。
0xDF。
0xBF。
0x7F};uchar k=16;uchar b;long float Out_put;uchar e=0;uchar g=0;uchar L=0;uchar g1=0;uchar g2=0;uchar g3=0;uchar g4=0;char j=-1;uchar m=0;uchar n=0;uchar x=0;程序中包含了头文件和宏定义,以及数码管段选、数码管显示位控制寄存器、数码管显示内容寄存器、数码管位选、按键控制变量等各种变量。
其中,Led数组存储了数码管的段选值,Number数组存储了数字,A数组存储了数码管的位选值,D数组存储了数码管的显示内容,C数组存储了数码管的位选值,k、b、Out_put、e、g、L、g1、g2、g3、g4、j、m、n、x 等变量用于按键控制和运算。
代码中没有明显的格式错误,可以直接使用。
下面是已经修改过的文章:uchar xo = 0./*控制开始计数小数点的变量*/long int result;void Delay(uint o) {uint i。
VC++制作一个入门的计算器软件
VC++整理入门计算器本文档是运用VC++6.0整理一个入门计算器的过程。
由于时间和知识技能原因,只能简单的做一个入门级的计算器(只实现加减乘除功能),以后的内容再追加。
一、建立工程启动VC++6.0,然后“文件”新建一个工程,选择“MFC AppWizard(exe)”选项,输入工程名,确定。
(如下图)弹出“MFC应用程序向导-步骤1”选择“基本对话框”,语言选“中文”,点击完成。
在弹出的控件界面,把按钮先删除。
二、设计计算器界面根据自己的喜好设计计算器的界面,(下图是我设计的简易的界面)。
用控件里面的布局计算器的界面,修改按钮显示,先右击要修改的按钮,选择“属性”,修改对应的“标题”。
按钮设计好之后,设置对应的类,加减乘除四个运算符分别如下设置,右击选“建立类向导”,在“Message Maps”选项内,选对应的“IDC_BUTTON1”,设置Messages:BN_CLICKED,然后“Add Function”,一次选择其他三个按钮,按确定。
(如下图)编辑框如下类,同样是右击编辑框,右击选“建立类向导”,选择第二个选项,选择IDC_EDIT1,然后选Add Variable...,在弹出的对话框中名字中输入m_num1,类型选数字Double,对应设置剩下的编辑框,然后确定。
下一步是输入代码。
三、代码的输入双击“+”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton1(){UpdateData(1);m_num3=m_num1+m_num2;UpdateData(0);}双击“-”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton2(){UpdateData(1);m_num3=m_num1-m_num2;UpdateData(0);}双击“X”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton3(){UpdateData(1);m_num3=m_num1*m_num2;UpdateData(0);}双击“/”按钮,然后点击确定,在对应的代码语句中输入下面的语句:void CMyDlg::OnButton4(){UpdateData(1);if(m_num2==0)MessageBox("除数不能为0,请重新输入除数!");elsem_num3=m_num1/m_num2;UpdateData(0);}四:测试到此软件设置完成,运行看看。
C语言简易计算器的实现
C语言简易计算器的实现C语言简易计算器是一种用于进行基本数学运算的程序。
实现一个简易计算器的关键是要能够解析用户输入的数学表达式,并将其转化为计算机可以理解的形式,然后进行计算,并输出结果。
下面是一个大约1200字以上的示例实现。
```c#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <ctype.h>#define MAX_SIZE 100//定义操作符的优先级int getPriority(char op)if (op == '+' , op == '-')return 1;else if (op == '*' , op == '/')return 2;elsereturn 0;//进行四则运算int calculate(int a, int b, char op)switch (op)case '+': return a + b;case '-': return a - b;case '*': return a * b;case '/': return a / b;default: return 0;}//将中缀表达式转换为后缀表达式void infixToPostfix(char* infixExp, char* postfixExp) char stack[MAX_SIZE];int top = -1;int j = 0;for (int i = 0; infixExp[i] != '\0'; i++)if (isdigit(infixExp[i])) { // 数字直接输出到后缀表达式while (isdigit(infixExp[i]))postfixExp[j++] = infixExp[i++];}postfixExp[j++] = ' ';i--;}else if (infixExp[i] == '(') { // 左括号压入栈stack[++top] = infixExp[i];}else if (infixExp[i] == ')') { // 右括号弹出栈内所有操作符并输出到后缀表达式,直到遇到左括号while (top != -1 && stack[top] != '(')postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}top--; // 弹出栈顶的左括号}else { // 操作符while (top != -1 && getPriority(stack[top]) >=getPriority(infixExp[i]))postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';stack[++top] = infixExp[i];}}while (top != -1) { // 将栈内剩余操作符弹出并输出到后缀表达式postfixExp[j++] = stack[top--];postfixExp[j++] = ' ';}postfixExp[j] = '\0';//计算后缀表达式的值int evaluatePostfix(char* postfixExp)char stack[MAX_SIZE];int top = -1;for (int i = 0; postfixExp[i] != '\0'; i++)if (isdigit(postfixExp[i])) { // 数字压入栈int num = 0;while (isdigit(postfixExp[i]))num = num * 10 + (postfixExp[i++] - '0');stack[++top] = num;i--;}else if (postfixExp[i] == ' ')continue;}else { // 操作符,弹出栈顶的两个数进行计算,并将结果压入栈int b = stack[top--];int a = stack[top--];int result = calculate(a, b, postfixExp[i]);stack[++top] = result;}}return stack[top];int maichar infixExp[MAX_SIZE];printf("请输入中缀表达式:");fgets(infixExp, sizeof(infixExp), stdin); // 读取用户输入//将中缀表达式转换为后缀表达式char postfixExp[MAX_SIZE];infixToPostfix(infixExp, postfixExp);printf("后缀表达式为:%s\n", postfixExp);//计算后缀表达式的值并输出int result = evaluatePostfix(postfixExp);printf("计算结果为:%d\n", result);return 0;```这个简易计算器的实现基于栈的数据结构。
c语言简单的代码
c语言简单的代码标题:C语言实现简单的计算器C语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言。
它以其强大的功能和高效的执行速度而闻名于世。
在本文中,我们将使用C语言编写一个简单的计算器程序,该程序可以进行基本的四则运算。
在开始编写计算器程序之前,我们首先需要了解一些基础的C语言知识。
C语言中的变量是用于存储和操作数据的容器。
在计算器程序中,我们将使用变量来存储用户输入的数值和运算结果。
在编写计算器程序时,我们需要使用C语言中的运算符来进行数值计算。
C语言中常见的运算符包括加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)。
这些运算符可以用于执行加减乘除等基本的数学运算。
为了实现计算器功能,我们需要使用C语言中的控制结构来控制程序的执行流程。
C语言中常见的控制结构包括条件语句(if-else语句)和循环语句(for循环和while循环)。
通过使用这些控制结构,我们可以根据用户输入的选择执行不同的计算操作,并且可以重复执行计算操作直到用户选择退出。
下面是一个简单的计算器程序的示例代码:```c#include <stdio.h>int main() {char operator;double num1, num2, result;printf("请输入运算符(+、-、*、/):");scanf("%c", &operator);printf("请输入两个数值:");scanf("%lf %lf", &num1, &num2);switch (operator) {case '+':result = num1 + num2;printf("两个数的和为:%.2lf\n", result); break;case '-':result = num1 - num2;printf("两个数的差为:%.2lf\n", result); break;case '*':result = num1 * num2;printf("两个数的积为:%.2lf\n", result);break;case '/':if (num2 != 0) {result = num1 / num2;printf("两个数的商为:%.2lf\n", result);} else {printf("除数不能为0\n");}break;default:printf("无效的运算符\n");break;}return 0;}```在上述代码中,我们首先定义了一个字符变量`operator`,用于存储用户输入的运算符;定义了两个双精度浮点数变量`num1`和`num2`,用于存储用户输入的两个数值;定义了一个双精度浮点数变量`result`,用于存储运算结果。
c++编写简单的计算器程序
c++编写简单的计算器程序⾸先来看下本⼈的开发环境系统:win7电脑:dell运⾏环境:vs2015语⾔:c++简单计算器代码//四则运算#include "stdafx.h"#include<iostream>#include<stdio.h>using namespace std;void add(){printf("输⼊要计算的加数(例如a b)\n");int adda=0, addb=0,addc=0;cin >> adda;cin >> addb;addc = adda+addb;cout <<adda<<"加"<<addb<< "等于" << addc << endl;}void substraction(){printf("输⼊要计算的减数(例如a b)\n");int suba = 0, subb = 0, subc = 0;cin >> suba;cin >> subb;subc = suba-subb;cout <<suba<<"减"<<subb<< "等于" << subc << endl;}void multiplication(){printf("输⼊要计算的乘数(例如a b)\n");int mula = 0, mulb = 0, mulc = 0;cin >> mula;cin >> mulb;mulc = mula*mulb;cout <<mula<<"乘"<<mulb<< "等于" << mulc << endl;}void division(){printf("输⼊要计算的除数(例如a b)\n");int dsa = 0, dsb = 0, dsc = 0,dsd=0;cin >> dsa;cin >> dsb;dsc = dsa/dsb;dsd = dsa%dsb;cout <<dsa<<"除"<<dsb<< "等于" << dsc <<"余"<<dsd<<endl;}void operation()//运算函数{printf("输⼊数据选择做那种运算\n");printf("输⼊0选择退出,1做加法,2做减法,3做乘法,4做除法(保留余数)\n");int operatione = 0;cin >> operatione;cout << endl;try{if (operatione == 1){//加法add();}else if (operatione == 2){//减法substraction();}else if (operatione == 3){//乘法multiplication();}else if (operatione == 4){//出发division();}else if (operatione == 0){exit(0);}else{throw 1;}}catch (int i){cout << "输⼊错误" << endl;}operation();}int main(){printf("欢迎使⽤本计算器");operation();return 0;}代码⽐较简单,希望⼤家能够喜欢。
(完整word版)VC++简单科学计算器设计
简单科学计算器设计VC++课程设计报告简单科学计算器设计一、设计任务1.选题意义此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握Visual C++应用程序。
统计学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统。
该计算器应能实现如下功能:1)、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。
2.设计目标使计算器含有以下功能:(1)、基本运算功能:可以进行加、减、乘、除等基本运算。
(2)、数制转换功能:可以一次完成二进制转十进制、十进制转二进制、八进制转二进制等运算。
(3)、三角函数运算功能:可以一次完成三角函数之间的计算,求正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)等函数的值。
(4)、对数、指数运算功能:可以一次求的对数函数(log、ln)、指数函数(exp)等函数的运算。
(5)、删除功能:可以在输入错误时删除已输入的数值。
(6)、归零功能:可以在计算完成后清空编辑框中的已有数值。
二、程序设计与实现1.程序结构本计算器首先是通过在计算器的界面上按下相应的按钮,来进行基本的加,减,乘,除等基本运算,计算器还能够进行平方运算,求平方根运算,乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)),对数函数(ln、log),指数函数(exp),幂函数(x~)和进制转换(包括二进制转十进制、十进制转二进制和八进制转二进制)等运算。
以下是本计算器的运算流程图:2. 设计步骤:(1) 创建一个基于对话框的应用程序。
(2) 利用资源编辑器编辑对话框资源,及设计计算器界面并修改对话框各按钮的ID 属性和Caption 属性。
C编写简易计算器附源代码超详细
超详细一、因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:二、向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow ,按键0~9为Button控件,并将其name分别修改为btn_0、btn_1、btn_2、btn_3、btn_4、btn_5、btn_6、btn_7、btn_8、btn_9;按键【负数】的name值修改为btn_sign,按键【.】的name 修改为btn_dot,按键【+ - * /】的name值分别修改为btn_add、btn_sub、btn_mul、btn_div,按键【=】的name值修改为btn_equ,按键【倒数】的name值修改为btn_rev,按键【平方】的name值修改为btn_sqr,按键【开方】的name值修改为btn_sqrt。
右边的计算器图片空间是PictureBox,作者博客控件是LinkLabel,可以不添加,以上所有控件均可按照需求添加,只保留自己需要的按钮控件和textbox控件即可。
三、代码部分(含解释),采用switch多分支语句编写using System;using System.Drawing;using System.Collections;using ponentModel;using ;using System.Data;namespace Calc{///<summary>/// QQ:6 温柔一刀C#简易计算器的实现///</summary>public class CalcForm :{private btn_0;private btn_1;private btn_2;private btn_3;private btn_4;private btn_5;private btn_6;private btn_7;private btn_8;private btn_9;private btn_add;private btn_sub;private btn_mul;private btn_div;private btn_sqrt;private btn_sign;private btn_equ;private btn_dot;private btn_rev;private txtShow;private btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;///<summary>///必需的设计器变量。
C语言课程设计(计算器)
目录1 前言 (2)2 需求分析 (2)2.1要求 (2)2.2任务 (2)2.3运行环境 (2)2.4开发工具 (2)3 概要设计 (2)3.1系统流程图 (3)3.2查询函数流程图 (4)4 详细设计 (8)4.1分析和设计 (8)4.2具体代码实现 (9)5 课程设计总结 (25)参考文献 (25)致谢 (26)1 前言编写一个程序来实现算术计算器。
通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1.2.3等数字, +、--、*、等运算符号), 然后将其信息存入文件中。
输入一个算术计算式, 就在屏幕上显示结果。
2 需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交), 程序要有注释。
2.2任务(1)定义一个结构体类型数组, 输入0~9及+、--、*等符号的信息, 将其信息存入文件中;(2)输入简单的加减乘除算术计算式, 并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。
2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。
图3.1系统流程图3.2查询函数流程图4 详细设计4.1分析和设计在程序的开头部分定义了结构替类型, 用来存放按钮信息struct s_button /*按键的结构体*/{int sx,sy,ex,ey;char *head;int press;}button[17]; /*图表按键数*/char far *vid_mem;static int tx=32,ty=3; /*静态变量*/float v1=0.0,v2=0.0;用输入函数input()来输入按键放在s_button数组中。
用c语言编写计算器
这就涉及到C语言中函数返回指针的问题了
int i=20;
char cStr[3];
itoa(i,cStr,10);
char* f1()
{
return "adsfadsfasd";
}
在函数内部返回函数内构建的指针有可能出现数据混乱.
DWORD dwMydrivers;
dwMydrivers = GetLogicalDrives();
TCHAR cDrivers[256];
itoa(dwMydrivers,cDrivers,2); //转换为字符串
strrev(cDrivers); //反转字符串
(8)思考:这个计算两个数的和程序有什么缺陷?没有阻止用户输入非数字
(9)作业:做一个面积计算器,用户输入半径,在另外一个文本框中显示面积。
5、得到系统中有哪些逻辑驱动器
DWORD GetLogicalDrives(VOID);
返回值的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A存在于系统中;位1设为1表示存在B驱动器;以次类推。
编辑Main_OnCommand方法:
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_BTNHELLO:
MessageBox(NULL,TEXT("世界你好"),TEXT("问好"),MB_OK);
{
switch(id)
{
case IDC_OK:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
else if(c=='^') priority = 100;
else if(c=='(') priority = 1000;
else if(c==')') priority = 0;
}
//表达式项的输出,是数据线输出数据,符号项输出符号
CalculType operator=(CalculType ct);
};
//显示栈中元素的函数
void show(stack<CalculType> st);
//使堆中元素倒序返回的函数
stack<CalculType> reverse(stack<CalculType> st);
//判断是否是运算表达式的合法字符
//接收一个运算表达式的输入
expression = getMidExpression();
//如果输入表达式错误退出循环计算
if(expression.length()==0) break;
//得到表达式的值
dRet = getExpressionVal(expression);
string getMidExpression();
//获取一个数学算术表达式的值
double getExpressionVal(string strExp);
//把一个中缀表达式栈转换成后缀表达式栈
stack<CalculType> getLatExpr(stack<CalculType> sct);
//左括号设为3
else if(ot==16) ot = 3;
//又括号设为4
else ot = 4;
if(nt<=9||nt==18) nt = 1;
else if(nt>9&&nt<16) nt = 2;
else if(nt==16) nt = 3;
else nt = 4;
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string.h>
#include <stdio.h>
#include <string>
#include <algorithm>
#include <math.h>
#include <stack>
class CalculType
{
public:
char c;
int priority;
double val;
public:
CalculType(double dn);
CalculType(char cv);
friend ostream& operator<<(ostream& o, CalculType& ct);
}
//数据项的构造方法
//优先级设置成-1
//成员c设置成默认值‘+’
CalculType::CalculType(double dn)
{
priority = -1;
val = dn;
c = '+';
}
//字符项的构造方法
//成员val设置成默认值0.0
//优先级:'+','-':1
//'%':5
return -1;
}
//否则开始了下一项的输入,返回1
return 1;
}
//接收一个运算表达式输入
string getMidExpression()
{
char expression[1025];
string strExp = "";
{
char validChar[19] = {'0','1','2','3','4','5','6','7','8','9','+',
'-','*','/','^','%','(',')','.'};
int ot = 1;
int nt = 1;
//得到字符的数组下标
for(int i=0; i<19; i++)
t = st.top();
tst.push(t);
st.pop();
}
return tst;
}
//判断输入的是否是运算表达式的合法字符
bool valid(char c)
{
char validChar[20] = {'0','1','2','3','4','5','6','7','8','9','+',
//只有字符:'0'~'9','+','-','*','/','%','^','.'
//是合法的表达式中的字符
bool valid(char c);
//判断输入的是否开始表达式的下一项
int change(char oc,char nc);
//获取中缀表达式,即我们常用的数学算术表达式
//输入错误返回空字符串
//数字和括号之间的乘号可以省略,程序会补上
//表达式中可以输入空格,程序会自动剔除
//把宏TOSHOW 设置为0 不显示中后缀表达式,只显示表达式结果
/******************************************************************************
cout << "Expression value:" << endl;
//cout << '[' << expression << "]="
cout << setprecision(10)<< "<<: [" << dRet <<']' << endl;
}while(1);
return 0;
//create time:2013-06-03 13:40:19
//author: lph
//Calculator.cpp:numerate the value of any arithmetic expression
//here are Calculator test Examples:
//表达式右括号如果在最后可以不输入,程序自动填充
ostream& operator<<(ostream& o, CalculType& ct)
{
if(ct.priority==-1) o << ct.val;
else o << ct.c;
return o;
}
//赋值运算重载
CalculType CalculType::operator=(CalculType ct)
infix expression:
<<: 0 - 101.78 - 23.5 * ( 11 - 50.8 * 44 ) + 2 ^ ( 1 / 2 ) + ( 0 - 3 ) ^ 5 + 7 * ( 0 - 31 + 17 * ( 6 + 4 * ( 8 - 9 ) ) )
postfix expression:
//两个数之间的运算
double optration(double num1,char opt,double num2);
//计算一个后缀表达式的值
//支持加减乘除,指数(^)、取余运算(%)
double getExprVal(stack<CalculType> sLatExpr);
int main(int argc, char*argv[])
Expression value:
<<: [38]
[>>===========[<<(Calculator)>>]==============<<]
Enter expression(e/q/(press Enter key):exit):
>>: q
*******************************************************************************/
<<: 0 101.78 - 23.5 11 50.8 44 * - * - 2 1 2 / ^ + 0 3 - 5 ^ + 7 0 31 - 17 6 4 8 9 - * + * + * +