版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告20 12 20 13 學(xué)年第 2 學(xué)期課程數(shù)據(jù)結(jié)構(gòu)與算法 課程設(shè)計(jì)名稱算數(shù)表達(dá)式的求解學(xué)生姓名周麗娟學(xué)號(hào)1104012013專業(yè)班級(jí)11計(jì)本3班指導(dǎo)教師李紅20 13 年 3 月 【問題描述】(算數(shù)表達(dá)式的求解)給定一個(gè)算數(shù)表達(dá)式,通過程序求出最后的結(jié)果?!疽蟆?、 從鍵盤輸入要求解的算術(shù)表達(dá)式;2、 采用棧結(jié)構(gòu)進(jìn)行算數(shù)表達(dá)式的求解過程;3、 能夠判斷算數(shù)表達(dá)式的正確與否;4、 對(duì)于錯(cuò)誤表達(dá)式給出提示;5、 對(duì)于正確表達(dá)時(shí)給出最后的結(jié)果。1、 問題分析和任務(wù)定義有題目可知,程序要求給定一算數(shù)表達(dá)式并計(jì)算最后的結(jié)果,我們知道,在高級(jí)語言中,任何一個(gè)表達(dá)式
2、都是有操作數(shù)、運(yùn)算符和界限符組成。在計(jì)算過程中,還要考慮表達(dá)式中有無括號(hào)以及左右括號(hào)之分。由于運(yùn)算符有優(yōu)先級(jí)的高低,因此一個(gè)算數(shù)表達(dá)是不可能總是按順序執(zhí)行。 通過以上可知,可以用棧來實(shí)現(xiàn)運(yùn)算符的優(yōu)先級(jí)完成算術(shù)表達(dá)式的求解。為實(shí)現(xiàn)算法的優(yōu)先級(jí),設(shè)置兩個(gè)棧:一個(gè)稱為操作數(shù)棧opnd,用以寄存操作數(shù)和運(yùn)算結(jié)果,另一個(gè)為操作符棧optr,用以寄存運(yùn)算符。該算法的基本思想是:(1) 首先置操作數(shù)棧opnd為空棧,表達(dá)式結(jié)束符“#”為操作符棧optr的棧底元素。(2)依次讀入表達(dá)式中每個(gè)字符,若為操作數(shù),則進(jìn)opnd棧;若是運(yùn)算符,則與optr棧的棧頂運(yùn)算符比較優(yōu)先級(jí)后做相應(yīng)操作:若當(dāng)前操作符大于optr
3、棧的棧頂,則當(dāng)前操作符入棧;否則,opnd棧的棧頂元素、次棧頂元素出棧,同時(shí)optr棧的棧頂元素也出棧,形成運(yùn)算,并將結(jié)果壓入opnd棧,直至整個(gè)表達(dá)式求值完畢(即optr棧的棧頂元素和當(dāng)前讀入的字符均為“#”)。 對(duì)于算術(shù)表達(dá)式的輸入,本程序采用gets()的方法讀入,將運(yùn)算符+,-,*,/,(,),#存儲(chǔ)在數(shù)組中時(shí),定義表達(dá)式求解函數(shù),在函數(shù)中判斷讀入的字符,如果是運(yùn)算符,將這些字符入操作符optr棧,并比較優(yōu)先級(jí),判斷是否運(yùn)算。若讀入的字符為0到9之間的數(shù)字時(shí),用字符相減轉(zhuǎn)化為整型,然后將轉(zhuǎn)化后的整型再轉(zhuǎn)化為ASCII的形式壓入操作數(shù)棧opnd中。2、數(shù)據(jù)結(jié)構(gòu)的選擇和概要設(shè)計(jì)(1) 存儲(chǔ)
4、結(jié)構(gòu)設(shè)計(jì)本程序主要采用順序棧結(jié)構(gòu)類型(Stack)來存儲(chǔ)表達(dá)式計(jì)算中的數(shù)據(jù)。程序中需要建立兩個(gè)棧,一個(gè)棧用于寄存運(yùn)算符,另一個(gè)則用于寄存操作數(shù)和計(jì)算結(jié)果,故需要建立兩個(gè)順序棧結(jié)構(gòu)類型。(2) 算數(shù)優(yōu)先級(jí)設(shè)計(jì) 對(duì)一任意的表達(dá)式,由于表達(dá)式中運(yùn)算符的優(yōu)先級(jí)不同,可能會(huì)使表達(dá)式不按順序進(jìn)行計(jì)算。在本程序中定義函數(shù)Proceed()來比較運(yùn)算符的優(yōu)先級(jí),而函數(shù)中各優(yōu)先級(jí)的比較主要根據(jù)以下優(yōu)先級(jí)比較的表格:表1:運(yùn)算符優(yōu)先級(jí)運(yùn)算符+-*/()#用數(shù)字表示0123456棧內(nèi)操作符的優(yōu)先級(jí)3355160棧外操作符的優(yōu)先級(jí)2244610 在Precede()函數(shù)中定義兩個(gè)字符型參數(shù)變量op和c,其中op表示棧
5、頂運(yùn)算符,c表示當(dāng)前讀入運(yùn)算符,對(duì)于當(dāng)前運(yùn)算符是否入棧,進(jìn)行如下操作:比較當(dāng)前運(yùn)算符和棧頂運(yùn)算符的優(yōu)先級(jí)的大小: 1、如果當(dāng)前運(yùn)算符的優(yōu)先級(jí)大于棧頂運(yùn)算符的優(yōu)先級(jí),即op<c;令函數(shù)返回值為'<',并將當(dāng)前運(yùn)算符進(jìn)optr棧。 2、如果當(dāng)前運(yùn)算符的優(yōu)先級(jí)小于棧頂運(yùn)算符的優(yōu)先級(jí),即op>c;令函數(shù)返回值為'>',此時(shí)應(yīng)將棧頂運(yùn)算符出棧和棧頂、次棧頂操作數(shù)出棧并進(jìn)行相應(yīng)的運(yùn)算。 3、如果當(dāng)前元素的優(yōu)先級(jí)等于棧頂運(yùn)算符的優(yōu)先級(jí),即op=c;令函數(shù)的返回值為'=',此時(shí)界限符內(nèi)的表達(dá)式已計(jì)算完畢。(3)程序模塊設(shè)計(jì) 1)程序模塊
6、本程序主要包含3個(gè)模塊:主程序模塊、計(jì)算模塊以及順序棧操作模塊,調(diào)用關(guān)系如圖所示:順序棧操作模塊計(jì)算模塊主程序模塊 圖1:程序模塊圖 2)系統(tǒng)功能模塊 本程序大致包含10個(gè)函數(shù),其中包含主函數(shù)。每個(gè)函數(shù)都有其相對(duì)應(yīng)的功能實(shí)現(xiàn)。 操作符的輸入函數(shù) int In(char c); 運(yùn)算符比較優(yōu)先級(jí)函數(shù) char Proceed(char op,char c); 進(jìn)行四則運(yùn)算函數(shù) int Operate(int a,char a1,int b); 實(shí)現(xiàn)表達(dá)式的求值函數(shù) int EvalExpres(void); 初始化棧函數(shù) void InitStack(Stack *s); 入棧函數(shù) void P
7、ush(Stack *s, int x); 出棧函數(shù) int Pop(Stack *s); 取棧頂元素函數(shù) int GetTop(Stack *s) ; 判??蘸瘮?shù) void Empty(Stack *s); 主函數(shù) int main() 3)函數(shù)之間主要調(diào)用的關(guān)系圖 本程序主要包含10個(gè)程序,各程序之間的關(guān)系如圖所示:(部分函數(shù)用以上的編號(hào)表示)Void main()Int EvalExpres(void) 圖2:函數(shù)之間調(diào)用關(guān)系圖 3、詳細(xì)設(shè)計(jì)和編碼(1)、結(jié)構(gòu)體類型的定義 typedef struct int dataMAXSIZE; int top; int base; /棧底 Sta
8、ck; (2) 、全局變量定義/以下為函數(shù)聲明void InitStack(Stack *); /初始化棧 int Empty(Stack *); /判空棧 void Push(Stack *, int ); /進(jìn)棧 int Pop(Stack *);/出棧 int GetTop(Stack *); /取棧頂元素 int Operate(int ,char ,int ); / 計(jì)算結(jié)果 char Proceed(char ,char ); / 比較優(yōu)先級(jí) int In(char ); /判斷輸入符int EvalExpres(void); /表達(dá)式計(jì)算函數(shù)/ 定義兩個(gè)棧分別存放運(yùn)算符和操作數(shù)S
9、tack StackR,StackD; (3) 、系統(tǒng)主要子程序的詳細(xì)設(shè)計(jì) 1)、主函數(shù)模塊設(shè)計(jì)int main()/主函數(shù) int v; char ch;while(1) printf("t*歡迎使用算術(shù)表達(dá)式的求解的小程序*n"); v = EvalExpres(); printf("t表達(dá)式的計(jì)算結(jié)果為:%d",v); printf("ntInput 'n' to quit and ENTER run again:"); do scanf("%c",&ch); if(ch = '
10、;n' | ch = 'N') exit(0); while(ch!='n'); system("cls"); return 0; 在主函數(shù)中,設(shè)定用戶操作界面的形式,通過調(diào)用表達(dá)式求解的子函數(shù)實(shí)現(xiàn)算法所要實(shí)現(xiàn)的功能,然后通過while()循環(huán)語句控制,可以實(shí)現(xiàn)多次調(diào)試。 2)、計(jì)算函數(shù)模塊 int Operate(int a,char a1,int b) int s; int d1 = a; int d2 = b; /把字符ab變?yōu)閷?duì)應(yīng)數(shù)字 switch(a1) case '+': s = d1+d2; break;
11、 case '-': s = d2-d1;break; case '*': s = d1*d2; break; case '/': s = d2/d1; return (s+'0'); /將運(yùn)算結(jié)果轉(zhuǎn)化為ascii碼的形式入棧, 在計(jì)算函數(shù)中,定義3個(gè)變量,表示基本運(yùn)算中的變量。采用開關(guān)語句實(shí)現(xiàn)表達(dá)式的基本運(yùn)算,將運(yùn)算結(jié)果轉(zhuǎn)化為ASCII的形式返回。 3)、表達(dá)式求解的函數(shù)模塊 int EvalExpres(void) / 表達(dá)式求解函數(shù) int a,b,i=0,s=0; char c80,r; InitStack(&St
12、ackR); /初始化棧 Push(&StackR,'#'); /將表達(dá)式起始符壓入棧 InitStack(&StackD); printf(" t請(qǐng)輸入表達(dá)式并以#結(jié)束:"); gets(c); while(ci!='#' | GetTop(&StackR)!='#') if(!In(ci) /判斷讀入的字符是不是運(yùn)算符 不是則進(jìn)opnd棧 if(ci >= '0' && ci <= '9') s += ci-'0' /字符的
13、ascii相減將字符型轉(zhuǎn)化為整型 while(!In(c+i) /繼續(xù)判斷下一個(gè)字符,若不是運(yùn)算符,表明為多位數(shù),直到讀取到字符為運(yùn)算符為止 s*=10; s += ci-'0' Push(&StackD,s+'0'); /將整型轉(zhuǎn)化為ascii的形式入棧,使字符在棧內(nèi)以ascii的形式保存,實(shí)現(xiàn)多位數(shù)的計(jì)算 s = 0; /初始化s,繼續(xù)判斷 else printf("你輸入的表達(dá)式有誤!n"); return 0; else switch(Proceed(GetTop(&StackR),ci) /此函數(shù)用來比較讀取的運(yùn)算符
14、和棧頂運(yùn)算符的優(yōu)先級(jí) case '<': /棧頂?shù)脑貎?yōu)先級(jí)低,當(dāng)前運(yùn)算符入棧 Push(&StackR,ci); i+; break; case '=': Pop(&StackR); i+; break; case '>': /棧頂?shù)膬?yōu)先級(jí)高則出棧,并將計(jì)算結(jié)果壓入棧內(nèi) r = Pop(&StackR); a = Pop(&StackD)-'0' /操作數(shù)在棧內(nèi)以ascii的形式存儲(chǔ),出站后要將ascii轉(zhuǎn)化為整型,然后進(jìn)行運(yùn)算 b = Pop(&StackD)-'0&
15、#39; Push(&StackD,Operate(a,r,b) ; break; return (GetTop(&StackD)-'0'); / 將棧頂元素轉(zhuǎn)化為整型的形式輸出 對(duì)于表達(dá)式求解函數(shù),在程序中主要思想是對(duì)讀入的表達(dá)式進(jìn)棧進(jìn)行判斷。若讀入的是0到9之間的字符,將這些字符采用ascii相減的形式轉(zhuǎn)化為整型,再入opnd棧,若讀入的字符為運(yùn)算符,則將運(yùn)算符入棧,并比較運(yùn)算符之間的優(yōu)先級(jí),看是否運(yùn)算,若棧頂?shù)倪\(yùn)算符小于當(dāng)前輸入的運(yùn)算符,則不需運(yùn)算,只要將當(dāng)前運(yùn)算符入棧即可。否則,運(yùn)算。運(yùn)算時(shí)先將optr棧的棧頂運(yùn)算符和opnd棧的棧頂、次棧頂元素出棧,并
16、將opnd棧中出棧的元素的ASCII形式轉(zhuǎn)化為整型再計(jì)算,最后講計(jì)算結(jié)果再轉(zhuǎn)化為ASCII碼的形式壓入opnd棧中。使表達(dá)式求解函數(shù)返回值為opnd的棧頂元素。4、上級(jí)調(diào)試過程遇到問題以及解決方案 問題1、調(diào)試時(shí)沒有錯(cuò)誤,但運(yùn)行時(shí)顯示錯(cuò)誤。解決方案:通過它提示的錯(cuò)誤和警告,在判斷是否為運(yùn)算符的子函數(shù)中出現(xiàn)錯(cuò)誤,如果為運(yùn)算符時(shí)返回1,其次返回0,在返回0時(shí)沒有用else,這樣使得整個(gè)子函數(shù)可以返回一個(gè)有效值。 問題2、調(diào)試時(shí)程序顯示沒有錯(cuò)誤,可以運(yùn)行,但在運(yùn)行時(shí)結(jié)果卻出現(xiàn)錯(cuò)誤。解決方案:把程序從頭看了一遍,發(fā)現(xiàn)在比較優(yōu)先級(jí)的函數(shù)中,優(yōu)先級(jí)的比較比較亂,而且部分出錯(cuò),后來查了關(guān)于運(yùn)算符優(yōu)先級(jí)的資料
17、,通過在紙上把各種優(yōu)先級(jí)列出,解決這個(gè)錯(cuò)誤。算法的時(shí)間復(fù)雜度 由于在主函數(shù)用到嵌套循環(huán),故算法的時(shí)間復(fù)雜度為O(n2)。5、 測(cè)試結(jié)果及其分析 (1)、實(shí)現(xiàn)基本的加減乘除運(yùn)算,當(dāng)想要繼續(xù)輸入表達(dá)式時(shí)點(diǎn)擊enter鍵,若要結(jié)束,點(diǎn)擊n或N鍵即可,而且可實(shí)現(xiàn)多位數(shù)的運(yùn)算。(2)、實(shí)現(xiàn)復(fù)雜的算術(shù)表達(dá)式(3)、錯(cuò)誤表達(dá)式的處理6、用戶使用說明 (1)本程序執(zhí)行的文件為“算數(shù)表達(dá)式的求解問題”。 (2)所求表達(dá)式中都只是僅包含加、減、乘、除4種基本運(yùn)算的,其中也包含括號(hào)的應(yīng)用,所有的運(yùn)算對(duì)象均為簡(jiǎn)單變量,要求將表達(dá)式中的數(shù)字字符轉(zhuǎn)化為整型,且輸入表達(dá)式以“#”結(jié)束。 (3)輸入表達(dá)式時(shí),以#結(jié)束,當(dāng)點(diǎn)擊
18、回車鍵時(shí)即可得到運(yùn)算結(jié)果,當(dāng)想繼續(xù)輸入表達(dá)式時(shí),再次點(diǎn)擊回車鍵即可,當(dāng)想結(jié)束時(shí),點(diǎn)擊字母n或N。 (4)當(dāng)輸入錯(cuò)誤表達(dá)式時(shí),程序會(huì)給出相應(yīng)的提醒。7、 參考文獻(xiàn) (1)王昆侖 、李紅主編,數(shù)據(jù)結(jié)構(gòu)與算法,北京:中國鐵道出版社,2007年5月 (2)阮宏一 、魯靜主編,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(C/C+描述),北京:電子工業(yè)出版社,2011年1月8、 附錄(源程序):#include <malloc.h>#include <stdio.h>#define MAXSIZE 16typedef struct int dataMAXSIZE; int top; int base; /棧
19、低 Stack; / 順序棧的定義/以下為函數(shù)聲明void InitStack(Stack *); /初始化棧 int Empty(Stack *); /判空棧 void Push(Stack *, int ); /進(jìn)棧 int Pop(Stack *);/出棧 int GetTop(Stack *); /取棧頂元素 int Operate(int ,char ,int ); / 計(jì)算結(jié)果 char Proceed(char ,char ); / 比較優(yōu)先級(jí) int In(char ); /判斷輸入符int EvalExpres(void); /表達(dá)式計(jì)算函數(shù)/ 定義兩個(gè)棧分別存放運(yùn)算符和操作
20、數(shù)Stack StackR,StackD; int main()/主函數(shù) int v; char ch;while(1) printf("t*歡迎使用算術(shù)表達(dá)式的求解的小程序*n"); v = EvalExpres(); printf("t表達(dá)式的計(jì)算結(jié)果為:%d",v); printf("ntInput 'n' to quit and ENTER run again:"); do scanf("%c",&ch); if(ch = 'n' | ch = 'N'
21、) exit(0); while(ch!='n'); system("cls"); return 0; void InitStack(Stack *s) /初始化棧 s->top = 0; s->base = 0; int Empty(Stack *s)/判斷棧是否為空 if(s->top =s->base) return 1; /??諘r(shí)返回1,否則返回0 else return 0; void Push(Stack *s, int x) / 進(jìn)棧 if(s->top = MAXSIZE) printf("terror
22、!n");exit(0); else s->datas->top = x; s->top+; int Pop(Stack *s)/ 出棧 int e; if(Empty(s) printf("terror!n"); exit(0); else s->top-; e = s->datas->top; return e; int GetTop(Stack *s) /取棧頂元素 if(Empty(s) printf("terror!n"); exit(0); else return s->datas->
23、top-1; int EvalExpres(void) / 表達(dá)式求解函數(shù) int a,b,i=0,s=0; char c80,r; InitStack(&StackR); Push(&StackR,'#'); InitStack(&StackD); printf(" t請(qǐng)輸入表達(dá)式并以#結(jié)束:"); gets(c); while(ci!='#' | GetTop(&StackR)!='#') if(!In(ci) /判斷讀入的字符不是運(yùn)算符 是則進(jìn)棧 if(ci >= '0
24、9; && ci <= '9') s += ci-'0' /字符相減將字符型轉(zhuǎn)化為整型 while(!In(c+i) /繼續(xù)判斷下一個(gè)字符,若不是運(yùn)算符,表明為多位數(shù),直到讀取到字符為運(yùn)算符為止 s*=10; s += ci-'0' Push(&StackD,s+'0'); /將整型轉(zhuǎn)化為ascii的形式入棧,使字符在棧內(nèi)以ascii的形式保存,實(shí)現(xiàn)多位數(shù)的計(jì)算 s = 0; /初始化s,繼續(xù)判斷 else printf("t你輸入的表達(dá)式有誤!n"); exit(0); else
25、 switch(Proceed(GetTop(&StackR),ci) /此函數(shù)用來比較讀取的運(yùn)算符和棧頂運(yùn)算符的優(yōu)先級(jí) case '<': /棧頂?shù)脑貎?yōu)先級(jí)低,當(dāng)前運(yùn)算符入棧 Push(&StackR,ci); i+; break; case '=': Pop(&StackR); i+; break; case '>': /棧頂?shù)膬?yōu)先級(jí)高則出棧,并將計(jì)算結(jié)果壓入棧內(nèi) r = Pop(&StackR); a = Pop(&StackD)-'0' /操作數(shù)在棧內(nèi)以ascii的形式
26、存儲(chǔ),出站后要將ascii轉(zhuǎn)化為整型,然后進(jìn)行運(yùn)算 b = Pop(&StackD)-'0' Push(&StackD,Operate(a,r,b) ; break; return (GetTop(&StackD)-'0'); / 將棧頂元素轉(zhuǎn)化為整型的形式輸出 int In(char c) /判斷C是否為運(yùn)算符是返回1否則返回0 char ch7='+','-','*','/','#','(',')' int i; for(i
27、 = 0; i < 7; i+) if(c = chi) return 1; return 0; char Proceed(char op,char c) /op為棧頂元素,c為當(dāng)前讀入的運(yùn)算符,比較二者的優(yōu)先級(jí) char ch; if(op='(' && c=')' | op='#' && c='#' ) ch = '=' else if(op='+' | op='-') /*棧頂元素為+或-的時(shí)候*/ switch(c) case '
28、+': case '-': case ')': case '#': ch = '>' break; case '*': case '/': case '(': ch = '<' else if(op='*' | op='/') /*棧頂元素為*或/的時(shí)候*/ switch(c) case '+': case '-': case '*': case '/'
29、: case ')': case '#': ch = '>' break; case '(': ch = '<' else if(op='(') /*棧頂元素為(的時(shí)候*/ switch(c) case '+': case '-': case '*': case '/': case '(': ch = '<' break; case '#': printf("t
30、Error!沒有右括號(hào)!n"); exit(0); else if(op=')') /棧頂元素為)的時(shí)候 switch(c) case '+': case '-': case '*': case '/': case '#': ch = '>' break; case '(': printf("tError!括號(hào)匹配錯(cuò)誤!n"); exit(0); else if(op='#') /棧頂元素為#的時(shí)候 switch(c
31、) case '+': case '-': case '*': case '/': case '(': ch = '<' break; case ')': printf("tError!沒有左括號(hào)!n");exit(0); return ch; int Operate(int a,char a1,int b) int s; int d1 = a; int d2 = b; /把字符ab變?yōu)閷?duì)應(yīng)數(shù)字 switch(a1) case '+': s
32、= d1+d2; break; case '-': s = d2-d1;break; case '*': s = d1*d2; break; case '/': if(d1!=0)s = d2/d1;else printf("t除數(shù)不可以為0!n");exit(0); return (s+'0'); /將運(yùn)算結(jié)果轉(zhuǎn)化為ascii碼的形式入棧, 9JWKffwvG#tYM*Jg&6a*CZ7H$dq8KqqfHVZFedswSyXTy#&QA9wkxFyeQ!djs#XuyUP2kNXpR89Am
33、YWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxG89AmUE9aQGn8xp$R#͑GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!
34、z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z8vG#tYM*Jg&6a*CZ7H$dq8KqqfHVZFedswSyXTy#&QA9wk
35、xFyeQ!djs#XuyUP2kNXpRWXmA&UE9aQGn8xp$R#͑GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxG
36、jqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmUE9aQGn8xp$R#͑GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$v
37、STT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD
38、6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNuGK8!z89AmYWpazadNu#KN&MuW
39、FA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&
40、amp;qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89Amv$UE9wEw
41、Z#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&
42、ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz84!z89Amv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5p
43、Dx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpazadNu#KN&Mu
44、WFA5uxY7JnD6YWRrWwcvR9&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpaz
45、adNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNuGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#K
46、N&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%M
47、z849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqvadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%M
48、z849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6
49、X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89Amv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&am
50、p;gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWv*3tnGK8!z89
51、AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$U*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz84!z89Amv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTX
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 以展興城會(huì)展業(yè)對(duì)城市發(fā)展的推動(dòng)作用
- 傳統(tǒng)禮儀在家庭教育中的重要性及實(shí)踐
- 2024屠戶生豬代宰與屠宰企業(yè)安全生產(chǎn)責(zé)任合同3篇
- 2025中國鐵路南寧局集團(tuán)限公司招聘高校畢業(yè)生1423人一(高等職業(yè)院校)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國神華煤制油化工限公司社會(huì)招聘9人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國石化天津石化分公司畢業(yè)生招聘40人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國旅游集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中冶沈勘招聘145人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年陜西銅川市事業(yè)單位招聘工作人員87人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年湖北黃石事業(yè)單位聯(lián)考高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國際郵輪產(chǎn)業(yè)及未來郵輪
- 小學(xué)第四季度意識(shí)形態(tài)分析研判報(bào)告
- 數(shù)字孿生智慧水利建設(shè)方案
- 國企市場(chǎng)化選聘經(jīng)理層聘任協(xié)議模板
- 焊接工藝流程圖
- 《水晶知識(shí)培訓(xùn)》課件
- 基坑開挖及支護(hù)監(jiān)理細(xì)則(上傳)
- 10kV電流互感器交接試驗(yàn)作業(yè)指導(dǎo)書
- 現(xiàn)代生命科學(xué)與人居環(huán)境智慧樹知到課后章節(jié)答案2023年下同濟(jì)大學(xué)
- 2023-2024學(xué)年北京市海淀區(qū)六年級(jí)數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測(cè)試題含答案
- 2023-2024學(xué)年山東省濟(jì)南市中區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末統(tǒng)考試題含答案
評(píng)論
0/150
提交評(píng)論