MFC计算器主要代码(C)
简易计算器C语言代码

简易四则运算计算器计算机工具地历史而言,中国古代最早采用地一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头,兽骨充当材料的,大约270枚一束,放在布袋里可随身携带。
直到今天仍在使用的住算盘,是中国古代计算工具领域中的另一项发明明代时的住算盘已经与现代的住算盘几乎相同。
17世纪初,西方国家的计算工具有了较大的发展。
英国数学家纳尔发现了“纳皮尔算筹”;英国牧师奥却德发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘涂,乘方和开方运算,甚至可以计算三角函数,指数函数和对数函数。
这些计算工具不仅带动了计算的发展,也为现代计算器发展尊定了良好的基础,成为现代社会应用广泛的计算工具,如手机,操作系统上附带的多功能计算器。
项目设计目的掌握模块的划分;掌握结构体定义;掌握栈的操作;掌握函数的定义;掌握栈的基本操作;掌握VC的基本绘图库;掌握鼠标的响应操作;目设计内容设计一个含有界面的计算器,输入一个包含括号的表达式,使用栈数据类型实现整数的四则运算操作,开方运算。
项目设计要求根据分析,系统要求实现以下几点基本功能:可通过按钮输入数字、运算符;能通过按钮实现退格、清除功能;实现加、减、乘、除、开方运算功能;实现括号运算;显示运算结果;良好的交互界面。
项目详细设计功能模块图根据系统功能要求,主要含有四大模块,分别是计算器界面设计模块、计算器按键控制模块、四则混合运算模块、计算器记忆处理模块。
计算器界面设计模块:调用VC图形系统函数和字符函数画出计算器的界面,包括24个按钮和一个文本输入框。
计算机按键控制模块:计算器通过键盘按键值的判断,执行相应的操作,如接收数字输入等。
计算器计算处理模块。
计算处理模块主要完成可以包括括号的表达式运算,运算包括加,减,乘,除、开方。
计算处理模块在按键控制模块中被调用执行。
处理模块是通过栈来实现的,分别定义了两个顺序栈,一个用来存放操作符栈,一个用来存放操作数栈。
计算器记忆处理模块。
c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。
2. 能实现加、减、乘、除及乘方的运算。
3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。
4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。
简易计算器代码

button[10] = new QPushButton(buttontext[10],this,buttontext[10]); // “—”
button[10]->setFixedSize(BUTTONWIDTH,BUTTONHEIGHT);
edit->setText(tr("%1").arg(0)); //这个函数可获取文本编辑框中光标的位置,并显示在状态栏中
//setText(tr(“%1行%2列”).arg(rowNum).arg(colNum));
initialize(); //调用初始化函数
}
void CWidget::initialize()
cwidget.cpp
#include "cwidget.h"
#define KEY_CLR "CLR"
#define KEY_ADD "+"
#define KEY_SUB "-"
#define KEY_MUL "*"
#define KEY_DIV "/"
#define KEY_EQ "="
#define KEY_0 "0"
{
delete edit;
delete *button;
delete mainLayout;
delete topLayout;
delete bottomLayout;
}
void CWidget::calculate() //响应按键“=”,调用计算功能
mfc单屏计算器

增加参数int m_nNum1; 保存“运算符+”前的数值int m_nNum2; 保存“运算符+”后的数值CString m_strNowNum; 保存当前的字符串CString m_strTem; 保存“运算符+”前多字符串CString m_strNum2; 保存“运算符+”后的字符串bool m_IsAdd; 是否运算符CEdit m_edit; 编辑框对象#include "Shlwapi.h" 不能少添加相应的lib 工程-设置-连接-Object/library modules添加函数void CCaLculatorrDlg::OnButton10() //num 0{// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='0';m_strTem=m_strNowNum;}else{m_strNum2+='0';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton1(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='1';m_strTem=m_strNowNum;}else{m_strNum2+='1';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton11() //+{// TODO: Add your control notification handler code here m_IsAdd=!m_IsAdd;}void CCaLculatorrDlg::OnButton12() //={// TODO: Add your control notification handler code here m_nNum1=StrToInt((LPCTSTR)m_strTem);m_nNum2=StrToInt((LPCTSTR)m_strNowNum);m_strNowNum.Format("%d",m_nNum1+m_nNum2);UpdateData(false);}void CCaLculatorrDlg::OnButton2(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='2';m_strTem=m_strNowNum;}else{m_strNum2+='2';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton3(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='3';m_strTem=m_strNowNum;}else{m_strNum2+='3';m_strNowNum=m_strNum2;UpdateData(false);}void CCaLculatorrDlg::OnButton4(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='4';m_strTem=m_strNowNum;}else{m_strNum2+='4';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton5(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='5';m_strTem=m_strNowNum;}else{m_strNum2+='5';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton6(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='6';m_strTem=m_strNowNum;}{m_strNum2+='6';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton7(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='7';m_strTem=m_strNowNum;}else{m_strNum2+='7';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton8(){// TODO: Add your control notification handler code here if(!m_IsAdd){m_strNowNum+='8';m_strTem=m_strNowNum;}else{m_strNum2+='8';m_strNowNum=m_strNum2;}UpdateData(false);}void CCaLculatorrDlg::OnButton9(){// TODO: Add your control notification handler code here if(!m_IsAdd)m_strNowNum+='9';m_strTem=m_strNowNum;}else{m_strNum2+='9';m_strNowNum=m_strNum2;}UpdateData(false);}当然你需要进一步优化添加- * / 等∙如果你添加这些只需把m_IsAdd 变为m_Is OPerator∙因为现在需要在点击运算符前显示数字1 点击运算符后显示数字2 点击等号后显示最终结果计算器不就这样吗?如果没记错的话CalculatorDlg。
MFC计算器

《C++面向对象程序设计》实验报告学院:信息科学与工程学院专业:学号:姓名:一.题目:利用MFC框架编写Windows附件中所示的简易计算器二.功能描述:1.能够实现最基本的加,减,乘,除四则基本运算。
2.界面有清空,退格按钮,方便用户计算使用。
3.此计算器具有开方,取倒数,求对数的高级运算。
三.概要设计:1.Windows消息处理机制通过对教材的阅读,对Windows程序的消息处理机制有个大致的了解。
Windows的程序都是通过消息来传送数据,并且存在异常处理等不需要用户参与的系统消息,用户消息就是鼠标的单击,双击等。
2.界面的设计如图,简易的计算器界面主要使用菜单中相关控件,并合理的布置各个按钮的位置,使得界面让用户看起来整洁简单。
3.框架描述Windows 简易计算器在资源视图画好界面添加控件的同时,通过属性修改名称为各个按钮和编辑框添加不同的函数四则运算+,-,*,/ 1/x,lgx等函数退格和清空键4.建立的变量和控件的命名,对应的消息处理函数命名表ID CAPTION Message Handler IDC_BUTTON0 0 OnButton0()IDC_BUTTON1 1 OnButton1()IDC_BUTTON2 2 OnButton2()IDC_BUTTON3 3 OnButton3()IDC_BUTTON4 4 OnButton4()IDC_BUTTON5 5 OnButton5()IDC_BUTTON6 6 OnButton6()IDC_BUTTON7 7 OnButton7()IDC_BUTTON8 8 OnButton8()IDC_BUTTON9 9 OnButton9()IDC_BUTTON10 . OnButton11()IDC_BUTTON11 = OnButtonequal() IDC_BUTTON12 + OnButtonadd()IDC_BUTTON13 - OnButtoncut()IDC_BUTTON14 * OnButtonmultiply() IDC_BUTTON15 / OnButtonremove() IDC_BUTTON16 1/x OnButton1x()IDC_BUTTON17 lg OnButtonlg()IDC_BUTTON18 sqrt OnButtonsqrt()IDC_BUTTON19 Backspace OnButtonbackspace() IDC_BUTTON20 C(清空) OnButtonclear()5.下图是基本对话框中所有的类四.详细设计:1.新建工程,选择MFC AppWizard[exe],并命名工程的名称为mycalculator2.选择基本对话框3.通过控件添加各种按钮和编辑框(对话框右边的“Controls”控件箱提供了可用于对话框的各种组建,在此次计算器中,基本上只用到上面四个控件,对话框只能通过控件来实现它们的功能,把控件中的数据保存在对话框类的数据成员中,应用程序才能通过这些数据成员获取控件中的数据)4.考虑用户们的习惯,把编辑框的显示的数字属性由靠左改成靠右(选中编辑框,右击选择属性-样式,排列文本改为向左)5.用同样的方法改变按钮的标题,其他按钮同理6.为美观改变对话框的标题为“计算器”7.右击编辑框添加类向导,添加变量m_result,且type为CString//可通过其改变类型和名称8.实现每个按钮的功能,双击按钮,为按钮添加函数,可以改变函数的名称① 0~9和小数点的函数大致类似void CMycalculatorDlg::OnButton1(){// TODO: Add your control notification handler code herem_result +=_T("1");UpdateData(FALSE);}函数_T()可以对字符串进行操作,UpdateData(FALSE)可以把数据传到文本框里面,小数点与数字同样这样处理。
计算器编程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#科学计算器代码

this.button2.Enabled = true;
this.buttonA.Enabled = false;
this.buttonB.Enabled = false;
{
this.btn_per.Enabled = false;
this.btn_e.Enabled = false;
this.btn_down.Enabled = false;
this.btn_log.Enabled = false;
this.buttonC.Enabled = false;
this.buttonD.Enabled = false;
this.buttonE.Enabled = false;
this.buttonF.Enabled = false;
科学型:
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
d2 = System.Convert.ToString(d1, 16);
txt_Result.Text = d2.ToString();
}
else if (this.rBtn2.Checked)//十进制转换二进制
d1 = (int)a;
d2 = System.Convert.ToString(d1, 8);
visual 2015 mfc 计算器 代码

以下是一个简单的 Visual Studio 2015 MFC 计算器的示例代码。
它包括两个窗口,一个用于输入和显示数字,另一个用于显示结果。
```cpp// MainFrm.cpp : implementation of the CMainFrame class //#include "pch.h"#include "framework.h"#include "Calculator.h"#include "MainFrm.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_CREATE()ON_WM_DESTROY()ON_COMMAND(ID_APP_ABOUT,&CMainFrame::OnAppAbout)ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew) ON_COMMAND(ID_FILE_EXIT, &CMainFrame::OnFileExit) ON_COMMAND(ID_EDIT_CLEAR,&CMainFrame::OnEditClear)ON_COMMAND(ID_EDIT_COPY,&CMainFrame::OnEditCopy)ON_COMMAND(ID_EDIT_PASTE,&CMainFrame::OnEditPaste)ON_COMMAND(ID_VIEW_SPLIT,&CMainFrame::OnViewSplit)ON_COMMAND(ID_VIEW_FULL,&CMainFrame::OnViewFull)ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR,&CMainFrame::OnUpdateEditClear)ON_UPDATE_COMMAND_UI(ID_EDIT_COPY,&CMainFrame::OnUpdateEditCopy)ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE,&CMainFrame::OnUpdateEditPaste)END_MESSAGE_MAP()static UINT indicators[] ={ID_SEPARATOR, // status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};CMainFrame::CMainFrame() : CFrameWndEx(){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}CMainFrame::~CMainFrame(){}int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)return -1;// Create a view to host the client window. This object will be responsible for drawing the client area.// Set initial host view properties.CView* pView = new CView;if (!pView)return -1;pView->Create(_T("Calculator"), WS_CHILD | WS_VISIBLE | WS_BORDER | 500, CRect(0, 0, 200, 200), this);m_viewList.AddTail(pView);// m_pActiveView = pView;// m_bIsSplitterBar = TRUE;// m_bIsHorzSplit = TRUE;// m_bIsVerSplit = FALSE;// m_bIsDocTemplate = TRUE;// Create a toolbar control and initialize it.CToolBarCtrl mtbBarCtrl;// Create a command bar control and initialize it.CCommandBarCtrl commandBarCtrl; // Create a status bar control and initialize it. // Create a menu control and initialize it. CMenu menuBar;menuBar.CreateMenu();menuBar.AppendMenu(MF_POPUP, IDM_FILE, _T("&File"));menuBar.AppendMenu(MF_POPUP, IDM_EDIT, _T("&Edit")); menuBar.AppendMenu(MF_POPUP,IDM_VIEW, _T("&View")); menuBar.AppendMenu(MF_POPUP, IDM_INSERT, _T("&Insert")); menuBar.AppendMenu(MF_POPUP, IDM_FORMAT, _T("&Format")); menuBar.AppendMenu。
VC6.0制作简易计算器MFC[整理]
![VC6.0制作简易计算器MFC[整理]](https://img.taocdn.com/s3/m/7cf2c93fbc64783e0912a21614791711cc797937.png)
1、单击File(文件)菜单,选中New(新建),创建新工程。
2、选择工程栏中MFC AppWizard[exe]应用程序,并命名工程名称为calculator.(如图)3、选择MFC应用程序为“基于对话框”类型,其他选项默认。
单击完成(如图)4、修改界面。
经过前3步骤,VC6.0生成的工作界面如图所示。
先将对话框中的“TODO:在这里设置对话控制”静态文字控件和“确定”按钮控件删除,再使用工具箱将界面拖动控件修改为如图所示的界面。
该图所示是使用工具箱的控件拖放制作的计算器初始界面。
由于这些控件都有默认的名字,所以我们要对控件进行改名,右击Button1按钮,选中Properties(属性)选项以修改控件的属性,如图所示。
在弹出的对话框中,将Button1按钮的Caption(标题)属性修改为“+”,此时初始界面同时变成相应的“+”如下图所示。
修改后的界面如图所示,控件的Caption属性就是控件显示出来的值。
按照前文所讲述的方式,将界面上的按钮控件和静态文本控件的Caption属性都做相应的修改,修改后的界面如图所示。
5、为Edit(编辑)控件添加类的成员变量。
首先,右击Edit控件,选择ClassWizard(建立类向导)选项,如下图所示。
在弹出的对话框中,选择上方MemberVariables选项卡,选中DIC_EDIT1,然后单击单击右侧的Add Variable按钮,如图所示。
单击Add Variable按钮后会跳出,如图所示的对话框,该对话框是设置成员变量的命名和数据类型,在此可以命名为m_data1.注意:控件的ID只是标记一个控件,程序中不能直接控制ID,只能通过修改变量来改变控件的状态。
00相应的,再将另外两个Edit控件命名,本项目就将这3个Edit控件命名为:●IDC_EDIT1:m_data1,类型为double.●IDC_EDIT2:m_data2,类型为double.●IDC_EDIT3:m_result,类型为double.6、添加按钮控件的消息处理函数。
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);}四:测试到此软件设置完成,运行看看。
MFC计算器介绍

基于对话框实验,写一个计算器,实验结果:工具:VS2010遇到的问题:编译遇到字符串不能转换为char *,在字符串前面加_T解决了。
1.首先新建一个MFC项目,在工具框里面拖出工具,摆好布局,修改caption和ID栏2.在头文件添加CString num1;CString num2;CStringm_result;boolisresult;int witch;在初始化函数里面初始化// TODO: 在此添加额外的初始化代码num1="";num2="";isresult=false;witch=0;3.数字键代码voidCcalculatorDlg::OnBnClickednum1(){// TODO: 在此添加控件通知处理程序代码if(isresult==false){num1+="1";m_result=num1;UpdateData(false);}if(isresult==true){num2+="1";m_result=num2;UpdateData(false);}}运算符键代码:voidCcalculatorDlg::OnBnClickedjia(){// TODO: 在此添加控件通知处理程序代码isresult=true;witch=1;}等于键代码:voidCcalculatorDlg::OnBnClickeddengyu(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);double number1=_ttof(num1);double number2=_ttof(num2);double result=0.0;switch(witch){ case 1: result=number1+number2;break;case 2: result=number1+number2;break;case 3: result=number1+number2;break;case 4: result=number1+number2;break;}m_result="";m_result.Format(_T("%lf"),result);UpdateData(false);}点号代码:voidCcalculatorDlg::OnBnClickeddot(){if(isresult==false){num1+=".";m_result=num1;UpdateData(false);}if(isresult==true){num2+=".";m_result=num2;UpdateData(false);}}3.这些函数是双击相应键添加框架,自己完善细节的。
用c语言编写的计算器源代码

作品:科学计算器作者:欧宗龙编写环境:vc++6.0语言:c#include"stdafx.h"#include<stdio.h>#include<windows.h>#include<windowsx.h>#include"resource.h"#include"MainDlg.h"#include<math.h>#include<string.h>#definePI3.141593BOOLA_Op=FALSE;BOOLWINAPIMain_Proc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam) {switch(uMsg){HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);}returnFALSE;}BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam){returnTRUE;}voidTrimNumber(chara[])//判断并删除小数点后无用的零{for(unsignedi=0;i<strlen(a);i++){if(a[i]=='.'){for(unsignedj=strlen(a)-1;j>=i;j--){if(a[j]=='0'){a[j]='\0';}elseif(a[j]=='.'){a[j]='\0';}elsebreak;}}}}doubleOperate(charOperator,doublen1,doublen2)//判断符号,进行相应的运算{if(Operator=='0'){}if(Operator=='+'){n2+=n1;}if(Operator=='-'){n2=n1-n2;}if(Operator=='*'){n2*=n1;}if(Operator=='/'){n2=n1/n2;}if(Operator=='^'){n2=pow(n1,n2);}return n2;}////////////////////////////////////////////////voidIntBinary(chara[],intn){if(n>1)IntBinary(a,n/2);sprintf(a,"%s%i",a,n%2);}voiddecimal(chara[],doublem){if(m>0.000001){m=m*2;sprintf(a,"%s%d",a,(long)m);decimal(a,m-(long)m);}}voidBinary(chara[],doubleNum){charDecP[256]="";doublex,y;double*iptr=&y;x=modf(Num,iptr);decimal(DecP,x);IntBinary(a,(int)y);strcat(a,".");strcat(a,DecP);}////////////////////////////////////voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify) {staticDELTIMES=0;staticcharstr[256];staticcharOperator='0';staticdoubleRNum[3];switch(id){caseIDC_BUTTONN1://数字1{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"1");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN2://数字2{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"2");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN3://数字3{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"3");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN4://数字4{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"4");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN5://数字5{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"5");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN6://数字6{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"6");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN7://数字7{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"7");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN8://数字8{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"8");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN9://数字9{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"9");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;caseIDC_BUTTONN0://数字0{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));strcat(str,"0");SetDlgItemText(hwnd,IDC_EDIT,str);RNum[1]=atof(str);A_Op=FALSE;}break;case{if(A_Op){SetDlgItemText(hwnd,IDC_EDIT,NULL);}GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));if(DELTIMES==0){strcat(str,".");}DELTIMES++;SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=FALSE;}break;caseIDC_BUTTONADD://加法运算{RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);Operator='+';DELTIMES=0;A_Op=TRUE;}break;caseIDC_BUTTONSUB://减法运算{RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);DELTIMES=0;A_Op=TRUE;Operator='-';}break;caseIDC_BUTTONMUL://乘法运算{RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);Operator='*';DELTIMES=0;A_Op=TRUE;}break;caseIDC_BUTTONDIV://除法运算{RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);Operator='/';DELTIMES=0;A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);Operator='^';DELTIMES=0;}break;caseIDC_BUTTONPI://圆周率PI,弧度{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));if(atof(str)!=0){RNum[2]=atof(str)*PI;sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);}else{sprintf(str,"%f",PI);SetDlgItemText(hwnd,IDC_EDIT,str);}A_Op=TRUE;}break;caseIDC_BUTTONSQRT://开根号{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=sqrt(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;caseIDC_BUTTONSIN://三角函数sin函数{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=sin(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=cos(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=tan(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;caseIDC_BUTTONSQ://平方{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=atof(str)*atof(str);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=atof(str)*atof(str)*atof(str);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=exp(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=pow(10,atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;caseIDC_BUTTONLN://lnx{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=log(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;caseIDC_BUTTONLOG10://log10{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=log10(atof(str));sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;caseIDC_BUTTONBINARY://十进制转换为二进制{chara[256]="";GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[2]=atof(str);Binary(a,RNum[2]);strcpy(str,a);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);A_Op=TRUE;}break;case{DELTIMES=0;Operator='0';RNum[0]=RNum[1]=RNum[2]=0;memset(str,0,sizeof(str));SetDlgItemText(hwnd,IDC_EDIT,NULL);A_Op=FALSE;}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));inti=strlen(str);str[i-1]='\0';SetDlgItemText(hwnd,IDC_EDIT,str);}break;case{GetDlgItemText(hwnd,IDC_EDIT,str,sizeof(str));RNum[1]=atof(str);RNum[0]=RNum[1];RNum[1]=RNum[2];RNum[2]=Operate(Operator,RNum[1],RNum[0]);sprintf(str,"%f",RNum[2]);TrimNumber(str);SetDlgItemText(hwnd,IDC_EDIT,str);Operator='0';DELTIMES=0;}break;default:break;}}voidMain_OnClose(HWNDhwnd){EndDialog(hwnd,0);}本人拙作,如有不足之处请谅解。
mfcc 的纯c代码

mfcc 的纯c代码(原创版)目录1.MFCC 简介2.MFCC 的纯 C 代码实现3.总结正文一、MFCC 简介MFCC(Mel 频率倒谱系数)是一种音频特征提取算法,被广泛应用于语音识别领域。
它能够将音频信号转换成一组能够表征音频信号特性的参数,从而实现对音频信号的快速、有效的分析。
MFCC 算法源于 Mel 频率尺度,其目的是将音频信号的频率成分映射到 Mel 频率尺度上,以便更好地匹配人耳的听觉特性。
二、MFCC 的纯 C 代码实现在实际应用中,MFCC 算法通常需要高效的计算性能。
为此,有人实现了 MFCC 算法的纯 C 代码,以便在嵌入式设备或者对性能要求较高的场景中使用。
以下是一个简单的 MFCC 纯 C 代码实现:```c#include <stdio.h>#include <stdlib.h>#include <math.h>#include <complex.h>// 计算 MFCC 的纯 C 代码实现void compute_mfcc(const float *input, float *output, intnum_samples, float sample_rate, float window_size, floatwindow_step, float mel_freq_min, float mel_freq_max) { // 预处理:预加重、分帧、Hamming 窗//...// 计算谱for (int i = 0; i < num_samples; i++) {// 计算短时傅里叶变换//...// 计算幅度谱//...// 计算 MFCCfloat mel_freq;float mel_val;for (mel_freq = mel_freq_min; mel_freq <=mel_freq_max; mel_freq += mel_freq_step) {mel_val = 0.0;for (int j = 0; j < window_size; j++) {mel_val += output[i * window_size + j] * exp(-2.0 * I * M_PI * mel_freq * (j - window_size / 2) / sample_rate);}output[i * num_mfcc + mel_freq - mel_freq_min] = sqrtf(mel_val * mel_val);}}}```三、总结MFCC 算法在音频处理领域具有广泛应用,其纯 C 代码实现为开发者提供了一种高效、可移植的解决方案。
MFC基于对话框设计的简易计算器源代码

return CDialog::PreTranslateMessage(pMsg);
}
void CCALDlg::OnButton9()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_edit3=m_edalse);
}
void CCALDlg::OnButton7()
{
// TODO: Add your control notification handler code here
if(m_edit1==0)
{
MessageBox("不能对0求倒数");
return;
}
m_edit3=1/m_edit1;
UpdateData(false);
}
void CCALDlg::OnButton6()
{
// TODO: Add your control notification handler code here
{
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
return TRUE;
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)
}
void CCALDlg::OnButton2()
{
// TODO: Add your control notification handler code here
C++简单计算器代码

#include〈iostream>using namespace std;int prime1(int m);int prime2(int m);int prime3(int m);int prime4(int m);int prime5(int m);void main(){bool flag;int x,y,s,a,b,c,d,e,f,g;char n,ch;flag=true;while(flag){cout〈〈" 请输入表达式,操作数与操作符之间用空格分隔”<〈endl;cout〈<”加减乘除的运算符分别用“+ —* /”表示"<〈endl;cin〉〉x〉>n>>y;{if(n=='+’)f=x+y;if(n==’-')f=x—y;if(n==’*')f=x*y;if(n=='/’)f=x/y;}cout<〈”计算结果是:”<<endl;if(f〈0){s=f*(—1);if(s>=0&&s〈10){cout〈<" ”;prime1(s);cout〈〈endl;cout<<” ”;prime1(s);cout〈〈endl;cout<〈" ——";prime1(s);cout<〈endl;cout〈〈” ”;prime1(s);cout<<endl;cout〈<" ";prime1(s);cout〈<endl;}if(s〉=10&&s〈100){a=s/10;b=s%10;cout〈<" ”;prime1(a);prime1(b);cout〈〈endl;cout<〈" ”;prime2(a);prime2(b);cout<<endl;cout〈〈” ——”;prime3(a);prime3(b);cout〈<endl;cout〈〈” ”;prime4(a);prime4(b);cout〈〈endl;cout〈<" ";prime5(a);prime5(b);cout<〈endl;}if(s〉=100&&s〈1000){a=s/100;b=(s/10)%10;c=s%10;cout<<” ”;prime1(a);prime1(b);prime1(c);cout〈〈endl;cout〈<" ”;prime2(a);prime2(b);prime2(c);cout<〈endl;cout<〈" -- ";prime3(a);prime3(b);prime3(c);cout〈〈endl;cout<<" ”;prime4(a);prime4(b);prime4(c);cout〈〈endl;cout〈〈" ";prime5(a);prime5(b);prime5(c);cout〈<endl;}if(s>=1000&&s〈10000){a=s/1000;b=(s/100)%10;c=(s/10)%10;d=s%10;cout〈<” ";prime1(a);prime1(b);prime1(c);prime1(d);cout〈<endl;cout〈〈" ";prime2(a);prime2(b);prime2(c);prime2(d);cout<<endl;cout<〈" ”;prime3(a);prime3(b);prime3(c);prime3(d);cout〈〈endl;cout<〈" ";prime4(a);prime4(b);prime4(c);prime4(d);cout〈<endl;cout〈〈" ";prime5(a);prime5(b);prime5(c);prime5(d);cout<<endl;}}if(f>=0){if(f〉=0&&f〈10){prime1(f);cout<〈endl;prime2(f);cout〈<endl;prime3(f);cout<<endl;prime4(f);cout<〈endl;prime5(f);cout〈<endl;}if(f〉=10&&f<100){a=f/10;b=f%10;prime1(a);prime1(b);cout<<endl;prime2(a);prime2(b);cout<<endl;prime3(a);prime3(b);cout<〈endl;prime4(a);prime4(b);cout<〈endl;prime5(a);prime5(b);cout<〈endl;}if(f>=100&&f<1000){a=f/100;b=(f/10)%10;c=f%10;prime1(a);prime1(b);prime1(c);cout<<endl;prime2(a);prime2(b);prime2(c);cout〈<endl;prime3(a);prime3(b);prime3(c);cout<〈endl;prime4(a);prime4(b);prime4(c);cout〈〈endl;prime5(a);prime5(b);prime5(c);cout〈〈endl;}if(f〉=1000&&f<10000){a=f/1000;b=(f/100)%10;c=(f/10)%10;d=f%10;prime1(a);prime1(b);prime1(c);prime1(d);cout〈〈endl;prime2(a);prime2(b);prime2(c);prime2(d);cout〈<endl;prime3(a);prime3(b);prime3(c);prime3(d);cout<<endl;prime4(a);prime4(b);prime4(c);prime4(d);cout〈<endl;prime5(a);prime5(b);prime5(c);prime5(d);cout<<endl;}}cout<〈”继续计算按“y",退出计算请按“n"”〈<endl;cin〉>ch;{if(ch==’y’)flag=true;elseflag=false;}}}int prime1(int m){if(m==0)cout<〈” -—”;if(m==1)cout<〈” ”;if(m==2)cout〈<” -—";if(m==3)cout〈<” -—";if(m==4)cout〈<" ”;if(m==5)cout〈<” -—";if(m==6)cout〈〈" -—”;if(m==7)cout〈〈" -—”;if(m==8)cout〈〈" -- ”;if(m==9)cout〈〈” —- ";return 0;}int prime2(int m){if(m==0)cout〈〈”||”;if(m==1)cout〈<” | ”;if(m==2)cout<〈" | ";if(m==3)cout〈<” |";if(m==4)cout<〈”| |";if(m==5)cout<<”| ";if(m==6)cout〈〈”| ”;if(m==7)cout〈<” | ”;if(m==8)cout〈〈"| |”;if(m==9)return 0;}int prime3(int m){if(m==0)cout<<" ";if(m==1)cout<〈” ";if(m==2)cout<〈” —- ”;if(m==3)cout〈<” —- ”;if(m==4)cout〈〈” ——”;if(m==5)cout〈〈” ——";if(m==6)cout<<" ——";if(m==7)cout<〈” | ”;if(m==8)cout<<" —- ”;if(m==9)cout<<" -—";return 0;}int prime4(int m){if(m==0)cout〈〈”| | ";if(m==1)cout<<” |”;if(m==2)cout〈〈”|”;if(m==3)cout〈<" |”;if(m==4)cout〈<" |";if(m==5)cout〈<” |”;if(m==6)cout<<”| | ”;if(m==7)if(m==8)cout<〈"||";if(m==9)cout<〈" |”;return 0;}int prime5(int m){if(m==0)cout〈〈" -—”;if(m==1)cout〈〈" ";if(m==2)cout〈<” -—”;if(m==3)cout〈〈" ——";if(m==4)cout<〈" ”;if(m==5)cout〈<” -- ”;if(m==6)cout〈〈” —- ”;if(m==7)cout〈<” ”;if(m==8)cout<〈" —- ";if(m==9)cout〈<” —- ";return 0;}。
mfc的cbinary的用法

mfc的cbinary的用法
CBinary是MFC(Microsoft Foundation Classes)中的一个类,用于处理二进制数据。
它提供了一些功能来读取、写入和操作二进制数据。
CBinary类的一些常用的成员函数和方法包括:
1.构造函数和析构函数:使用CBinary的构造函数进行初始化,并使用析构函数进行清理。
2. SetData和GetData:SetData方法用于设置二进制数据,GetData方法用于获取二进制数据。
3. GetSize:获取二进制数据的大小。
4. Load和Save:Load方法从文件或流中加载二进制数据,Save 方法将二进制数据保存到文件或流。
5. Append和Insert:Append方法用于在二进制数据末尾追加新的数据,Insert方法用于在指定位置插入数据。
6. Remove和Clear:Remove方法用于删除指定位置处的数据,Clear方法用于清空所有数据。
7. Find和FindLast:Find方法用于在二进制数据中查找指定的
字节序列,FindLast方法查找最后一个匹配的字节序列。
拓展:
除了上面提到的基本功能,CBinary还可以用于处理二进制文件的读写、数据加密和解密等应用。
可以使用CBinary在内存中创建一个
二进制数据块,然后通过读取/写入文件或发送/接收网络数据等方式,对二进制数据进行读写操作。
此外,CBinary还有一些其他与二进制数据处理相关的功能,如截取子数据块、合并多个二进制数据块等。
总之,CBinary是MFC中用于处理二进制数据的一个类,提供了许多用于读取、写入和操作二进制数据的方法和功能。
C#编写简易计算器(附源代码)超详细

超详细因为计算器设计的控件太多,不便使用控制台应用程序完成,所以这里使用Windows窗体应用程序,并命名为Calc,如下图所示:向窗体中拖入需要的控件,如下图所示:(完成效果图)结果显示区(作者博客左边的文本框)是TextBox控件,并修改其name为txtShow,按键0~9 为Button 控件,并将其name分别修改为btn_O、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;usingusing System.Data;namespace Calc{/// <summary>///温柔一刀C#简易计算器的实现/// </summary>public class CalcFormForm{private Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btnprivate Button btn_5;private Button btn_6;private Button btn_7;private Button btn_8;private Button btn_9;private Button btn_add;private Button btn_sub;private Button btn_mul;private Button btn_div;private Button btn_sqrt;private Button btn_sign;private Button btn_equ;private Button btn_dot;private Button btn_rev;private TextBox txtShow;private Button btn_sqr;private PictureBox pictureBox1;private LinkLabel linkLabel1;/// <summary>/// 必需的设计器变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// Calculator_17483Dlg.cpp : implementation file//#include"stdafx.h"#include"Calculator_17483.h"#include"Calculator_17483Dlg.h"#include"afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogEx{public:CAboutDlg();// Dialog Dataenum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support// Implementationprotected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CCalculator_17483Dlg dialogCCalculator_17483Dlg::CCalculator_17483Dlg(CWnd* pParent/*=NULL*/): CDialogEx(CCalculator_17483Dlg::IDD, pParent){num1=0;num2=0;operation=0;point=0;nump_1=0;nump_2=0;m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CCalculator_17483Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CCalculator_17483Dlg, CDialogEx) ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1,&CCalculator_17483Dlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2,&CCalculator_17483Dlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3,&CCalculator_17483Dlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON4,&CCalculator_17483Dlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5,&CCalculator_17483Dlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6,&CCalculator_17483Dlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7,&CCalculator_17483Dlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8,&CCalculator_17483Dlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9,&CCalculator_17483Dlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10,&CCalculator_17483Dlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11,&CCalculator_17483Dlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON12,&CCalculator_17483Dlg::OnBnClickedButton12) ON_BN_CLICKED(IDC_BUTTON13,&CCalculator_17483Dlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14,&CCalculator_17483Dlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15,&CCalculator_17483Dlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16,&CCalculator_17483Dlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON17,&CCalculator_17483Dlg::OnBnClickedButton17) END_MESSAGE_MAP()// CCalculator_17483Dlg message handlersBOOL CCalculator_17483Dlg::OnInitDialog(){CDialogEx::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CCalculator_17483Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CCalculator_17483Dlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}}// The system calls this function to obtain the cursor to display while the user drags// the minimized window.HCURSOR CCalculator_17483Dlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}void CCalculator_17483Dlg::OnBnClickedButton13()//0{if(operation==0){num1=num1*10+0;string_num1.Format(_T("%d"),num1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+0;string_num2.Format(_T("%d"),num2);SetDlgItemTextW(IDC_EDIT2,string_num2);}// TODO: Add your control notification handler code here}//0void CCalculator_17483Dlg::OnBnClickedButton9()//1{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+1;//string_num1.Format(_T("%d"),num1);string_num1+="1";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+1;//string_num2.Format(_T("%d"),num2);string_num2+="1";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="1";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="1";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//1void CCalculator_17483Dlg::OnBnClickedButton10()//2{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+2;//string_num1.Format(_T("%d"),num1);string_num1+="2";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+2;//string_num2.Format(_T("%d"),num2);string_num2+="2";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="2";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="2";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//2void CCalculator_17483Dlg::OnBnClickedButton11()//3{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+3;//string_num1.Format(_T("%d"),num1);string_num1+="3";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+3;//string_num2.Format(_T("%d"),num2);string_num2+="3";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="3";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="3";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//3void CCalculator_17483Dlg::OnBnClickedButton5()//4{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+4;//string_num1.Format(_T("%d"),num1);string_num1+="4";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+4;//string_num2.Format(_T("%d"),num2);string_num2+="4";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="4";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="4";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//4void CCalculator_17483Dlg::OnBnClickedButton6()//5{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+5;//string_num1.Format(_T("%d"),num1);string_num1+="5";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+5;//string_num2.Format(_T("%d"),num2);string_num2+="5";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="5";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="5";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//5void CCalculator_17483Dlg::OnBnClickedButton7()//6{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+6;//string_num1.Format(_T("%d"),num1);string_num1+="6";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+6;//string_num2.Format(_T("%d"),num2);string_num2+="6";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="6";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="6";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//6void CCalculator_17483Dlg::OnBnClickedButton1()//7{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+7;//string_num1.Format(_T("%d"),num1);string_num1+="7";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="7";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="7";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="7";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//7void CCalculator_17483Dlg::OnBnClickedButton2()//8{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+8;//string_num1.Format(_T("%d"),num1);string_num1+="8";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+8;//string_num2.Format(_T("%d"),num2);string_num2+="8";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="8";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="8";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//8void CCalculator_17483Dlg::OnBnClickedButton3()//9{if(point==0){ //无T小?数ºy点Ì?if(operation==0){ //num1num1=num1*10+9;//string_num1.Format(_T("%d"),num1);string_num1+="9";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{num2=num2*10+9;//string_num2.Format(_T("%d"),num2);string_num2+="9";SetDlgItemTextW(IDC_EDIT2,string_num2);}}else{if(operation==0){float i;nump_1=num1;// for(i=0.7;nump_1>(int)nump_1;nump_1*10,i/10){}// nump_1=nump_1+i;string_num1+="9";// string_num1.Format(_T("%f"),nump_1);SetDlgItemTextW(IDC_EDIT1,string_num1);}else{// num2=num2*10+7;//string_num2.Format(_T("%d"),num2);string_num2+="9";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//9void CCalculator_17483Dlg::OnBnClickedButton4()//+{if(point==0){if(operation==0){SetDlgItemTextW(IDC_EDIT4,_T("+"));operation=1;}else{switch(operation){case 1:num1=num1+num2;break;case 2:num1=num1-num2;break;case 3:num1=num1*num2;break;case 4:num1=num1/num2;break;}num2=0;operation=1;string_num1.Format(_T("%d"),num1);SetDlgItemTextW(IDC_EDIT1,string_num1);string_num2.Format(_T("%d"),num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("+"));}}else{operation=1;point=0;// char*p1=(LPSTR)(LPCTSTR)string_num1;// char*p2=(LPSTR)(LPCTSTR)string_num2;SetDlgItemTextW(IDC_EDIT1,string_num1);SetDlgItemTextW(IDC_EDIT2,string_num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("+"));//int len=string_num1.GetLength();//intnbyte=WideCharToMultiByte(CP_ACP,0,string_num1,len,NULL,0,NUL L,NULL);//char *p=new char[nbyte+1];//memset(p,0,len+1);//WideCharToMultiByte(CP_OEMCP,0,string_num1,len,p,nbyte,N ULL,NULL);//p[nbyte]=0;//nump_1=atof(p);}// TODO: Add your control notification handler code here }//+void CCalculator_17483Dlg::OnBnClickedButton8()//-if(point==0){if(operation==0){SetDlgItemTextW(IDC_EDIT4,_T("-"));operation=2;}else{switch(operation){case 1:num1=num1+num2;break;case 2:num1=num1-num2;break;case 3:num1=num1*num2;break;case 4:num1=num1/num2;break;}num2=0;operation=2;string_num1.Format(_T("%d"),num1);SetDlgItemTextW(IDC_EDIT1,string_num1);string_num2.Format(_T("%d"),num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("-"));}}else{operation=2;point=0;// char*p1=(LPSTR)(LPCTSTR)string_num1;// char*p2=(LPSTR)(LPCTSTR)string_num2;SetDlgItemTextW(IDC_EDIT1,string_num1);SetDlgItemTextW(IDC_EDIT2,string_num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("-"));}// TODO: Add your control notification handler code here }//-void CCalculator_17483Dlg::OnBnClickedButton12()//* {if(point==0){if(operation==0){SetDlgItemTextW(IDC_EDIT4,_T("*"));operation=3;}else{switch(operation){case 1:num1=num1+num2;break;case 2:num1=num1-num2;break;case 3:num1=num1*num2;break;case 4:num1=num1/num2;break;}num2=0;operation=3;string_num1.Format(_T("%d"),num1);SetDlgItemTextW(IDC_EDIT1,string_num1);string_num2.Format(_T("%d"),num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("*"));}}else{operation=3;switch(operation){case 1:resultp=nump_1+nump_2;break;case 2:resultp=nump_1-nump_2;break;case 3:resultp=nump_1*nump_2;break;case 4:resultp=nump_1/nump_2;break;}point=0;// char*p1=(LPSTR)(LPCTSTR)string_num1;//char*p2=(LPSTR)(LPCTSTR)string_num2;SetDlgItemTextW(IDC_EDIT1,string_num1);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("*"));}// TODO: Add your control notification handler code here }//*void CCalculator_17483Dlg::OnBnClickedButton16()///{if(point==0){if(operation==0){SetDlgItemTextW(IDC_EDIT4,_T("/"));operation=4;}else{switch(operation){case 1:num1=num1+num2;break;case 2:num1=num1-num2;break;case 3:num1=num1*num2;break;case 4:num1=num1/num2;break;}num2=0;operation=4;string_num1.Format(_T("%d"),num1);SetDlgItemTextW(IDC_EDIT1,string_num1);string_num2.Format(_T("%d"),num2);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("/"));}}else{operation=4;point=0;// char*p1=(LPSTR)(LPCTSTR)string_num1;//char*p2=(LPSTR)(LPCTSTR)string_num2;SetDlgItemTextW(IDC_EDIT1,string_num1);SetDlgItemTextW(IDC_EDIT2,_T(""));SetDlgItemTextW(IDC_EDIT4,_T("/"));}// TODO: Add your control notification handler code here }///void CCalculator_17483Dlg::OnBnClickedButton14()//.{point_2=1;if(point==0){point=1;if(operation==0){string_num1+=".";SetDlgItemTextW(IDC_EDIT1,string_num1);}else{string_num2+=".";SetDlgItemTextW(IDC_EDIT2,string_num2);}}// TODO: Add your control notification handler code here }//.void CCalculator_17483Dlg::OnBnClickedButton15()//={if(point_2==0){switch(operation){case 1:result=num1+num2;break;case 2:result=num1-num2;break;case 3:result=num1*num2;break;case 4:result=num1/num2;break;}string_result.Format(_T("%d"),result);SetDlgItemTextW(IDC_EDIT3,string_result);}else{//char*p1=(LPSTR)(LPCTSTR)string_num1;//char*p2=(LPSTR)(LPCTSTR)string_num2;//char str1=(string_num1.GetBuffer());wchar_t*den=NULL;nump_1=wcstod(string_num1.GetBuffer(),&den);nump_2=wcstod(string_num2.GetBuffer(),&den);switch(operation){case 1:resultp=nump_1+nump_2;break;case 2:resultp=nump_1-nump_2;break;case 3:resultp=nump_1*nump_2;break;case 4:resultp=nump_1/nump_2;break;}string_result.Format(_T("%f"),resultp);SetDlgItemTextW(IDC_EDIT3,string_result);}num1=0;num2=0;result=0;operation=0;point=0;// TODO: Add your control notification handler code here }//=void CCalculator_17483Dlg::OnBnClickedButton17()//reset{num1=0;num2=0;result=0;operation=0;point=0;string_num1="";SetDlgItemTextW(IDC_EDIT1,_T(""));string_num2="";SetDlgItemTextW(IDC_EDIT2,_T(""));string_result="";SetDlgItemTextW(IDC_EDIT3,_T(""));SetDlgItemTextW(IDC_EDIT4,_T(""));// TODO: Add your control notification handler code here }//reset.。