freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c課程設(shè)計(jì)【用c編寫(xiě)計(jì)算器程序】【樣本】(已修改)

2025-08-19 14:45 本頁(yè)面
 

【正文】 C++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告題目:用C++編寫(xiě)計(jì)算器程序 學(xué)生姓名: 學(xué) 號(hào): 院 (系): 專 業(yè): 2011 年 9 月 9 日 用C++編寫(xiě)計(jì)算器程序搞 要 本課程設(shè)計(jì)是在基于對(duì)話框的應(yīng)用程序中模擬一個(gè)計(jì)算器,本計(jì)算器可以進(jìn)行十進(jìn)制下的四則運(yùn)算(加、減、乘、除)和四則混合運(yùn)算,可以把十進(jìn)制轉(zhuǎn)化為二進(jìn)制或十六進(jìn)制,可以進(jìn)行一些常用的函數(shù)運(yùn)算(比如sin、cos、tan、cot、sqrt、ln等),還可以支持帶“(”,“)”符號(hào)的表達(dá)式的計(jì)算。系統(tǒng)開(kāi)發(fā)平臺(tái)為Windows XP,程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言采用Visual C++,程序運(yùn)行平臺(tái)為Windows 98/2000/XP。程序通過(guò)調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。關(guān)鍵詞 程序設(shè)計(jì);計(jì)算器;C++;1 引言 在現(xiàn)代社會(huì)中,計(jì)算器已經(jīng)進(jìn)入了每一個(gè)家庭,人們?cè)谏詈蛯W(xué)習(xí)中經(jīng)常需要使用到計(jì)算器,它的出現(xiàn)大大減少了人們?cè)谟?jì)算方面的工作量,可以說(shuō)它在人們生活和學(xué)習(xí)中是不可缺少的。 C++介紹C++語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是全面兼容C語(yǔ)言,二是支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法[1]。(1) C++是一個(gè)更好的C,它保持了C語(yǔ)言的優(yōu)點(diǎn),大多數(shù)的C程序代碼略作修改或不作修改就可在C++的集成環(huán)境下調(diào)試和運(yùn)行。這對(duì)于繼承和開(kāi)發(fā)當(dāng)前已在廣泛的軟件是非常重要的,可以節(jié)省大量的人力和物力。(2) C++是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言它使得程序的各個(gè)模塊的獨(dú)立性更強(qiáng),程序的可讀性和可移植性更強(qiáng),程序代碼的結(jié)構(gòu)更加合理,程序的擴(kuò)充性更強(qiáng)。這對(duì)于設(shè)計(jì)、編制和調(diào)試一些大型的軟件尤為重要。 (3) C++集成環(huán)境不僅支持C++程序的編譯和調(diào)試,而且也支持C程序的編譯和調(diào)試。通常,C++程序環(huán)境 約定:當(dāng)源程序文件的擴(kuò)展名為c.時(shí),則為C程序;而當(dāng)源程序文件的擴(kuò)展名為cpp.時(shí),則為C++程序。(4) C++語(yǔ)句非常簡(jiǎn)練,對(duì)語(yǔ)法限制比較寬松,因此C++語(yǔ)法非常靈活。其優(yōu)點(diǎn)是給用戶編程帶來(lái)書(shū)寫(xiě)上的方便。其缺點(diǎn)是由于編譯時(shí)對(duì)語(yǔ)法限制比較寬松,許多邏輯上的錯(cuò)誤不容易發(fā)現(xiàn),給用戶編程增加了難度。(1)在運(yùn)行程序后,系統(tǒng)會(huì)彈出一個(gè)基于對(duì)話框的計(jì)算器界面,如下圖所示: 計(jì)算器界面 (2)在計(jì)算器程序中,主要通過(guò)一個(gè)編輯框來(lái)獲取表達(dá)式和顯示計(jì)算結(jié)果,表達(dá)式可以通過(guò)鍵盤(pán)和單擊按鈕2種方式輸入,輸入后的結(jié)果如下圖所示: 輸入表達(dá)式后的界面 (3)在輸入完表達(dá)式后,單擊“=”后,開(kāi)始對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算完成后,在編輯框中顯示計(jì)算的結(jié)果。 計(jì)算后的結(jié)果(4)計(jì)算器可以實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)化為十六進(jìn)制或二進(jìn)制,其實(shí)現(xiàn)的操作為先輸入一個(gè)十進(jìn)制整數(shù),再單擊按鈕“轉(zhuǎn)化為二進(jìn)制”或“轉(zhuǎn)化為十六進(jìn)制。 輸入一個(gè)十進(jìn)制數(shù)100 100轉(zhuǎn)化為二進(jìn)制后的結(jié)果 100轉(zhuǎn)化為十六進(jìn)制后的結(jié)果(4)另外,計(jì)算器還可以實(shí)現(xiàn)一些簡(jiǎn)單的函數(shù)運(yùn)算,實(shí)現(xiàn)的操作和十六進(jìn)制/二進(jìn)制轉(zhuǎn)化類似,是先輸入一個(gè)數(shù)字,在單擊想要進(jìn)行的函數(shù)的按鈕,單擊后就會(huì)在編輯框中顯示運(yùn)算的結(jié)果。 2 算法的實(shí)現(xiàn)(1)如果字符串中只有數(shù)字。這個(gè)情況用來(lái)實(shí)現(xiàn)一些簡(jiǎn)單函數(shù)的運(yùn)算。在進(jìn)行簡(jiǎn)單函數(shù)的運(yùn)算時(shí),都是先輸入一個(gè)數(shù)字,再單擊要進(jìn)行運(yùn)算的按鈕,然后編輯框顯示運(yùn)算的結(jié)果。程序用了一個(gè)函數(shù)double GetaStr(CString str)來(lái)實(shí)現(xiàn)這個(gè)功能,該函數(shù)以編輯框變量m_strResult為實(shí)參,再得到m_strResult的值后,調(diào)用GetAt函數(shù),一個(gè)字符一個(gè)字符的讀取,如果碰到整數(shù),執(zhí)行“itemp=itemp*rate+((i)39。039。)。”,其中變量itemp初始值為0,變量rate初始值為10,如果碰到了小數(shù)點(diǎn),改變r(jià)ate的值,再向后繼續(xù)讀取,再碰到整數(shù)時(shí)執(zhí)行“itemp=itemp+rate*((i)39。039。)。rate=rate/10?!?,函數(shù)的最后確定返回值為itemp。以下是這個(gè)函數(shù)的代碼[2]:double CMyDlg::GetaStr(CString str){ int i=0。 double rate=,itemp=。 for(。i()。i++) { if(isdigit((i))) //(i)的內(nèi)容是整數(shù) { if(rate==) //整數(shù)部分 itemp=itemp*rate+((i)39。039。)。//獲得整數(shù) else //小數(shù)部分 { itemp=itemp+rate*((i)39。039。)。//獲得小數(shù) rate=rate/10。 //每次讓rate小10倍 } } else if((i)==39。.39。) //(i)是小數(shù)點(diǎn) rate=。 //讓rate=,開(kāi)始計(jì)算小數(shù)部分 } return (itemp)。}(2)如果字符串中有運(yùn)算符和數(shù)字,但是沒(méi)有括號(hào)。程序調(diào)用函數(shù)void GetStr(CString str),這個(gè)函數(shù)的前半部分和函數(shù)void GetaStr(CString str)一樣,都是獲取數(shù)字的算法,但是因?yàn)楸磉_(dá)式中可能有多個(gè)數(shù)字和運(yùn)算符,所以我們需要定義2個(gè)數(shù)組,分別用來(lái)存放數(shù)字和運(yùn)算符,當(dāng)讀取字符遇到運(yùn)算符時(shí),把變量itemp的值保存在數(shù)組a中,并把0賦給itemp,把10賦給rate,把運(yùn)算符保存在數(shù)組b中。當(dāng)不在碰到運(yùn)算符號(hào)時(shí),把最后一個(gè)整數(shù)itemp的值數(shù)組a中,把z的值賦給s。(z的值表示運(yùn)算符加數(shù)字一個(gè)有多少個(gè),把這個(gè)值賦給s,可以在以后的計(jì)算中,控制循環(huán)的條件,避免造成不必要的誤差。)這個(gè)函數(shù)的代碼如下:void CMyDlg::GetStr(CString str) { int i=0,z=0。 double rate=,itemp=。 for(i=0。i20。i++) a[i]=。 //對(duì)數(shù)組a[20]初始化 for(i=0。i10。i++) b[i]=39。 39。 //對(duì)數(shù)組b[10]初始化 i=0。 //把0賦給i for(。i()。i++) { if(isdigit((i))) //(i)的內(nèi)容是整數(shù) { if(rate==) //整數(shù)部分 itemp=itemp*rate+((i)39。039。)。//獲得整數(shù) else //小數(shù)部分 { itemp=itemp+rate*((i)39。039。)。//獲得小數(shù) rate=rate/10。 //每次讓rate小10倍 } } else if((i)==39。.39。) //(i)是小數(shù)點(diǎn) rate=。 //讓rate=,開(kāi)始計(jì)算小數(shù)部分 else if((i)==39。+39。) //(i)是加號(hào) { a[z]=itemp。itemp=0。 //把itemp的值放入雙精度數(shù)組a中,并把itemp的值改為0 z++。 //讓z自加一次 b[z]=39。+39。 //把加號(hào)放入字符數(shù)組b中 z++。 //讓z自加一次 rate=。 //把10賦給rate,確保讀取下個(gè)數(shù)字時(shí),先計(jì)算整數(shù)部分 } else if((i)==39。39。) //(i)是減號(hào) { a[z]=itemp。itemp=0。 //把itemp的值放入雙精度數(shù)組a中,并把itemp的值改為0 z++。 //讓z自加一次 b[z]=39。39。 //把減號(hào)放入字符數(shù)組b中 z++。 //讓z自加一次 rate=。 //把10賦給rate,確保讀取下個(gè)數(shù)字時(shí),先計(jì)算整數(shù)部分 } else if((i)==39。*39。) //(i)是乘號(hào) { a[z]=itemp。itemp=0。 //把itemp的值放入雙精度數(shù)組a中,并把itemp的值改為0 z++。 //讓z自加一次 b[z]=39。*39。 //把減號(hào)放入字符數(shù)組b中 z++。 //讓z自加一次 rate=。 //把10賦給rate,確保讀取下個(gè)數(shù)字時(shí),先計(jì)算整數(shù)部分 } else if((i)==39。/39。) //(i)是除號(hào) { a[z]=itemp。itemp=0。 //把itemp的值放入雙精度數(shù)組a中,并把itemp的值改為0 z++。 //讓z自加一次 b[z]=39。/39。 //把除號(hào)放入字符數(shù)組b中 z++。 //讓z自加一次 rate=。 //把10賦給rate,確保讀取下個(gè)數(shù)字時(shí),先計(jì)算整數(shù)部分 } } a[z]=itemp。 //把最后一個(gè)整數(shù)itemp的值放入雙精度數(shù)組a中 s=z。 //把z的值賦給變量s,用來(lái)控制計(jì)算結(jié)果的循環(huán)中的條件}(3) 如果字符串中有括號(hào)。程序用函數(shù)void Bracket(CString str0)來(lái)解決括號(hào)問(wèn)題,同樣,函數(shù)以編輯框變量m_strResult為實(shí)參,主要思想是把m_strResult先分成3個(gè)字符串,比如一個(gè)表達(dá)式2*(2+3)6,這個(gè)函數(shù)的目的是先把表達(dá)式2*(2+3)6分成2*、2+6三個(gè)字符串,再計(jì)算2+3后,把結(jié)果覆蓋掉2+3所在的字符串,最后把3個(gè)字符串相加,這樣就處理掉了括號(hào)的問(wèn)題。具體實(shí)現(xiàn)的算法:定義3個(gè)字符串變量strstrstr3,這三個(gè)變量都初始化為空變量,現(xiàn)在開(kāi)始一個(gè)循環(huán),當(dāng)沒(méi)有遇到字符“(”時(shí),把每次得到的字符都加在字符串str1上,當(dāng)遇到字符“(”時(shí),把“(”后的字符都加在字符串str2上,直到遇到字符“)”。當(dāng)遇到字符“)”時(shí),把“)”后的字符都加在字符串str3上,str2再調(diào)用函數(shù)計(jì)算出它的表達(dá)式的值,最后把3個(gè)字符串相加,這就解決了括號(hào)問(wèn)題。該函數(shù)代碼如下:void CMyDlg::Bracket(CString str0){ CString str1=,str2=,str3=。 i
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1