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

正文內(nèi)容

算數(shù)表達(dá)式的求解課程設(shè)計報告-展示頁

2024-08-08 12:21本頁面
  

【正文】 運算符+*/()用數(shù)字表示0123456棧內(nèi)操作符的優(yōu)先級3355160棧外操作符的優(yōu)先級2244610 在Precede()函數(shù)中定義兩個字符型參數(shù)變量op和c,其中op表示棧頂運算符,c表示當(dāng)前讀入運算符,對于當(dāng)前運算符是否入棧,進(jìn)行如下操作:比較當(dāng)前運算符和棧頂運算符的優(yōu)先級的大?。? 如果當(dāng)前運算符的優(yōu)先級大于棧頂運算符的優(yōu)先級,即opc。程序中需要建立兩個棧,一個棧用于寄存運算符,另一個則用于寄存操作數(shù)和計算結(jié)果,故需要建立兩個順序棧結(jié)構(gòu)類型。若讀入的字符為‘0’到‘9’之間的數(shù)字時,用字符相減轉(zhuǎn)化為整型,然后將轉(zhuǎn)化后的整型再轉(zhuǎn)化為ASCII的形式壓入操作數(shù)棧opnd中。(2)依次讀入表達(dá)式中每個字符,若為操作數(shù),則進(jìn)opnd棧;若是運算符,則與optr棧的棧頂運算符比較優(yōu)先級后做相應(yīng)操作:若當(dāng)前操作符大于optr棧的棧頂,則當(dāng)前操作符入棧;否則,opnd棧的棧頂元素、次棧頂元素出棧,同時optr棧的棧頂元素也出棧,形成運算,并將結(jié)果壓入opnd棧,直至整個表達(dá)式求值完畢(即optr棧的棧頂元素和當(dāng)前讀入的字符均為“”)。為實現(xiàn)算法的優(yōu)先級,設(shè)置兩個棧:一個稱為操作數(shù)棧opnd,用以寄存操作數(shù)和運算結(jié)果,另一個為操作符棧optr,用以寄存運算符。由于運算符有優(yōu)先級的高低,因此一個算數(shù)表達(dá)是不可能總是按順序執(zhí)行。 問題分析和任務(wù)定義有題目可知,程序要求給定一算數(shù)表達(dá)式并計算最后的結(jié)果,我們知道,在高級語言中,任何一個表達(dá)式都是有操作數(shù)、運算符和界限符組成。合肥學(xué)院計算機(jī)科學(xué)與技術(shù)系課程設(shè)計報告20 12 ~20 13 學(xué)年第 2 學(xué)期課程數(shù)據(jù)結(jié)構(gòu)與算法 課程設(shè)計名稱算數(shù)表達(dá)式的求解學(xué)生姓名周麗娟學(xué)號1104012013專業(yè)班級11計本3班指導(dǎo)教師李紅20 13 年 3 月 【問題描述】(算數(shù)表達(dá)式的求解)給定一個算數(shù)表達(dá)式,通過程序求出最后的結(jié)果。【要求】 從鍵盤輸入要求解的算術(shù)表達(dá)式; 采用棧結(jié)構(gòu)進(jìn)行算數(shù)表達(dá)式的求解過程; 能夠判斷算數(shù)表達(dá)式的正確與否; 對于錯誤表達(dá)式給出提示; 對于正確表達(dá)時給出最后的結(jié)果。在計算過程中,還要考慮表達(dá)式中有無括號以及左右括號之分。 通過以上可知,可以用棧來實現(xiàn)運算符的優(yōu)先級完成算術(shù)表達(dá)式的求解。該算法的基本思想是:(1) 首先置操作數(shù)棧opnd為空棧,表達(dá)式結(jié)束符“”為操作符棧optr的棧底元素。 對于算術(shù)表達(dá)式的輸入,本程序采用gets()的方法讀入,將運算符‘+’,‘’,‘*’,‘/’,‘(’,‘)’,‘’存儲在數(shù)組中時,定義表達(dá)式求解函數(shù),在函數(shù)中判斷讀入的字符,如果是運算符,將這些字符入操作符optr棧,并比較優(yōu)先級,判斷是否運算。數(shù)據(jù)結(jié)構(gòu)的選擇和概要設(shè)計(1) 存儲結(jié)構(gòu)設(shè)計本程序主要采用順序棧結(jié)構(gòu)類型(Stack)來存儲表達(dá)式計算中的數(shù)據(jù)。(2) 算數(shù)優(yōu)先級設(shè)計 對一任意的表達(dá)式,由于表達(dá)式中運算符的優(yōu)先級不同,可能會使表達(dá)式不按順序進(jìn)行計算。令函數(shù)返回值為39。并將當(dāng)前運算符進(jìn)optr棧。39。 如果當(dāng)前元素的優(yōu)先級等于棧頂運算符的優(yōu)先級,即op=c;令函數(shù)的返回值為39。此時界限符內(nèi)的表達(dá)式已計算完畢。每個函數(shù)都有其相對應(yīng)的功能實現(xiàn)。 運算符比較優(yōu)先級函數(shù) char Proceed(char op,char c)。 實現(xiàn)表達(dá)式的求值函數(shù) int EvalExpres(void)。 入棧函數(shù) void Push(Stack *s, int x)。 取棧頂元素函數(shù) int GetTop(Stack *s) 。 主函數(shù) int main() 3)函數(shù)之間主要調(diào)用的關(guān)系圖 本程序主要包含10個程序,各程序之間的關(guān)系如圖所示:(部分函數(shù)用以上的編號表示)Void main()Int EvalExpres(void) 圖2:函數(shù)之間調(diào)用關(guān)系圖 詳細(xì)設(shè)計和編碼(1)、結(jié)構(gòu)體類型的定義 typedef struct{ int data[MAXSIZE]。 int base。 (2) 、全局變量定義//以下為函數(shù)聲明void InitStack(Stack *)。 //判空棧 void Push(Stack *, int )。//出棧 int GetTop(Stack *)。 // 計算結(jié)果 char Proceed(char ,char )。 //判斷輸入符int EvalExpres(void)。 (3) 、系統(tǒng)主要子程序的詳細(xì)設(shè)計 1)、主函數(shù)模塊設(shè)計int main()//主函數(shù){ int v。 while(1) { printf(\t************歡迎使用算術(shù)表達(dá)式的求解的小程序************\n)。 printf(\t表達(dá)式的計算結(jié)果為:%d,v)。n39。 do { scanf(%c,amp。 if(ch == 39。 || ch == 39。) exit(0)。\n39。 system(cls)。 }在主函數(shù)中,設(shè)定用戶操作界面的形式,通過調(diào)用表達(dá)式求解的子函數(shù)實現(xiàn)算法所要實現(xiàn)的功能,然后通過while()循環(huán)語句控制,可以實現(xiàn)多次調(diào)試。 int d1 = a。 //把字符ab變?yōu)閷?yīng)數(shù)字 switch(a1) { case 39。: s = d1+d2。 case 39。:
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1