简单的用c语言写一个计算器程式,加减乘除能用就好 #include"stdio.h" void main() { float a,b,c; char e; printf("input a,e,b
");/*输入两个数和符号,例如3+8*/ scanf("%f%c%f",&a,&e,&b); switch(e) { case "+":c=a+b;break; case "-":c=a-b;break; case "*":c=a*b;break; case "/": if(b==0.0) printf("error
"); else c=a/b;break; } printf("%f%c%f=%f",a,e,b,c); } 如何用vc++编写一个简单的(只有加减乘除)计算器程式? 先设定介面如下 加法按钮程式码 void CMy03Dlg::OnBnClickedButton1() { TODO:在此新增控制元件通知处理程式程式码 UpdateData(TRUE); m_Nub3=m_Nub1+m_Nub2; UpdateData(FALSE); } 减法按钮程式码 void CMy03Dlg::OnBnClickedButton2() { TODO:在此新增控制元件通知处理程式程式码 UpdateData(TRUE); m_Nub3=m_Nub1-m_Nub2; UpdateData(FALSE); } 乘法按钮程式码 void CMy03Dlg::OnBnClickedButton3() { TODO:在此新增控制元件通知处理程式程式码 UpdateData(TRUE); m_Nub3=m_Nub1*m_Nub2; UpdateData(FALSE); } 除法按钮程式码 void CMy03Dlg::OnBnClickedButton4() { TODO:在此新增控制元件通知处理程式程式码 UpdateData(TRUE); if(m_Nub2!=0) m_Nub3=m_Nub1 / m_Nub2; else AfxMessageBox("被除数不能为0"); UpdateData(FALSE); } 清除按钮程式码 void CMy03Dlg::OnBnClickedButton5() { TODO:在此新增控制元件通知处理程式程式码 UpdateData(TRUE); m_Nub3=0; m_Nub1=0; m_Nub2=0; UpdateData(FALSE); } 结束按钮程式码 void CMy03Dlg::OnBnClickedButton6() { TODO:在此新增控制元件通知处理程式程式码 CDialog::OnOK(); } 如果只允许在输入框中输入资料应该怎样处理? 制作托盘程式 目的:在工作列中建立一个图示,使该程式永远驻留在记忆体中。例如邮件检查程式可以作为驻留程式,一旦有邮件来了,就可以接收邮件。 Shell_NotifyIcon函式传送讯息来增加、删除、修改工作列的图示 BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip) { BOOL res; NOTIFYICONDATA tnd; tnd.cbSize = sizeof(NOTIFYICONDATA); tnd.hWnd = hWnd; tnd.uID = IDI_ICON1; tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; tnd.uCallbackMessage = WM_MY_TRAY_NOTIFICATION; tnd.hIcon = hIcon; lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); res = Shell_NotifyIcon(dwMessage, &tnd); dwMessage为NIM_ADD从工作列中新增图示、NIM_DELETE从工作列中删除图示、NIM_MODIFY改变工作列中图示 if (hIcon) DestroyIcon(hIcon); return res; } 定义一个回拨讯息:WM_MY_TRAY_NOTIFICATION 在DLG的CPP档案中, #define WM_MY_TRAY_NOTIFICATION WM_USER+100 为对话方块新增讯息对映ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification) 在DLG的标头档案中应该有 public: long m_Nub1; float m_Nub3; CBitmapButton Button; afx_msg void OnBnClickedButton1(); long m_Nub2; afx_msg void OnBnClickedButton2(); afx_msg void OnBnClickedButton4(); afx_msg void OnBnClickedButton5(); afx_msg void OnBnClickedButton3(); afx_msg void OnBnClickedButton6(); afx_msg void OnBnClickedButton7(); afx_msg LRESULT OnTrayNotification(WPARAM wparam, LPARAM lparam); 在DLG的CPP档案中应该有 BEGIN_MESSAGE_MAP(CMailCheckDlg, CDialog) …… ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification) …… END_MESSAGE_MAP() 并定义一个回拨讯息函式 LRESULT CMailCheckDlg::OnTrayNotification(WPARAM wparam, LPARAM lparam) { switch (lparam ) { case WM_RBUTTONUP: case WM_LBUTTONDBLCLK:修改不同的按钮处理事件,以观察图示退出效果。 ShowWindow(SW_SHOW); TrayMessage(m_hWnd, NIM_DELETE, NULL, "");从工作列中删除图示 } return 0; } 在对话方块视窗上新增“驻留”按钮,双击按钮新增程式码 void CMailCheckDlg::OnBnClickedButton1() { TODO:在此新增控制元件通知处理程式程式码 下面程式向工作列新增图示 TrayMessage(m_hWnd, NIM_ADD, NULL, "计算器程式"); TrayMessage(m_hWnd, NIM_MODIFY, m_hIcon, "计算器程式"); ShowWindow(SW_HIDE); 用MFC编写一个简单的加减乘除计算器 我有程式,加31782771群 c语言计算器程式设计包含加减乘除简单的函式运算 实用计算器之程式设计 [摘 要]多用计算器的构思及设计程式码 [关键词]多用计算器;设计 数值计算可以说是日常最频繁的工作了,WIN98提供了“计算器”软体供使用者使用,该软体可以处理一般的一步四则运算,例如:3+2、5/3等等,但在日常中使用者经常遇到多步四则运算问题,例如:3+4*5-4/2,45*34/2+18*7等等,那么该个计算器就无法胜任了,作者制作了一个实用的计算器,该计算器新增不少功能:(程式介面如图) 1.可以实现连续的四则运算 2.可以实现输入式子的显示 3.可以方便计算个人所得税 4.滑鼠、键盘均可输入资料 5.操作介面友好 6.击键可发声 构建该个计算器所需研究及解决的核心问题有如下几个:1、连乘求值?2、字元显示 3、键盘输入?4、击键发声?5、个人所得税法规,为了使大家对程式有更一步认识,现将程式码提供给读者参考: *定义阵列及窗体变数 Dim number2(0 To 50) As Double Dim number(0 To 50) As Double Dim z As Integer Dim k As Integer, r As Integer Dim j As Integer Dim str As String *呼叫名为“playsound”的API函式 Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long Private Const SND_FILENAME = &H20000? Private Const SND_ASYNC = &H1? Private Const SND_SYNC = &H0 *判断通用过程 Sub pianduan(p As String) r = 0 Dim i As Integer, l As Integer, h As Integer h = 0 i = 1 If InStr(Trim$(p), "*") <> 0 Then k = k + 1 End If If InStr(Trim$(p), "/") <> 0 Then r = r + 1 End If End Sub *连乘通用过程(略) *各按钮事件过程 Private sub Command1_Click(Index As Integer) PlaySound App.Path & "start.wav", 0, SND_SYNC Text1.Text = Text1.Text + Command1(Index).Caption Text2.Text = Text2.Text + Command1(Index).Caption Text1.SetFocus End Sub rivate sub Command10_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC str = Text3.Text End Sub Private sub Command11_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Text3.Text = str End Sub rivate sub Command2_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Dim totle As Double Dim n As Integer Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" Text2.Text = Text2 + "+" z = z + 1 Text1.SetFocus End Sub rivate sub Command3_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Dim totle As Double Dim n As Integer Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" Text2.Text = Text2 + "-" Text1.Text = Text1.Text & "-" z = z + 1 Text1.SetFocus End Sub Private sub Command4_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Text2.Text = Text2.Text + "*" Text1.Text = Text1.Text + "*" Text1.SetFocus End Sub rivate sub Command5_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Text2.Text = Text2 + "/" Text1.Text = Text1 + "/" Text1.SetFocus End Sub Private sub Command6_Click() PlaySound App.Path & "sound.wav", 0, SND_SYNC Dim totle As Double Dim n As Integer Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" z = z + 1 Dim dengyu As Double Dim v As Integer For v = 0 To 50 dengyu = dengyu + number2(v) Next v If dengyu < 0 Then Text3.ForeColor = &HFF& Else Text3.ForeColor = &HFF0000 End If Text3.Text = dengyu Text1.SetFocus If Len(Text3.Text) >= 14 Then calcresult.Show End If End Sub rivate sub Command7_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC z = 0: k = 0: r = 0: j = 0 Dim i As Integer For i = 0 To 50 number(i) = 0 number2(i) = 0 Next i Text1.Text = "" Text2.Text = "" Text3.Text = "" Text1.SetFocus End Sub rivate sub Command8_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC If Val(Text3.Text) = 0 Then MsgBox "除数不能为0!" Exit Sub End If Text3.Text = 1 / Val(Text3.Text) End Sub Private sub Command9_Click() PlaySound App.Path & "start.wav", 0, SND_SYNC Text3.ForeColor = &HFF0000 Text3.Text = Val(Text3.Text) * Val(Text3.Text) End Sub rivate sub muninter_Click() Dim i i = Shell("C:Program FilesInterExploreriexplore.exe", vbMaximizedFocus) End Sub rivate sub munmp3_Click() Dim i i = Shell("C:Program FilesWindows Media Playermplayer2", vbNormalNoFocus) End Sub Private sub mun *** _Click() Dialog.Show End Sub rivate sub muntax_Click() tax.Show End Sub rivate sub munver_Click() ver.Show End Sub rivate sub notepad_Click() Dim i i = Shell("c:windows
otepad", vbNormalFocus) End Sub Private sub Text1_KeyPress(KeyAscii As Integer) PlaySound App.Path & "start.wav", 0, SND_SYNC Dim num As Integer num = Val(KeyAscii) If num > 47 And num < 58 Then Text1.Text = Text1.Text + CStr(num - 48) Text2.Text = Text2.Text + CStr(num - 48) End If If num = 46 Then Text1.Text = Text1.Text + "." Text2.Text = Text2.Text + "." End If If KeyAscii = 43 Then Dim totle As Double Dim n As Integer Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" Text2.Text = Text2 + "+" z = z + 1 End If If KeyAscii = 45 Then Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" Text2.Text = Text2 + "-" Text1.Text = Text1.Text & "-" z = z + 1 End If If KeyAscii = 42 Then Text2.Text = Text2.Text + "*" Text1.Text = Text1.Text + "*" End If If KeyAscii = 47 Then Text2.Text = Text2.Text + "/" Text1.Text = Text1.Text + "/" End If If KeyAscii = vbKeyReturn Then PlaySound App.Path & "sound.wav", 0, SND_SYNC Call pianduan(Text1.Text) If k >= 1 Or r >= 1 Then Call liancheng(totle) number2(z) = totle If Mid$(Trim$(Text1.Text), 1, 1) = "-" Then number2(z) = -totle End If k = 0: r = 0 Else number2(z) = Val(Text1.Text) End If Text1.Text = "" z = z + 1 Dim dengyu As Double Dim v As Integer For v = 0 To 50 dengyu = dengyu + number2(v) Next v If dengyu < 0 Then Text3.ForeColor = &HFF& Else Text3.ForeColor = &HFF0000 End If Text3.Text = dengyu End If If KeyAscii = vbKeyEscape Then z = 0: k = 0: r = 0: j = 0 Dim i As Integer For i = 0 To 50 number(i) = 0 number2(i) = 0 Next i Text1.Text = "" Text2.Text = "" Text3.Text = "" Text1.SetFocus End If If Len(Text3.Text) >= 14 Then calcresult.Show End If End Sub rivate sub Text3_Change() tax2.Text1 = Text3.Text End Sub 用c语言编写能运算加减乘除的计算器程式,用到栈 #include "stdio.h" #include "string.h" #include "ctype.h" #include "math.h" expression evaluate #define iMUL 0 #define iDIV 1 #define iADD 2 #define iSUB 3 #define iCap 4 #define LtKH 5 #define RtKH 6 #define MaxSize 100 void iPush(float); float iPop(); float StaOperand[MaxSize]; int iTop=-1; char Srcexp[MaxSize]; char Capaexp[MaxSize]; char RevPolishexp[MaxSize]; float NumCapaTab[26]; char validexp[]="*/+-()"; char NumSets[]="0123456789"; char StackSymb[MaxSize]; int operands; void NumsToCapas(char [], int , char [], float []); int CheckExpress(char); int PriorChar(char,char); int GetOperator(char [], char); void counterPolishexp(char INexp[], int slen, char Outexp[]); float CalcRevPolishexp(char [], float [], char [], int); void main() { int ilen; float iResult=0.0; printf("enter a valid number string:
"); memset(StackSymb,0,MaxSize); memset(NumCapaTab,0,26); A--NO.1, B--NO.2, etc. gets(Srcexp); ilen=strlen(Srcexp); printf("source expression:%s
",Srcexp); NumsToCapas(Srcexp,ilen,Capaexp,NumCapaTab); printf("Numbers listed as follows:
"); int i; for (i=0; i<operands; ++i) printf("%.2f ",NumCapaTab[i]); printf("
Capaexp listed in the following:
"); printf("%s
",Capaexp); ilen=strlen(Capaexp); counterPolishexp(Capaexp,ilen,RevPolishexp); printf("RevPolishexp:
%s
",RevPolishexp); ilen=strlen(RevPolishexp); iResult=CalcRevPolishexp(validexp, NumCapaTab, RevPolishexp,ilen); printf("
counterPolish expression:
%s%.6f
",Srcexp,iResult); } void iPush(float value) { if(iTop<MaxSize) StaOperand[++iTop]=value; } float iPop() {
2023-06-26 05:08:061