下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、6.1 模塊化帶來的好處,從軟件工程的角度上說,降低程序復(fù)雜性的有效方法是合理的模塊化和局部化。在設(shè)計(jì)一個復(fù)雜的程序時,往往把整個程序劃分為若干個功能較為單一的模塊,分別予以實(shí)現(xiàn),再把所有的模塊像搭積木一樣搭起來,這種在程序設(shè)計(jì)中分而治之的策略,被稱為模塊化程序設(shè)計(jì)方法。在C+中,這些模塊就是一個個的函數(shù),函數(shù)也是C+構(gòu)造程序的重要的基本單位。 語句是構(gòu)成程序的最基本單位,函數(shù)也是由語句構(gòu)成的,從程序設(shè)計(jì)的角度上說,函數(shù)(一系列語句)常被當(dāng)成一個整體來看,這就降低了程序的復(fù)雜度。,6.1.1 函數(shù)的調(diào)用過程,在前面的學(xué)習(xí)中大家已經(jīng)熟悉了main()函數(shù),一個C+程序里包含一個主函數(shù)(即main
2、函數(shù))和若干個其它函數(shù),main()處于最頂層,其他函數(shù)作為其下層模塊,main()函數(shù)調(diào)用其它函數(shù),其它函數(shù)之間也可以互相調(diào)用。圖6.1為一個C+程序的模塊結(jié)構(gòu)圖,程序的執(zhí)行過程為ABCDEFGHIJKMN。 任何一個C+程序都是從main()函數(shù)開始執(zhí)行,而且是只執(zhí)行main()函數(shù),從main()的前花括號開始,到main()的后花括號為止,在此過程中,如果碰到函數(shù)調(diào)用語句(如中的“函數(shù)1;”),便暫時中斷main()的執(zhí)行,將程序流程轉(zhuǎn)到被調(diào)用函數(shù)(對應(yīng)中的B),執(zhí)行完被調(diào)用函數(shù)或遇到return語句則返回main()函數(shù)(對應(yīng)中的H),繼續(xù)執(zhí)行,一個函數(shù)也可以調(diào)用其他函數(shù)(如中函數(shù)1
3、調(diào)用函數(shù)3),這時的調(diào)用過程與main()函數(shù)調(diào)用其他函數(shù)過程類似,常稱為函數(shù)嵌套。,6.1.2 抽象和封裝,面向過程的程序設(shè)計(jì)是基于功能分析的,最關(guān)心的是如何實(shí)現(xiàn)一個模塊的功能以及如何使用這個模塊,至于模塊內(nèi)部的結(jié)構(gòu),對其他模塊來說是不重要的,完全可隱藏的。對函數(shù)而言,這個道理同樣適用,在第2章主函數(shù)小節(jié)中提到了函數(shù)由函數(shù)頭和函數(shù)體兩部分組成,而函數(shù)頭定義了函數(shù)和調(diào)用它的函數(shù)之間的接口。在C+程序中,函數(shù)可以看成一個封裝體,將一系列相關(guān)的、實(shí)現(xiàn)某一功能的代碼封裝起來,并提供了一個使用方法(程序中常稱接口),通過該接口可以在程序的任何地方使用這些代碼完成特定功能,至于函數(shù)是如何編寫的,可能并不
4、是用戶關(guān)心的重點(diǎn),用戶真正關(guān)心的是這個函數(shù)如何使用。,6.1.3 實(shí)現(xiàn)一個函數(shù),實(shí)現(xiàn)一個函數(shù)有3個步驟:定義、聲明與調(diào)用,拿電影來做比喻,定義等價于電影的拍攝,聲明等價于電影院得到放映許可,調(diào)用是電影院放電影,電影院可以自行拍攝,也可以拿別的單位拍的電影來放,在程序中,這意味著可以自己定義函數(shù),也可以使用諸如標(biāo)準(zhǔn)庫或第三方庫提供的函數(shù),但在使用前,都要進(jìn)行聲明,通知編譯器函數(shù)的存在,以獲得函數(shù)的使用許可,才能進(jìn)行調(diào)用,聲明后,程序可以多次調(diào)用函數(shù),等同于電影院在獲得放映許可后,可以多次放映影片。見示例代碼61:,6.2 函數(shù)定義,函數(shù)定義由函數(shù)頭和函數(shù)體兩部分組成,其基本形式為: 返回類型 函
5、數(shù)名(參數(shù)列表) 函數(shù)體 函數(shù)定義通過這一結(jié)構(gòu)告訴編譯器要進(jìn)行的操作。 最小的函數(shù) - 無返回值、無參數(shù) void MyFunction1(void) ,6.2.1 函數(shù)頭,第一行“返回值類型 函數(shù)名(參數(shù)列表)”稱為函數(shù)頭,定義了函數(shù)和調(diào)用它的函數(shù)之間的接口: (1)函數(shù)名 上級函數(shù)通過函數(shù)名實(shí)現(xiàn)對函數(shù)的調(diào)用,函數(shù)名是一個符合C+語法要求的標(biāo)識符,定義函數(shù)名與定義變量名的規(guī)則是一樣的,但應(yīng)盡量避免用下劃線開頭,因?yàn)榫幾g器常常定義一些下劃線開頭的變量或函數(shù)。函數(shù)名應(yīng)盡可能反映函數(shù)的功能,做到“望文知義”。 (2)參數(shù)列表 0個或多個變量,用于向函數(shù)傳送數(shù)值或從函數(shù)帶回?cái)?shù)值,每個參數(shù)都應(yīng)采取“類
6、型 變量名”形式,參數(shù)列表中的參數(shù)稱為形式參數(shù),簡稱形參。編譯器并不會在函數(shù)定義時為這些參數(shù)分配內(nèi)存空間,只有在函數(shù)調(diào)用時,向函數(shù)傳遞了實(shí)參后,這些參數(shù)才稱為程序?qū)嶓w,形參相當(dāng)于劇本中的角色,而實(shí)參是演員,在中,函數(shù)定義中的x和y是劇本角色,而變量num1和num2是演員,num1扮演了x的角色,num2扮演了y的角色。如果參數(shù)表列中參數(shù)個數(shù)為0,我們稱之為無參函數(shù),無參函數(shù)可以定義為: 返回類型 函數(shù)名( ) 或 返回類型 函數(shù)名(void) (3)返回類型 指定函數(shù)用return返回的函數(shù)值的類型,如果函數(shù)沒有返回值,返回類型應(yīng)為void。C+對返回值的類型有一定限制,不能是數(shù)組,但可以是
7、其他任何類型,如整型、浮點(diǎn)型、指針,甚至是結(jié)構(gòu)和共用體等。,6.2.2 函數(shù)體,花括號中的語句稱為函數(shù)體,一個函數(shù)的功能,通過函數(shù)體中的語句來完成,函數(shù)體指明了函數(shù)要進(jìn)行的操作及操作順序。 程序執(zhí)行到函數(shù)體中的return語句返回,在函數(shù)體中可以有多個return語句,但函數(shù)只能有一個出口,換句話說,只執(zhí)行一條返回語句,返回語句的基本形式為: return 表達(dá)式; 表達(dá)式的類型應(yīng)當(dāng)與函數(shù)頭中指定的返回類型一致,否則,編譯器會根據(jù)函數(shù)頭中指定的返回類型對表達(dá)式進(jìn)行轉(zhuǎn)換。 返回主要起如下作用: (1)撤銷函數(shù)調(diào)用時為參數(shù)和變量分配的棧內(nèi)存空間; (2)向調(diào)用函數(shù)(上級)返回最多一個值(表達(dá)式的值
8、); (3)將程序流程從當(dāng)前函數(shù)返回上級函數(shù)。 代碼6.1中,add函數(shù)的定義如下: int add (int x, int y) int z = x + y; return z; ,6.2.3 函數(shù)定義補(bǔ)充說明,當(dāng)函數(shù)的返回類型是void時,表明函數(shù)不向上級函數(shù)返回任何值,這時可以用一個空的“return;”語句,將程序流程返回,撤銷函數(shù)調(diào)用時為參數(shù)和變量分配的棧內(nèi)存空間,空的“return;”語句位于函數(shù)末尾時,該語句可以省略,用函數(shù)體的后花括號實(shí)現(xiàn)函數(shù)的返回即可。 通常用返回類型為void的函數(shù)執(zhí)行某些操作,見代碼62 。 int main() void print();/函數(shù)聲明 pr
9、int();/函數(shù)調(diào)用 return 0; void print()/函數(shù)定義,void表示沒有返回值 int n; coutn; cout你輸入的數(shù)是:nendl; ,6.3 函數(shù)聲明,函數(shù)聲明,也稱函數(shù)原型。函數(shù)聲明,用以通知編譯器函數(shù)的存在,以獲得函數(shù)的使用許可,惟其如此,才能在程序中對函數(shù)進(jìn)行調(diào)用。,6.3.1 為什么要進(jìn)行函數(shù)聲明,函數(shù)聲明描述了函數(shù)和編譯器間的接口,想要調(diào)用一個函數(shù),必須在調(diào)用函數(shù)中必須對被調(diào)用函數(shù)進(jìn)行說明。 在代碼61中,main()函數(shù)中的“int add(int x,int y);”用于在main()函數(shù)內(nèi)聲明add函數(shù),使其在main()函數(shù)內(nèi)可用,同時告訴
10、編譯器,add函數(shù)接收兩個int型的輸入?yún)?shù),如果程序沒有提供這樣的參數(shù),編譯器便會指出錯誤,或?qū)魅氲钠渌愋蛥?shù)進(jìn)行隱式轉(zhuǎn)換,在add函數(shù)完成計(jì)算后,將把返回值放置到指定位置(可能是CPU寄存器,也可能是某個內(nèi)存單元),然后上級函數(shù)(代碼61中為main()函數(shù))從這個位置取得返回值,add函數(shù)的聲明指出了返回值類型為int,編譯器借此知道應(yīng)檢索多少內(nèi)存字節(jié)并對這些字節(jié)作出解釋。圖6.2形象化地說明了代碼61中的函數(shù)聲明的作用和返回值機(jī)制。,6.3.2 如何聲明一個函數(shù),函數(shù)聲明類似于函數(shù)定義,不過沒有實(shí)現(xiàn)代碼,函數(shù)說明的一般形式如下: 返回類型 函數(shù)名(參數(shù)表列); 函數(shù)聲明是一個語句,
11、所以要以分號結(jié)束,在書寫函數(shù)聲明時,只要把函數(shù)頭復(fù)制下來,并在末尾添加分號即可。 語句結(jié)尾處有無分號常常可用來區(qū)分是函數(shù)聲明還是函數(shù)定義。 如代碼6.1中的“int add(int x, int y);”,不過,函數(shù)聲明只要與函數(shù)定義一致,能提供給編譯器足夠的信息即可,因此,C+中的函數(shù)聲明不要求提供變量名,add函數(shù)的聲明可以寫成: int add(int, int); 從中編譯器得知:函數(shù)名為add,接收兩個int型的參數(shù),返回值類型為int,這些信息已經(jīng)足夠,“int add(int x,int y);”中的變量名x和y僅僅起到增強(qiáng)程序可讀性的作用,而且,這個變量名也可以與函數(shù)定義中的形
12、參不同,也就是說,將聲明語句寫成下列形式絲毫不會影響程序的編譯和運(yùn)行。 int add(int A, int B);,6.3.3 分割程序文件,一些程序常常由許多文件組成,為了方便管理,常常將函數(shù)定義在cpp文件中,而將函數(shù)的聲明語句放在與cpp文件同名的頭文件(h文件)中,這樣就可以通過編譯預(yù)處理 #include 或#include “xxx.h” 實(shí)現(xiàn)函數(shù)的聲明,這種方法在大型程序文件的組織中十分有用,見代碼6.3。 #include 用于C+系統(tǒng)提供的頭文件,這些頭文件一般位于C+系統(tǒng)目錄下的include子目錄下,而 #include “xxx.h” 適用于用戶自己建立的頭文件,預(yù)處
13、理器接收到該指令后,會首先在當(dāng)前文件所在目錄中進(jìn)行搜尋,如果找不到,再到C+系統(tǒng)頭文件中尋找。,6.4 函數(shù)調(diào)用,在前面的代碼中,讀者已經(jīng)知道了如何調(diào)用一個函數(shù),函數(shù)定義和函數(shù)聲明的目的都是為了函數(shù)調(diào)用,唯有函數(shù)調(diào)用才是利用函數(shù)實(shí)現(xiàn)某個功能的過程,函數(shù)調(diào)用的基本形式為: 函數(shù)名(實(shí)參列表); 對于無參函數(shù),其調(diào)用形式為: 函數(shù)名(); 函數(shù)調(diào)用由函數(shù)名和函數(shù)調(diào)用運(yùn)算符()組成,()內(nèi)有0個或多個逗號分隔的參數(shù)(稱為實(shí)參)。每一個參數(shù)是一個表達(dá)式,且參數(shù)的個數(shù)與參數(shù)的類型要與被調(diào)函數(shù)定義的參數(shù)(稱為形參)個數(shù)和類型匹配,首先計(jì)算參數(shù)表達(dá)式的值,并將此值傳遞給形參。如果函數(shù)調(diào)用后有返回值,調(diào)用表達(dá)
14、式可以用在表達(dá)式中,如中的 int numTotal=add(num1,num2);,而無參函數(shù)的調(diào)用必須是一個單獨(dú)的語句,如 print();。 函數(shù)調(diào)用的主要作用是: (1)用實(shí)參向形參傳遞數(shù)據(jù); (2)為獲得數(shù)據(jù)的參數(shù)和函數(shù)中聲明的變量分配臨時存儲空間; (3)中斷當(dāng)前正在運(yùn)行的上級調(diào)用函數(shù),將程序流程轉(zhuǎn)到被調(diào)用函數(shù)的入口處。,6.4.1 形參和實(shí)參,形參和實(shí)參,類似與劇本角色和演員的關(guān)系,同一個角色可以由不同的演員來扮演,只有在演員扮演的過程中,角色才是鮮活、有意義的。前面的章節(jié)已經(jīng)提到,在函數(shù)定義時,并不會為參數(shù)列表中的參數(shù)分配內(nèi)存空間,只有在函數(shù)調(diào)用時,才為形參分配內(nèi)存空間,并用實(shí)
15、參的值為其賦值,在執(zhí)行到函數(shù)結(jié)束時,程序會撤銷調(diào)用過程中為參數(shù)和中間變量分配的內(nèi)存空間。代碼64演示了形參和實(shí)參的關(guān)系: int main() int n = 2; cout 地址: 程序運(yùn)行結(jié)果:地址:0013FF7C 數(shù)值:2 地址:0013FF2C 數(shù)值:2(注意:print函數(shù)中的參數(shù)n和main函數(shù)中的參數(shù)n占據(jù)不同的內(nèi)存地址),6.4.2 參數(shù)類型轉(zhuǎn)換,調(diào)用函數(shù)時,如果實(shí)參類型與形參類型不匹配,編譯器會對實(shí)參自動進(jìn)行類型轉(zhuǎn)換(隱式轉(zhuǎn)換),形參的類型,取決于函數(shù)的聲明語句,見代碼65。 int main() double m = 12;/聲明一個double型變量m void pri
16、nt(int);/函數(shù)聲明 print(m);/函數(shù)調(diào)用時,實(shí)參m隱式轉(zhuǎn)換為int型傳遞給形參 return 0; void print(int n)/函數(shù)定義 cout數(shù)值:nendl; 程序運(yùn)行結(jié)果:數(shù)值:2,6.4.3 值傳遞,很多C+教科書在講述函數(shù)傳值調(diào)用時都會舉下面這個例子,見代碼66 。 int main() void change(int, int);/函數(shù)聲明 int x = 2, y = 3; cout 交換前:x= x ,y= y endl; change(x, y);/傳值調(diào)用 cout 交換后:x= x ,y= y endl; return 0; void chang
17、e(int n, int m)/函數(shù)定義 int temp; temp = n; n = m; m = temp; 輸出結(jié)果: 交換前:x = 2, y = 3; 交換后:x = 2, y = 3;,6.4.4 指針傳遞,要想被調(diào)函數(shù)改變調(diào)用函數(shù)中的變量值,應(yīng)使函數(shù)中的操作直接作用在調(diào)用函數(shù)的變量上,要達(dá)到目的,一個有效途徑是使用指針傳遞,先看代碼67 。 int main() void change(int *, int *);/函數(shù)聲明,形參為指針類型 int x = 2, y = 3; cout 交換前:x= x ,y= y endl; change( 輸出結(jié)果: 交換前:x = 2,
18、y = 3; 交換后:x = 3, y = 2;,6.4.5 引用傳遞,在第4章中已經(jīng)提及,對變量的引用相當(dāng)于變量的別名,以“int ,6.4.6 對3種傳遞的補(bǔ)充(函數(shù)返回值),3種傳遞方式不僅僅是參數(shù)傳遞,函數(shù)返回某個值也有值傳遞、指針傳遞和引用傳遞3種方式。 代碼6.9是使用范例。 返回值為指針和引用類型時,要注意函數(shù)內(nèi)定義或聲明的變量為自動(臨時)變量,這些變量在函數(shù)結(jié)束后會被自動撤銷,其占用的內(nèi)存也會被系統(tǒng)收回;也就是說此時返回的指針和引用都是無效的。例如: int * minus(int m, int n) int k = 0;int * z = 函數(shù)執(zhí)行完畢后,指針z和函數(shù)中的變
19、量被撤銷,可能導(dǎo)致程序崩潰。,6.4.7 缺省參數(shù)調(diào)用,缺省參數(shù)調(diào)用的基本思想是在聲明語句中預(yù)先初始化一些參數(shù)的值,在調(diào)用語句中相應(yīng)的參數(shù)可以缺省。 缺省參數(shù)調(diào)用的規(guī)則 (1)定義時,缺省參數(shù)必須按照從右向左順序; (2)調(diào)用時,如某一參數(shù)缺省,其后的參數(shù)也必須缺省。,6.4.8 inline函數(shù),函數(shù)的引入可以減少程序的代碼量,使得函數(shù)程序可以在代碼間共享。但函數(shù)調(diào)用需要一些時空開銷,在調(diào)用函數(shù)時,要中斷調(diào)用函數(shù),將執(zhí)行流程轉(zhuǎn)移到被調(diào)函數(shù)中,待被調(diào)函數(shù)執(zhí)行完畢后,返回調(diào)用函數(shù)。因此,在調(diào)用函數(shù)前,應(yīng)保護(hù)被調(diào)函數(shù)現(xiàn)場,記錄程序當(dāng)前位置,以方便從被調(diào)函數(shù)中返回,恢復(fù)現(xiàn)場,并從原來的位置處繼續(xù)執(zhí)行
20、。 對于較長的函數(shù),這種開銷可以忽略不計(jì),但對于一些很短的、頻繁調(diào)用的函數(shù)體,這種開銷就不能不能忽視。舉例來說,代碼6.3中的print函數(shù)定義如下: void print(int x) coutxendl; ,6.5 遞歸(略),除了main()函數(shù)外,C+函數(shù)可以調(diào)用自身,這稱為遞歸,是一種通用的編程技術(shù),可以有效降低問題的復(fù)雜度,為解決某些問題提供了極大的方便,首先來看一個用以求階乘的函數(shù),對于一個整數(shù)n,其階乘n!定義為: n!=n*(n-1)*(n-2)*3*2*1 0的階乘為1,讀者可以從階乘定義中總結(jié)出以下規(guī)律,對n0而言: n!=n*(n-1)! 直觀上,可以用循環(huán)語句計(jì)算n的
21、階乘,如下列代碼所示: int Calc(int n) int res=1; for(int i=1; i=n; i+) res*=I; return res; ,6.6 函數(shù)的重載,自然語言中,一個詞可以有不同的含義,即該詞被重載了,人們可以根據(jù)上下文判斷該詞的意義,在C+程序,可以將語義、功能相似的幾個函數(shù)用同一個名字來表示,這樣便于記憶,提高了函數(shù)的易用性,稱為函數(shù)重載。函數(shù)重載的示例見代碼613 。,6.6.1 何時使用函數(shù)重載,將不相關(guān)的函數(shù)都用同樣的名字來命名不是個明智的選擇,將降低程序的可讀性,使程序難以理解,因此,函數(shù)重載必須用在合適的場合。 函數(shù)名相同,最重要的一點(diǎn)是函數(shù)要完
22、成的任務(wù)一樣(至少是類似),比如,都用來輸出信息,或都用來和某個硬件打交道等,避免函數(shù)名字相同,但功能完全不同的情形。其次,形式參數(shù)的類型應(yīng)不同,對于形參類型相同,只有形參個數(shù)不同的場合,就無需定義兩個函數(shù),采用前面提及的缺省參數(shù)調(diào)用機(jī)制,只要定義一個函數(shù)即可。 不過,如果形參類型不同,缺省參數(shù)調(diào)用便不再適用,此時,應(yīng)使用函數(shù)重載。,6.6.2 如何實(shí)現(xiàn)函數(shù)重載,當(dāng)調(diào)用多個同名的重載函數(shù)時,要求能夠唯一地確定應(yīng)執(zhí)行哪一個函數(shù),這是通過函數(shù)參數(shù)的個數(shù)和類型來區(qū)分的。所以,重載的函數(shù)要求參數(shù)個數(shù)或者參數(shù)類型上不同,否則會出現(xiàn)編譯錯誤。 C+中不允許幾個函數(shù)名相同、形參個數(shù)和類型也相同,僅僅是返回值
23、不同的情形,否則,程序編譯時會出現(xiàn)函數(shù)重復(fù)定義的錯誤,此時,編譯器無法根據(jù)返回值不同決定具體要調(diào)用的函數(shù)。,6.6.3 陷阱:隱式轉(zhuǎn)換導(dǎo)致重載函數(shù)出現(xiàn)二義性,調(diào)用重載的函數(shù)時,如果實(shí)參類型與形參類型不匹配,編譯器會對實(shí)參自動進(jìn)行類型轉(zhuǎn)換。如果轉(zhuǎn)換后仍然不能匹配到重載的函數(shù),則會產(chǎn)生一個編譯錯誤,見代碼614。,6.7 C+如何使用內(nèi)存,C+有3種管理數(shù)據(jù)內(nèi)存的方式:自動存儲(棧存儲)、靜態(tài)存儲和動態(tài)存儲(堆存儲),不同的方式下,內(nèi)存的分配形式,存在時間的長短都不同,其中,動態(tài)存儲方式已經(jīng)在第4章中進(jìn)行了介紹,下面對自動存儲和靜態(tài)存儲進(jìn)行說明。,6.7.1 自動存儲(棧存儲),對于在函數(shù)的形參、
24、內(nèi)部聲明的變量及結(jié)構(gòu)變量等,編譯器將在函數(shù)執(zhí)行時為形參自動分配存儲空間,在執(zhí)行到變量和結(jié)構(gòu)變量等的聲明語句時為其自動分配存儲空間,因此稱其為自動變量(automatic variable),有的教科書也稱其為局部變量,在函數(shù)執(zhí)行完畢返回時,這些變量將被撤銷,對應(yīng)的內(nèi)存空間將被釋放。 事實(shí)上,自動變量的生存期只局限于它所在的代碼塊。所謂代碼塊,是包含在花括號對中的一段代碼,函數(shù)只是代碼塊的一種,比較下面兩段代碼:,6.7.2 靜態(tài)存儲(編譯器預(yù)分配),每個C+程序?qū)?yīng)著一塊靜態(tài)數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū))。在源程序編譯時,編譯器就為某些程序?qū)嶓w(某些變量及所有的常量)預(yù)分配存儲地址和內(nèi)存空間,程序一開始執(zhí)行,這些程序?qū)嶓w就被創(chuàng)建,一直到程序結(jié)束才被撤銷,并釋放對應(yīng)的內(nèi)存空間,因此稱其為“永久存儲”。靜態(tài)存儲的程序?qū)嶓w的數(shù)目在程序運(yùn)行過程中是不變的,因此無須使用特殊的機(jī)制(如堆、棧)來管理它們,編譯器將分配固定的內(nèi)存塊來存儲所有的靜態(tài)存儲實(shí)體。 常量已經(jīng)在第2章進(jìn)行了詳細(xì)的介紹,下面對靜態(tài)存儲的變量進(jìn)行討論,根據(jù)用法不同,靜態(tài)存儲的變量可分為“全局變量”和“靜態(tài)變量”。,6.8 作用域與可見域,在函數(shù)一節(jié),討論形參變量時曾經(jīng)提到:形參變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物山西初中試題及答案
- 三類特種考試題庫及答案
- 2025~2026學(xué)年濟(jì)南市天橋區(qū)八年級物理第一學(xué)期期末考試試題以及答案
- 護(hù)理護(hù)理疼痛管理學(xué)課件資源
- 2026年深圳中考英語一模仿真模擬試卷(附答案可下載)
- 《GA 2309-2024警服 移民管理警察長款多功能服》專題研究報(bào)告
- 2026年深圳中考生物生物的多樣性及其保護(hù)試卷(附答案可下載)
- 2026年深圳中考生物答題技巧特訓(xùn)試卷(附答案可下載)
- 創(chuàng)新性營銷思維培訓(xùn)課件
- 行政執(zhí)業(yè)常識題庫及答案
- 民法典關(guān)于物業(yè)管理的規(guī)定課件
- 辭工欠薪協(xié)議書
- 危貨運(yùn)輸企業(yè)安全生產(chǎn)責(zé)任書范文二零二五年
- 2025年安徽糧食工程職業(yè)學(xué)院單招綜合素質(zhì)考試題庫完整
- 2025年土地代持租賃協(xié)議
- 影視項(xiàng)目策劃與后期制作流程
- 相信我支持我作文3篇
- (完整版)韓國商法
- 《既有工業(yè)區(qū)改造環(huán)境提升技術(shù)導(dǎo)則》
- 湖北省荊州市八縣市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 五年級上冊道德與法治期末測試卷推薦
評論
0/150
提交評論