vc中计算器的自加怎么实现 举例 1+3=4;再按一次=号输出应为7,而不应该是5.。。求高手指教。。我是新手

如题所述

第1个回答  2013-04-01
首先定义一个全局变量用来接收被加数,这样只要不加就会保持被加数不变。然后做一个=的操作符重载,一个是传参的,一个是不传参的,如果调用+就调用传参的=,直接按=就调用不传参的,但是里面已经用全局变量进行加了
第2个回答  2013-04-13
##包括“stdafx.h中”
包括“计算器”H“

#包括”的计算器Dlg.h的“

#包括”时间,H“/ /不能屏蔽srand()函数

#包括”stdlib.h中“

#楼得分

#定义新的DEBUG_NEW

#ENDIF

计算器DLG :: C计算器DLG(的CWnd * pParent / * = NULL * /)

:CDialog的(C计算器DLG :: IDD,pParent)

N(0)

setxiaoshu(假)

,潇水(0)

innum(0)

,氮气(0)

操作(0)

setnew(假)

BEGIN_MESSAGE_MAP(C计算器DLG的CDialog)

....... / /系统消息和控制功能

主要实现代码:(Dlg.cpp文件):/ /注:以下控制名称加粗字体强调的关键

无效计算器DLG :: OnPaint()方法/ /重写的OnPaint(),界面颜色变化

{

和int C_R c_g C_B,C,R / G / / / 3个变量乙

/ /函数srand((0))/ /控制随机函数rand()时间(间隔1秒更新后的值)的价值,后来实现了每个按键的这句话去掉了,

C_R =兰特(变色) %256 / / rand()的256%,代表0和255之间的整数变量值,下同

c_g =的rand()%256;

C_B =兰特()%256;

C =兰特()4%; / / C = 0-3,这是划分成四个案件,分别以不同的颜色绘制。实现更多的色彩。

(IsIconic())

{

类CPaintDC直流()/ /设备上下文画,

SendMessage函数(WM_ICONERASEBKGND(WPARAM),dc.GetSafeHdc() 0);

/ /中心在客户端图标矩形

cxIcon = GetSystemMetrics的(SM_CXICON),的; cyIcon = GetSystemMetrics的(SM_CYICON)在

CRect的正确;

GetClientRect (正确);

诠释x =(rect.Width() - cxIcon + 1)/ 2;

诠释y =(rect.Height() - cyIcon + 1)/ 2;
> / /绘制图标

dc.DrawIcon(X,Y,m_hIcon);

}

其他

{

如果(C == 0)/ /蓝色梯度,其他两种颜色随机

{

类CPaintDC直流();

CRect的RC;,

GetClientRect(&RC);

nHeight参数= rc.Height ();

(INT I = 0; nHeight参数> = 0; nHeight参数 - ,+)

{

CPEN笔;

pen.CreatePen(PS_SOLID,1, RGB(C_R c_g i)条);

CPEN * pOldPen = dc.SelectObject(笔);

DC。 MOVETO(rc.left);

dc.LineTo(rc.right,I);

dc.SelectObject(pOldPen),的;

pen.DeleteObject();

}

}

否则,如果(C == 1)/ /绿色渐变,其他两种颜色随机

{

类CPaintDC直流();

了CRect RC;

GetClientRect(&RC);在

nHeight参数= rc.Height();

(INT I = 0; nHeight参数> = 0; nHeight参数 - ,+ +) /> { CPEN笔;

pen.CreatePen(PS_SOLID,1 RGB(C_R,I,C_B));

CPEN * pOldPen = dc.SelectObject(笔); /> dc.MoveTo(rc.left);

dc.LineTo(rc.right,I);

dc.SelectObject(pOldPen),的;:

pen.DeleteObject(); BR />} }

否则,如果(C == 2)/ /红色渐变,其他两种颜色随机

{

类CPaintDC直流();

CRect的RC GetClientRect(&RC);

nHeight参数= rc.Height();

(INT I = 0; nHeight参数> = 0; nHeight参数 - ,+) BR /> {br CPEN笔;

pen.CreatePen(PS_SOLID,1 RGB(I,c_g,C_R)的);

CPEN * pOldPen = dc.SelectObject(及笔); BR /> dc.MoveTo(RC左);

dc.LineTo(rc.right,I);

dc.SelectObject(pOldPen),的;

pen.DeleteObject();

}

}

其他/ /没有梯度的,所有随机

{

类CPaintDC直流();

CRect的RC

GetClientRect (RC);

nHeight参数= rc.Height();

(INT I = 0; nHeight参数> = 0; nHeight参数 - 我+ +)

{

,CPEN笔;

pen.CreatePen(PS_SOLID,1 RGB(C_R,c_g,C_R));

CPEN * pOldPen = dc.SelectObject(笔);

dc.MoveTo(RC左);

DC。了lineTo(rc.right,I);在

dc.SelectObject(pOldPen),的;

pen.DeleteObject();

}

}

}

}加工

无效计算器DLG :: OnBnClickedButton31()/ /控制PI相应的功能键,圆周率N = 3.14159265358979; / / PI值?3.14159265358979分配到n

UpdateData (假);

无效()/ /重新实施的OnPaint()函数为每个按钮,界面会自动改变颜色对应的控制功能也可以调用这个函数,相应的控制功能/ /没有直接显示在被调用函数的功能是

}

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /以下各节方式(数字输入)/ / / / / / / / / / / / / / / / / /

无效计算器DLG :: OnBnClickedButton0 ()/ /控制相应的函数调用INUM()预期数量的整数/十进制/正/负。以下1 - 9

{按钮时,处理

计算器DLG如果::(OnBnClickedButton23),否则无效();(setnew)/ / setnew的是真实的,明确所有的控制变量,结果在过去的计算方法后

innum = 0,/ / 0富来可变INUM的,执行相应的+ + + - / /不能按C键清除,直接按一个运算

计算器DLG: “:的inum(innum,,,); / /完成数据录入过程。 / /运算符。 setnew =是在每个单元操作和等号。 setnew

UpdateData(假)/ /在屏幕上显示当前的n值,下同/ /是假的,在每个双运算

} / /继续输入数据setnew =假运算符包含OnBnClickedButton23()无效(),号,但OnBnClickedButton23()并不总是执行/ /如果else形式,为了避免代码重复。

无效计算器DLG :: OnBnClickedButton1()/ /一个相应的功能键处理

{

如果(setnew)C计算器DLG :: OnBnClickedButton23();否则无效(); /> innum = 1;

计算器DLG :: INUM(innum);

UpdateData(假);

}

无效C的计算器DLG :: OnBnClickedButton2()/ /控制相应的功能键2处理

{

如果(setnew)C计算器DLG :: OnBnClickedButton23(),否则无效();

innum = 2;

计算器DLG: :INUM(innum); UpdateData(假);

}

无效计算器DLG :: OnBnClickedButton3()/ /控制相应的功能键3处理

{

如果计算器DLG(setnew)C :: OnBnClickedButton23(),否则无效();

innum = 3; C计算器DLG ::的inum(innum),

UpdateData(假);

}

无效的C计算器DLG :: OnBnClickedButton4()/ /控制相应的功能键4处理

{

如果(setnew)C计算器DLG :: OnBnClickedButton23();否则无效();

innum = 4;

计算器DLG :: INUM(innum);的UpdateData(假);

}

无效的计算器DLG :: OnBnClickedButton5()/ /控制相应的功能键处理

{

如果(setnew)C计算器DLG :: OnBnClickedButton23();否则无效();

innum = 5; 计算器DLG :: INUM(innum);

UpdateData(假);

}

无效的计算器DLG :: OnBnClickedButton6()/ /控制相应的功能键6 {加工

如果(setnew)C计算器DLG :: OnBnClickedButton23(),否则无效();

innum = 6;

计算器DLG ::

INUM(innum); UpdateData(假);

}

无效计算器DLG :: OnBnClickedButton7()/ /控制相应的功能键7处理

{

如果(setnew) 计算器DLG ::(OnBnClickedButton23),否则无效();

innum = 7;

计算器DLG ::的inum innum;

UpdateData(假);

} BR />无效的C计算器DLG :: OnBnClickedButton8()/ / 8控制相应的功能键8个处理

{

如果(setnew)C计算器DLG :: OnBnClickedButton23(),否则无效()

innum = 8; C计算器DLG :: INUM(innum);

UpdateData(假),

}

无效的计算器DLG :: OnBnClickedButton9 ()/ /相应的功能键控制9 9治疗

{

如果(setnew)C计算器DLG :: OnBnClickedButton23(),否则无效();

innum = 9; /> C计算器DLG ::的inum(innum);

UpdateData(假);

}

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /结束/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /下面部分处理相似的(双通道运算)/ / / / / / / / / / / / / / / / / / / / / / /:

无效的C计算器DLG :: OnBnClickedButton16()/ /控制+相应的功能。 - * / ^ Y +符号处理

{

计算器DLG :: OnBnClickedIsButton()/ /自动完成去年未完成的运营商,当最后计算完成双一元不按平等签署时,/ / 1 + 1 =直接按+并不可以实现连续的基础上,从而省去为每= / /更多的使用习惯一致的麻烦。

氮气= N,/ /因为它是一个双操作,按下“+”输入值?另一个数据输入新的数据存储在

计算器DLG :: setempty()/ /参数的空白,便于以后重新输入新的n值不影响

setnew = FALSE; / / setnew的=假(做出相应的数字输入部分)是没有重新进入数据录入一部分执行相应的操作

以下操作,然后按数字键='+'/ /操作由OnBnClickedIsButton字符()的加法运算

} 无效计算器DLG :: OnBnClickedButton15()/ /控制 - 相应的功能 - 符号处理

{

计算器DLG :: OnBnClickedIsButton();

氮气=;

计算器DLG :: setempty ();

setnew = FALSE;

操作=' - ';

}

无效的C计算器DLG :: OnBnClickedButton14的()/ /控制相应的功能。 *符号处理

计算器DLG :: OnBnClickedIsButton();

氮气=;计算器:: setempty(DLG)

setnew = FALSE;

操作='*';

}

无效C计算器DLG :: OnBnClickedButton13()/ /控制/相应的函数/符号处理

{ BR />计算器C至宋体,:: OnBnClickedIsButton();

氮气= N;的,

计算器DLG :: setempty();

setnew = FALSE;

操作='/';

}

无效的C计算器DLG :: OnBnClickedButton27()/ /控制x ^ y对应的函数x ^ y符号处理

{

计算器的DLG :: OnBnClickedIsButton();

氮气= N;

C是DLG :: setempty();

OPERATE ='Y';

setnew = FALSE;

}

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /结束/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /下面的章节(单元操作)/ / / / / / / / / / / / / / / / / /

无效计算器DLG :: OnBnClickedButton19处理()/ /控制1 / x的函数对应到下列符号处理类似的1 / x的符号处理

{

OPERATE ='X'; / /下面的实现1 / X运
> C计算器DLG ::操作(操作); / /单元操作,按符号操作 UpdateData(假);

操作= '0'; / /计算运营商的数据,进入另一个数据时按双运营商将第一的实施OnBnClickedIsButton()的字符操作/ /为0,什么

setnew = TRUE; / /数字输入部分作出判断,setnew =真按数字键时,:执行OnBnClickedButton23(),空变量启动一个新的计算的

无效的计算器DLG :: OnBnClickedButton17()/ /控制SQRT相应的功能。平方根符号处理

{

操作='Q';

计算器DLG ::操作(操作);:

UpdateData(假);

操作= '0' ;

setnew = TRUE;

} 无效计算器DLG :: OnBnClickedButton24()/ /罪的控制功能相应的罪符号处理

操作='S';

计算器DLG ::操作(操作);

UpdateData(假);

操作= '0';

setnew =真; BR />}

无效的C计算器DLG :: OnBnClickedButton25的()/ /函数对应的控制COS COS符号处理

{

操作='C';
>计算器DLG ::操作(操作);

UpdateData(假);

操作= '0';

setnew = TRUE;

}

无效计算器DLG的:: OnBnClickedButton26()/ /控制晒得相应的功能。谭符号处理

{

操作。 ='T';

计算器DLG ::操作(操作);

UpdateData(假);

操作= '0';

setnew = TRUE;

}

无效计算器DLG :: OnBnClickedButton29()/ /控制LN相应的功能处理LN符号

{

操作='N';

计算器DLG ::操作(操作);

UpdateData(假);

操作= '0';

setnew =真;

}

无效计算器DLG ::对应的功能(OnBnClickedButton30)/ /控制LG LG符号处理

操作='G'

计算器DLG ::操作(操作);

UpdateData(假); BR />运行= '0';

setnew = TRUE;

}

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /结束/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /下面是主处理程序/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

无效的计算器DLG :: OnBnClickedIsButton()/ / =相应的功能。 =符号处理

{

计算器DLG ::操作(操作); / /前完成输入数据的计算

操作清空= '0'; / /设置当前输入符号,以避免连续操作+,错误操作

setnew = TRUE; / /开始执行新的操作

UpdateData(假);

}

无效计算器DLG :: OnBnClickedButton21()/ /控制Backspace键对应的功能。退格键删除字符符号处理

{

(N == 0){潇水= 0;} / / N = 0时,小数点的空白。

其他(潇水> 0)/ / n是十进制处理程序时

{

N =(长(N *战俘(5.0(潇水-1))))*战俘(10.0 - (潇水1))/ /四舍五入的数字(小数点后的数 - 1)在数量扩张乘以

潇水= 1;潇水/ /每次执行删除向上移动一个小数点。 / /因素,间接删除小数点最后一个

(潇水== 0)setxiaoshu = FALSE; / /如果小数点0,执行setxiaoshu = false以小数点输入

=假setnew; / /不重新输入数据,这所有setnew =虚假

}

其他/ / n是一个整数

{

=长(N/10); / / N除以10,四舍五入

潇水= 0; / /小数点0

setnew =假; / /可以继续输入数据

}

UpdateData(假);

无效()/ /所有无效(),再执行:OnPaint()方法生成新的色彩

}

无效的C计算器DLG的:: setempty(无效)/ /设置空气变量

{

潇水= 0; / /变量中位数小数部分0

setxiaoshu = FALSE; / /默认输入整数

N = 0,/ /复位n为0,继续进入第二个操作数数据

} 无效计算器DLG :: OnBnClickedButton22()/ /相应的功能控制CE CE标志处理:清除当前输入的CE符号处理

{

计算器DLG :: setempty()/ /看上面的函数

UpdateData(假);
>无效();}

无效计算器DLG :: OnBnClickedButton23()/ /控制C相应的功能。 C符号处理:所有的空白,C和CE的区别是C清除所有变量

{/ / CE的金额仅清除当前输入数据/ / C符号处理

在C计算器DLG :: setempty();

氮气= 0;

操作= '0'; UpdateData(假);

无效();

}的无效的C计算器DLG ::(OnBnClickedButton11)/ /控制+ / - 相应的功能改变符号+ / - 加工

{

N =-N / /按一次改变NN BR /> UpdateData(假);

无效();

} 无效计算器DLG :: INUM(int i)的/ /输入字符预期的数据,i为0-9变量

{

如果(==晶圆厂(N))/ / n是正面或负面的判断(n为正数),因为负进入,如按2 - 2小时应显示“-22”,但结果却显示“-18”{/ /的情况下,单独讨论如果(setxiaoshu)/ /判断是否小数(非按小数点)(n是一个正数)

N = 10 * N + I;

ELSE / /按小数点情况(n为正数)

{

潇水=潇水+1 / /十进制数位输入,每输入一次潇水+1,潇水初始值0

N = N + POW(10.0-潇水)* / /生产所需的N

}

}

别的/ / N负面的的

{

如果(setxiaoshu)/ /非按小数点(n为负数)

{

-10 * N + I / /首次出现负正整数处理,以避免负输入错误

N =-N; / /变为负数

}

其他/ /按下小数点(n为负数)

{,

潇水=潇水+1;

N = N + POW(10.0,潇水)*;

N =-N;

}

}

setnew = FALSE;

}

计算器DLG的:: OnBnClickedButton12()/ /控制相应功能的判决无效的十进制点。加工

setxiaoshu = TRUE; / /按下启动小数部分

无效();

} 无效的C计算器DLG ::操作(字符OPE )/ /执行所选的操作

{

开关(OPE) {

情况下,'+':{N = N_2 + N;}休息;

情况下' - ':{= N_2-N;}休息;

的情况下'*':{N = N_2 * N;}休息;

情况'/':{N = N_2 / N;} ;

情况下,'X':{N = 1 / N;}打破; 的情况下'Q':{(N> 0)=开方(N);其他N = 0;}突破

情况下,'S':{N = SIN(双(N * 3.1415926535897932384626433832795 / 180));}

'C':{N = COS(双(N * 3.1415926535897932384626433832795/180)休息);}

情况下,'T':{N =棕褐色(双(N * 3.1415926535897932384626433832795/180));}打破;

情况下,'N':{(N> 0)=的log(n),否则N = 0;};

'克':{(N> 0)的log(n)/日志(10.0),否则N = 0;}; BR />的情况下,'Y':{N =战俘(N_2,N);}休息;

默认值:/ /操作= '0',不执行任何代码

}的
>无效()/ /这里的功能,可以使包含一个函数,该函数不会重复添加的功能,每个按键变色效果

}

试试吧,应该是好呀!本回答被网友采纳

...举例 1+3=4;再按一次=号输出应为7,而不应该是5.。。求高手指教...
首先定义一个全局变量用来接收被加数,这样只要不加就会保持被加数不变。然后做一个=的操作符重载,一个是传参的,一个是不传参的,如果调用+就调用传参的=,直接按=就调用不传参的,但是里面已经用全局变量进行加了

c#计算器c#计算器 怎么才能连加呀 就是1+2 =3 然后就是按等于号后变成5...
是不是每次都加“+”后面得数?1+3=4 然后=7,=10,=13 是的话方法有好几个。定义两个全局变量,一个用于做第一次等于之前记录第二个加数,第二个用于记录是否做过记录,记录过就不在记录,每次加第一个变量就可以了,这样就可以实现连加功能了 ...

...比如1+2=3然后我一直按等于计算机就会显示=5.=7.=9...)
系统自带的计算器就可以这样算。

跪求c#高手。。。c#设计的计算器 怎样实现先乘除后加减啊
还有一点就是要勤于思考,学而不思则罔。个人认为,直接就从C入手吧,没必要先学什么QBasic,只要把C学好,其他的编程语言就一通百通。编译工具就用Visual C++6.0吧。还有,谭浩强的《C程序设计》虽然是入门的最佳教材,但是要达到更深层次的水平是远远不够的,当你觉得你已经对谭的书学的差不多的...

计算器 等号 自动加 计算器一按=号自动累计加法,想消除怎么办? 例如1...
那就按你想要的计算方式,你现在想乘了,那就按下乘

用C语言做一个计算器,能实现加减乘除混合运算
用C语言编写一个简单的可以进行加减乘除运算混合运算的计算器的方法:1、打开visual C++ 6.0-文件-新建-文件-C++ Source File;2、输入预处理命令和主函数:include<stdio.h> \/*函数头:输入输出头文件*\/ void main()\/*空类型:主函数*\/ 3、定义变量:int a,b,d; \/*定义变量的数据类型为...

有一种计算器按1+1等于2,再按一下等于键就变3了,而另一种计算器按1+1...
第一种属于连算(连续计算),第二种属于单算(单次计算)。连算可以把数字累加起来,单算是只能算一次

函数计算器怎么用设置
问题一:casio计算器如何使用函数计算 打开mode,选择TABLE 会出现f(X)=的界面,键入函数式例f(x)=X+1 摁等于,出现start?,输入x的最小值,摁= 出现end?输入x的最大值,摁= 再出现###(忘了),输入x的步值,摁= 出现结果 步值(很多人不懂): 如1,3,5,7,9 则这些数的步值为2 问题二:...

...就是1+1=2,按一次等于3, 按一次等于4, 按一次等
一般的计算器应该没有这种功能,不过你要的东西用可编程计算器或者直接用C4droid写一个简单的循环就有了

电脑上的计算器怎么算4次方!!!
4、接着计算器的界面就会变成科学型的计算器界面,大家可以找到其中一个x的y次方图标,这个就是计算n次方的符号。5、如果要计算6的3次方,那么先点击6,再点击x的y次方符号,再点击3,然后点击等于号即可。6、计算的结果会在显示区域显示,大家口算一下也知道结果是正确的,既然知道了方法,大家就可以...

相似回答