




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、簡(jiǎn)單計(jì)算器1 基本功能描述簡(jiǎn)單計(jì)算器包括雙目運(yùn)算符和單目運(yùn)算符。 雙目運(yùn)算符包含基本的四則運(yùn)算 及乘冪功能,單目運(yùn)算符包含正余弦、階乘、對(duì)數(shù)、開(kāi)方、倒數(shù)等運(yùn)算??蓪?duì)輸 入任意操作數(shù)包含小數(shù)和整數(shù)及正數(shù)和負(fù)數(shù)進(jìn)行以上的所有運(yùn)算并能連續(xù)運(yùn)算。 出現(xiàn)錯(cuò)誤會(huì)給出提示, 同時(shí)包含清除、 退格、退出功能以及有與所有按鈕相對(duì)應(yīng) 的菜單項(xiàng)。2 設(shè)計(jì)思路如圖 1,是輸入數(shù)據(jù)子函數(shù)的流程圖。打開(kāi)計(jì)算器程序,輸入數(shù)據(jù),判斷此 次輸入之前是否有數(shù)字輸入, 如果有,則在之前輸入的數(shù)字字符后加上現(xiàn)有的數(shù) 字字符;如果沒(méi)有, 則直接使編輯框顯示所輸入的數(shù)字字符。 判斷是否繼續(xù)鍵入 數(shù)字,如果是,則繼續(xù)進(jìn)行前面的判斷,如果否
2、,則用 UpdateData(FALSE)刷新 顯示。如圖 2,是整個(gè)計(jì)算器的流程圖。對(duì)于輸入的算式,判斷運(yùn)算符是雙目運(yùn)算 符還是單目運(yùn)算符。如果是雙目運(yùn)算符,則把操作數(shù)存入數(shù)組 az+2 中,把運(yùn) 算符存入 bz+1 中;如果是單目運(yùn)算符,則把字符串轉(zhuǎn)化為可計(jì)算的數(shù)字,再 進(jìn)行計(jì)算。下面判斷運(yùn)算符是否合法,如果合法,則將結(jié)果存入 a0, 不合法, 則彈出對(duì)話框,提示錯(cuò)誤。結(jié)束程序。213圖 2 簡(jiǎn)單計(jì)算器總流程圖133 軟件設(shè)計(jì)3.1 設(shè)計(jì)步驟MFC打開(kāi) Microsoft Visual C+6.0,在文件中點(diǎn)擊新建,在彈出框內(nèi)選擇AppWizardexe 工程,輸入工程名及其存儲(chǔ)路徑,點(diǎn)擊
3、確定,如圖 3 所示。圖 3 新建 MFC AppWizardexe 工程將彈出 MFC AppWizard-step1 對(duì)話框,選擇基本對(duì)話框,點(diǎn)擊完成, 所示。圖4 基本對(duì)話框14這樣, MFC AppWizard 就建立了一個(gè)基于對(duì)話窗口的程序框架,如圖 5 所示圖 5 新建的對(duì)話框3.2 界面設(shè)計(jì)1、創(chuàng)建控件在圖 5 所 示的 Resoure View 選項(xiàng) 卡中打開(kāi) Dialog 資源組 ,雙擊 IDD_LUXIAOYING_DIALO在G,右邊的窗口中顯示出待編輯的對(duì)話框。開(kāi)始擺放控 件,包括編輯框和按鈕的創(chuàng)建。按鈕的創(chuàng)建以“ 0”為例進(jìn)行介紹,其他按鈕的 創(chuàng)建可參照此進(jìn)行操作。1
4、 )在圖 5 中控件的“編輯框”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框編輯窗口上 合適的位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)一個(gè)大小合適的編輯框。 在編輯框上單擊 鼠標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng),此時(shí)彈出 Edit 屬性對(duì)話框,如 圖 6 所示,在該對(duì)話框中輸入 ID 屬性。圖 6 Edit 屬性對(duì)話框512 )在圖 5 中控件的“ Button ”按鈕上單擊鼠標(biāo)左鍵,在對(duì)話框上的合適的 位置按下鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)大小合適的下壓式按鈕。 在按鈕上單擊鼠 標(biāo)右鍵,在彈出的快捷菜單中選擇屬性選項(xiàng), 此時(shí)彈出 Push Button 屬性對(duì)話框, 如圖 7 所示,在該對(duì)話框中輸入 ID 值和標(biāo)題屬性
5、。圖 7 Push Button 屬性按照上面的操作過(guò)程編輯其他按鈕和編輯框等對(duì)象的屬性。表1 各按鈕和編輯框等對(duì)象的屬性對(duì)象ID標(biāo)題或說(shuō)明編輯框IDC_RESULT_EDIT顯示按鈕IDC 0 BUTTON10按鈕IDC_1_BUTTON21按鈕IDC 2 BUTTON32按鈕IDC 3 BUTTON43按鈕IDC 4 BUTTON54按鈕IDC 5 BUTTON65按鈕IDC 6 BUTTON7661續(xù)表 1對(duì)象ID標(biāo)題或說(shuō)明按鈕IDC_7_BUTTON87按鈕IDC_8_BUTTON98按鈕IDC_9_BUTTON109按鈕IDC_OR_BUTTON11+/-按鈕IDC_DIAN_BUT
6、TON12.按鈕IDC_JIA_BUTTON13+按鈕IDC_JIAN_BUTTON14-按鈕IDC_CHENG_BUTTON15 *按鈕IDC_CHU_BUTTON16/按鈕IDC_CLEAR_BUTTON17 Clear按鈕IDC SQRT BUTTON18 sqrt按鈕IDC_DAOSHU_BUTTON19 1/x按鈕IDC DENGYU BUTTON20 =按鈕IDC LN BUTTON21ln按鈕IDC MI BUTTON2210x按鈕IDC COS BUTTON23cos按鈕IDC SIN BUTTON24sin按鈕IDC TUIWEI BUTTONBackspace按鈕IDC L
7、OG BUTTON26log17續(xù)表 1對(duì)象ID標(biāo)題或說(shuō)明按鈕IDC_TAN_BUTTON27tan按鈕IDC_JIECHENG_BUTTON28 n!完成后界面如圖 8 所示圖8 計(jì)算機(jī)界面2 連接變量和代碼1)給編輯框連接變量。在編輯框上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇建立類(lèi) 向?qū)Р藛雾?xiàng),彈出 MFC ClassWizard 對(duì)話框,選擇 Member Variables 選項(xiàng)卡,如 圖 9 所示。2)在 Control IDs 列表框中選擇 IDC_RESULT_EDIT ,單擊 Add Variables 按鈕, 在彈出的對(duì)話框中連接變量 m_str。變量類(lèi)型設(shè)定為 CString 型
8、。如圖 10 所示。189圖 9 MFC ClassWizard對(duì)話框中的 Member Variables選項(xiàng)卡圖 10 m_str 屬性設(shè)置2)給“ 0”按鈕連接代碼。在“ 0”按鈕上單擊鼠標(biāo)右鍵,選擇建立類(lèi)向?qū)Р藛?項(xiàng),在彈出的對(duì)話框中選擇 Messages Maps選項(xiàng)卡,然后在 Object IDs 列表框 中選擇 IDC_0_BUTTON,1在 Messages列表框中選擇 BN_CLICKED項(xiàng),即選擇單擊 按鈕事件,如圖 11 所示。9110圖 11 “ 0”按鈕連接代碼對(duì)話框3 菜單的設(shè)計(jì)選擇插入/資源命令,將顯示插入資源對(duì)話框,如圖 12 所示。選擇 Menu, 單擊新建即
9、可。圖 12 插入資源對(duì)話框11011Resoure View選項(xiàng)卡中打開(kāi) Menu資源組,雙擊 IDR_MENU1 , 然后給菜單 添加相應(yīng)的標(biāo)題 ,并把每個(gè)菜單對(duì)應(yīng)的 ID 值與相應(yīng)的按鈕的一致。 如圖 13所示圖 13 菜單屬性對(duì)話框在對(duì)話框的任何一個(gè)空白域單擊鼠標(biāo)右鍵, 然后在彈出的快捷菜單中選擇屬 性命令,彈出對(duì)話屬性對(duì)話框,如圖 14 所示。在對(duì)話框中的菜單組合框中選擇IDR_MENU1 。圖 14 對(duì)話屬性對(duì)話框 最終得到的界面如圖 15 所示。圖 15 計(jì)算器完整界面11123.3 關(guān)鍵功能的實(shí)現(xiàn)1)操作數(shù)、小數(shù)點(diǎn)以及雙目運(yùn)算符的輸入編輯框所關(guān)聯(lián)的變量為 m_str, 程序開(kāi)始
10、時(shí)為零。 每按下一個(gè)數(shù)字鍵按鈕、 雙 目運(yùn)算符按鈕或小數(shù)點(diǎn)按鈕,就把它累加到 m_str 里并刷新顯示。 BOOL型變量 pass1 判斷之前是否有操作符輸入,有,則 pass 為 1;無(wú),則為 0。BOOL型變量 pass2 判斷是否有小數(shù)點(diǎn),有,則為 0;無(wú),則為 1; BOOL型變量 pass3 判斷之 前是否有數(shù)字輸入,有,則為 0;無(wú),則為 1。2)單目運(yùn)算符功能的實(shí)現(xiàn)由于所輸入的操作數(shù)類(lèi)型為 String 類(lèi),所以需要將其轉(zhuǎn)化為數(shù)字才能進(jìn)行 運(yùn)算。首先,將比率 rate 賦值為 10,將每一位輸入的字符與 0字符做差, 得到他們 ASCII 值的差,在遇到小數(shù)點(diǎn)之前, 將這些差值通
11、過(guò)循環(huán)求和以及乘以 rate 值得到字符串所表達(dá)的數(shù)值的整數(shù)部分,然后,當(dāng)遇到小數(shù)點(diǎn)時(shí),將 rate 賦值為 0.1 ,再通過(guò)類(lèi)似的計(jì)算方法得到字符串所表達(dá)的數(shù)值的小數(shù)部分, 最后, 將所得數(shù)值的整數(shù)部分和小數(shù)部分合在一起賦值給變量 a,再通過(guò)單目運(yùn)算符作 用于 a 上即可實(shí)現(xiàn)相應(yīng)功能。3)雙目運(yùn)算符功能的實(shí)現(xiàn)由于所輸入的操作數(shù)類(lèi)型為 String 類(lèi),所以要通過(guò)與單目運(yùn)算符中類(lèi)似的方 法將其轉(zhuǎn)換為數(shù)值, 再進(jìn)行相關(guān)運(yùn)算。 對(duì)于雙目運(yùn)算符功能中操作數(shù)和操作符的 區(qū)分,可以將它們分別存儲(chǔ)在數(shù)組 a 中和數(shù)組 b 中加以區(qū)分,再進(jìn)行計(jì)算。4)退格鍵功能的實(shí)現(xiàn)如果 m_str 中有字符串,則每次按下
12、退位鍵都將去掉最右邊一個(gè)字符剩下的 字符串重新賦值給 m_str ,從而實(shí)現(xiàn)退位功能。如果, m_str 中本來(lái)就沒(méi)有字符 串,則將字符 0賦值給 m_str 。5)正負(fù)號(hào)功能的實(shí)現(xiàn)由于所輸入的操作數(shù)類(lèi)型為 String 類(lèi),所以要通過(guò)與單目運(yùn)算符中類(lèi)似的 方法將其轉(zhuǎn)換為數(shù)值, 再進(jìn)行相關(guān)運(yùn)算。 對(duì)于正負(fù)號(hào)功能, 只要在原來(lái)數(shù)值的前 面加一個(gè)負(fù)號(hào),即可實(shí)現(xiàn)相應(yīng)功能。112134 結(jié)論與心得體會(huì)經(jīng)過(guò)多次調(diào)試,設(shè)計(jì)的計(jì)算器可以實(shí)現(xiàn)本次要求的所有功能。此次 VC+課程設(shè)計(jì),在同學(xué)的幫助下,順利完成,收獲也很大。本學(xué)期我 們開(kāi)設(shè)了面向?qū)ο蟪绦蛟O(shè)計(jì)與 VC+實(shí)踐這門(mén)課,其中 MFC部分皆是需要實(shí) 踐的,
13、所以,此次課程設(shè)計(jì)是很及時(shí)、很有必要的。這樣,不僅能加深我們對(duì) MFC程序設(shè)計(jì)的掌握,而且,還能讓我們真正做到學(xué)以致用。課程設(shè)計(jì)剛開(kāi)始的時(shí)候, 覺(jué)著比較輕松, 畢竟上課時(shí)做過(guò)簡(jiǎn)單計(jì)算器, 覺(jué)著 這次的題目也不會(huì)太難。 后來(lái),通過(guò)老師的講解, 發(fā)現(xiàn)這次課程設(shè)計(jì)與平時(shí)做的 計(jì)算器有很多不同, 不僅需要考慮運(yùn)算的優(yōu)先級(jí), 還需要實(shí)現(xiàn)連續(xù)運(yùn)算, 而且還 有單目運(yùn)算與雙目運(yùn)算的不同等一系列新的問(wèn)題。 但是, 真正開(kāi)始做的時(shí)候, 通 過(guò)查找資料和與同學(xué)的交流, 漸漸有了頭緒。 在完成過(guò)程中, 仍然避免不了會(huì)遇 到一些問(wèn)題,這時(shí),不僅需要思考,還需要查閱相關(guān)資料來(lái)解決。當(dāng)然,做課程設(shè)計(jì),基本知識(shí)是必備的。只
14、有具有了一定的基礎(chǔ)知識(shí),才能 在課程設(shè)計(jì)過(guò)程中高質(zhì)高效完成。 同時(shí),也不能請(qǐng)示任何一道題, 每一道題都有 它自己的難點(diǎn)。這次課程設(shè)計(jì)讓我學(xué)到了很多, 不僅鞏固了先前學(xué)的 MFC程序設(shè)計(jì)知識(shí), 而 且也培養(yǎng)了我的實(shí)踐能力, 將理論知識(shí)與實(shí)踐聯(lián)系起來(lái), 更令我的創(chuàng)造性思維得 到了拓展。希望以后類(lèi)似這樣的課程設(shè)計(jì)、這樣的實(shí)踐機(jī)會(huì)能多一些。5 思考題1、程序中如何實(shí)現(xiàn)小數(shù)的顯示與運(yùn)算?答:編輯框所關(guān)聯(lián)的變量為 Cstring 類(lèi)的 m_str ,當(dāng)輸入小數(shù)點(diǎn)時(shí),直接將 字符 . 加在之前已輸入字符后面即可。 運(yùn)算時(shí),通過(guò)BOOL型變量 pass2判斷 是否有小數(shù)點(diǎn),有,則為 0;無(wú),則為 1。當(dāng)有小數(shù)
15、點(diǎn)時(shí),在把已輸入的字符串 轉(zhuǎn)化為相應(yīng)數(shù)值時(shí),乘以的比率 rate 為 0.1 ,且每乘一次,都使 rate 值變?yōu)樵?來(lái) rate 值的十分之一,之后由于頭文件中加了“ math.h ”, 故,再通過(guò)進(jìn)行相關(guān)11314數(shù)學(xué)運(yùn)算即可得到結(jié)果。2、描述等號(hào)對(duì)應(yīng)的消息處理函數(shù)中需要處理的問(wèn)題及相應(yīng)的實(shí)現(xiàn)代碼? 答:等號(hào)對(duì)應(yīng)的消息處理函數(shù)中需要實(shí)現(xiàn)雙目運(yùn)算符的功能和連續(xù)運(yùn)算, 同時(shí)還 要解決運(yùn)算優(yōu)先級(jí)的問(wèn)題,另外還需要有相應(yīng)的錯(cuò)誤提示。實(shí)現(xiàn)代碼:void CLuxiaoyingDlg:OnDengyuButton20()/ TODO: Add your control notification han
16、dler code hereint i, j, z, s, x=0, y=1, t, m=1;char b10;double rate=10.0, itemp=0.0,a20, l;for(i=0;i20;i+)ai=100000000.0;for(i=0;i10;i+)bi= ;/ 以下為雙目運(yùn)算;z=0;獲得當(dāng)前字節(jié)文件的邏輯若參數(shù) c 為阿拉伯?dāng)?shù)字,則取出字符串 中的第 i 個(gè)字符for(i=0;im_str.GetLength();i+)/GetLength / 長(zhǎng)度if(isdigit(m_str.GetAt(i)/isdigit/ 返回 TRUE,否則返回 NULL(0)。/m_s
17、tr.GetAt(i)/ (編號(hào)從 0 起)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0);11415if(i=m_str.GetLength()-1)az=itemp;elseitemp=itemp+rate*(m_str.GetAt(i)-0);rate=rate/10;if(i=m_str.GetLength()-1) az=itemp;else if(m_str.GetAt(i)=.)rate=0.1;else if(m_str.GetAt(i)=+)az=itemp;itemp=0;z+;bz=+;z+;rate=10.0;else
18、if(m_str.GetAt(i)=-)az=itemp;itemp=0;z+;bz=-;z+;rate=10.0;11516else if(m_str.GetAt(i)=*) az=itemp;itemp=0; z+;bz=*;z+;rate=10.0;else if(m_str.GetAt(i)=/) az=itemp;itemp=0; z+;bz=/;z+;rate=10.0;s=z;for(j=0;j=s;j+)/ 除法轉(zhuǎn)換成乘法if(bj=/) if(aj+1=0)MessageBox(0 不能作為除數(shù) !); elseaj+1=1/aj+1;11617bj=*;for(j=0;j=
19、s;j+)/ 乘法,有乘號(hào)時(shí)執(zhí)行乘法計(jì)算,同時(shí)注意優(yōu)先級(jí) if(bj=*)if(j-t=2)at-m=at-m*aj+1;/ 實(shí)現(xiàn)連乘m=m+2;elseaj-1=aj-1*aj+1;/ 乘法的實(shí)現(xiàn)aj+1=100000000.0;bj= ;t=j;for(j=0;j=s;j+)/ 數(shù)值和運(yùn)算符的傳遞if(aj!=100000000.0)ax=aj;x+=2;if(bj!= )11718by=bj;y+=2;for(j=0;j100000000)MessageBox(您輸入的數(shù)值過(guò)大 !);elsem_str.Format(%1f,a0);pass1=0;UpdateData(0);6 附錄6
20、.1 調(diào)試報(bào)告運(yùn)行時(shí), backspace 按鍵功能不能實(shí)現(xiàn),點(diǎn)擊后無(wú)任何反應(yīng)。經(jīng)過(guò)檢查,程序和關(guān)聯(lián)的相關(guān)變量等都沒(méi)錯(cuò)誤, 可是該鍵沒(méi)有響應(yīng)。 在與同學(xué)討論后, 重新添加改 按鈕,功能正常實(shí)現(xiàn)118196.2 測(cè)試結(jié)果1、輸入“ 2”,“ +”,“ 6”,“ - ”,“ 3”,“ * ”,“ 9”,“ =”,并在菜 單中同樣輸入這組操作,均得到結(jié)果如圖 16。圖 16 結(jié)果圖 12、輸入“ 0”,“ ln ”,得到結(jié)果如圖 17圖 17 結(jié)果圖 23、輸入“ 30”,“ sin ”,得到結(jié)果如圖 1811920圖 18 結(jié)果圖 36.3 關(guān)鍵源代碼1、0到 9的輸入void CLuxiaoyi
21、ngDlg:On0Button1()/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=0;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 0 m_str=0;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On1Button2()21021/ TODO: Add your control notification handler code here UpdateData(TRU
22、E);if(pass1=1&pass3=0)m_str+=1;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 1 m_str=1;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On2Button3()/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=2;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 2 m_str=2;pass3=0;Update
23、Data(FALSE);void CLuxiaoyingDlg:On3Button4()2122/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0) m_str+=3;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 3 m_str=3;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On4Button5()/ TODO: Add your control notification handle
24、r code here UpdateData(TRUE);if(pass1=1&pass3=0) m_str+=4;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 4 m_str=4;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On5Button6()/ TODO: Add your control notification handler code here UpdateData(TRUE);21223if(pass1=1&pass3=0)m_str+=5;if(pass1=1&pass3=1)/ 在編輯框 1 的字
25、符串后加上字符 5 m_str=5;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On6Button7()/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=6;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 6 m_str=6;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On7Button8()/ TODO: Add your
26、control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=7;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 721324m_str=7;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On8Button9()/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=8;if(pa
27、ss1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 8 m_str=8;pass3=0;UpdateData(FALSE);void CLuxiaoyingDlg:On9Button10()/ TODO: Add your control notification handler code here UpdateData(TRUE);if(pass1=1&pass3=0)m_str+=9;if(pass1=1&pass3=1)/ 在編輯框 1 的字符串后加上字符 9 m_str=9;21425pass3=0;UpdateData(FALSE); 2、加減乘除和小數(shù)點(diǎn)的輸入 voi
28、d CLuxiaoyingDlg:OnJiaButton13()/ TODO: Add your control notification handler code here UpdateData(TRUE);m_str = m_str + +;/加號(hào)pass1=1;UpdateData(FALSE);void CLuxiaoyingDlg:OnJianButton14()/ TODO: Add your control notification handler code here UpdateData(TRUE);m_str = m_str + -;/減號(hào)pass1=1;UpdateData
29、(FALSE);void CLuxiaoyingDlg:OnChengButton15()/ TODO: Add your control notification handler code here UpdateData(TRUE);m_str = m_str + *; /乘號(hào)pass1=1;UpdateData(FALSE);21526void CLuxiaoyingDlg:OnChuButton16()/ TODO: Add your control notification handler code hereUpdateData(TRUE);m_str = m_str + /;/除號(hào)p
30、ass1=1;UpdateData(FALSE);void CLuxiaoyingDlg:OnDianButton12()/ TODO: Add your control notification handler code hereUpdateData(1);if(pass1=1&pass2=1)m_str+=.;pass2=0;UpdateData(0);3、清除功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnClearButton17()/ TODO: Add your control notification handler code hereUpdateData(1);m_str
31、=0;pass1=1;/ 之前是否有操作符輸入,有,則為 1,無(wú),則為 0pass2=1;/ 是否有小數(shù)點(diǎn),有,則為 0,無(wú),則為 1pass3=1;/ 之前是否有數(shù)字輸入,有,則為 0,無(wú),則為 1UpdateData(0);216274、cos 功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnCosButton23()/ TODO: Add your control notification handler code here double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+
32、)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;elseitemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt(i)=.)rate=0.1;21728a=cos(a*3.1415926/180);m_str.Format(%1f,a);pass1=0;UpdateData(FAL
33、SE);5、倒數(shù)功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnDaoshuButton19()/ TODO: Add your control notification handler code here double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;elsei
34、temp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;21829else if(m_str.GetAt(i)=.)rate=0.1;if(a=0)MessageBox(0 沒(méi)有倒數(shù) !);elsea=1/a;m_str.Format(%1f,a);pass1=0;UpdateData(FALSE);6、等于號(hào)功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnDengyuButton20()/ TODO: Add your control notification handler c
35、ode here int i, j, z, s, x=0, y=1, t, m=1;char b10;double rate=10.0, itemp=0.0,a20, l;for(i=0;i20;i+)ai=100000000.0;for(i=0;i10;i+)bi= ;/ 以下為雙目運(yùn)算;z=0;獲得當(dāng)前字節(jié)文件for(i=0;im_str.GetLength();i+)/GetLength的邏輯長(zhǎng)度21930if(isdigit(m_str.GetAt(i)/isdigit 若參數(shù) c 為阿拉伯?dāng)?shù)字,則 返回 TRUE,否則返回 NULL(0)。/m_str.GetAt(i) 取出字符串
36、中的第 i 個(gè)字符 (編號(hào)從 0 起)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1) az=itemp;else itemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)az=itemp;else if(m_str.GetAt(i)=.)rate=0.1;else if(m_str.GetAt(i)=+)az=itemp;itemp=0;z+;bz=+;z+;rate=10.0;31031else
37、if(m_str.GetAt(i)=-)az=itemp;itemp=0;z+;bz=-;z+;rate=10.0;else if(m_str.GetAt(i)=*)az=itemp;itemp=0;z+;bz=*;z+;rate=10.0;else if(m_str.GetAt(i)=/)az=itemp;itemp=0;z+;bz=/;z+;rate=10.0;s=z;for(j=0;j=s;j+)/ 除法轉(zhuǎn)換成乘法3132if(bj=/)if(aj+1=0)MessageBox(0 不能作為除數(shù) !);else aj+1=1/aj+1; bj=*;for(j=0;j=s;j+)/ 乘法,
38、有乘號(hào)時(shí)執(zhí)行乘法計(jì)算,同時(shí)注意優(yōu)先級(jí) if(bj=*)if(j-t=2)at-m=at-m*aj+1;/ 實(shí)現(xiàn)連乘 m=m+2;elseaj-1=aj-1*aj+1;/ 乘法的實(shí)現(xiàn) aj+1=100000000.0;bj= ;t=j;for(j=0;j=s;j+)/ 數(shù)值和運(yùn)算符的傳遞31233if(aj!=100000000.0)ax=aj;x+=2;if(bj!= )by=bj;y+=2;for(j=0;j100000000)MessageBox(您輸入的數(shù)值過(guò)大 !); elsem_str.Format(%1f,a0);pass1=0;UpdateData(0);7、階乘的計(jì)算31334
39、void CLuxiaoyingDlg:OnJiechengButton28()/ TODO: Add your control notification handler code here double a,itemp=0,rate=10.0;int i,k;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;elseitemp=item
40、p+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt(i)=.)rate=0.1;if(a=0)a=1;31435elsek=1;for(i=1;i=a;i+)k*=i;a=k;m_str.Format(%1f,a);pass1=0;UpdateData(FALSE);8、ln 功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnLnButton21()/ TODO: Add your control notification handler code here
41、 double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;else31536itemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt
42、(i)=.)rate=0.1;if(a=0)MessageBox(0 不能取對(duì)數(shù) !);elsea=log(a);m_str.Format(%1f,a);pass1=0;UpdateData(FALSE);9、log 功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnLogButton26()/ TODO: Add your control notification handler code here double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_st
43、r.GetAt(i)31637if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0);if(i=m_str.GetLength()-1)a=itemp;elseitemp=itemp+rate*(m_str.GetAt(i)-0);rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt(i)=.)rate=0.1;if(a=0)MessageBox(0 不能取對(duì)數(shù) !);elsea=log10(a);m_str.Format(%1f,a);pass1=0;UpdateData(
44、FALSE);10、冪功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnMiButton22()/ TODO: Add your control notification handler code here31738double a,k,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;
45、else itemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt(i)=.)rate=0.1;k=1;for(i=0;ia;i+) k*=10; a=k;m_str.Format(%1f,a);31839pass1=0;UpdateData(FALSE);11、正負(fù)功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnOrButton11()/ TODO: Add your control notification handler code he
46、re double itemp=0,rate=10.0,a;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;elseitemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)a=itemp;else if(m_str.GetAt(i)
47、=.)31940rate=0.1;a=-a;m_str.Format(%1f,a);pass1=0;UpdateData(FALSE);12、sin 功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnSinButton24()/ TODO: Add your control notification handler code here double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp
48、*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;elseitemp=itemp+rate*(m_str.GetAt(i)-0); rate=rate/10;if(i=m_str.GetLength()-1)41041a=itemp;else if(m_str.GetAt(i)=.)rate=0.1;a=sin(a*3.1415926/180);m_str.Format(%1f,a);pass1=0;UpdateData(FALSE);13、sqrt 功能的實(shí)現(xiàn)void CLuxiaoyingDlg:OnSqrtButton1
49、8()/ TODO: Add your control notification handler code here/ if(addt!=0);/DENGYU();double a,itemp=0,rate=10.0;int i;UpdateData(TRUE);for(i=0;im_str.GetLength();i+)if(isdigit(m_str.GetAt(i)if(rate=10.0)itemp=itemp*rate+(m_str.GetAt(i)-0); if(i=m_str.GetLength()-1)a=itemp;4142elseitemp=itemp+rate*(m_str.GetAt(i)-0);rate=rate/10;if(i=m_str.GetLength()-1)a=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字化時(shí)代下文化遺產(chǎn)展示與傳播在文化遺產(chǎn)地文化產(chǎn)業(yè)發(fā)展中的應(yīng)用報(bào)告
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)AR交互技術(shù)在工業(yè)設(shè)備狀態(tài)監(jiān)測(cè)與預(yù)警中的應(yīng)用研究報(bào)告001
- 2025年元宇宙社交平臺(tái)社交電商模式創(chuàng)新與挑戰(zhàn)報(bào)告
- 咨詢(xún)工程師宏觀課件下載
- 咨詢(xún)工程師培訓(xùn)視頻課件
- 咨詢(xún)工程師串講課件
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式藥物研發(fā)生物技術(shù)產(chǎn)品研發(fā)報(bào)告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)技術(shù)轉(zhuǎn)移與人才培養(yǎng)報(bào)告
- 2025年醫(yī)藥流通企業(yè)供應(yīng)鏈優(yōu)化與成本控制智能供應(yīng)鏈管理供應(yīng)鏈管理政策法規(guī)影響報(bào)告
- 2025年城市公園改造提升工程社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估與城市社區(qū)環(huán)境質(zhì)量提升策略報(bào)告001
- 高級(jí)保育師試題(含答案)
- 2025石獅市國(guó)企招聘考試題目及答案
- GB/T 16262.2-2025信息技術(shù)抽象語(yǔ)法記法一(ASN.1)第2部分:信息客體規(guī)范
- 項(xiàng)目管理中期答辯
- 《熱力公司各崗位工作流程及工作職責(zé)》
- 中藥飲片處方書(shū)寫(xiě)規(guī)范
- 運(yùn)維保障方案
- 【浙江大學(xué)(姚暢)】2025年AI大模型如何破局傳統(tǒng)醫(yī)療報(bào)告
- TCRHA 088-2024 病理免疫組織化學(xué)檢測(cè)質(zhì)控品要求
- TCPSS 1011-2024 直流散熱風(fēng)扇運(yùn)行壽命測(cè)試方法
- 2025年廣西初中學(xué)業(yè)水平模擬測(cè)試(一)數(shù)學(xué)(原卷版+解析版)
評(píng)論
0/150
提交評(píng)論