已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第一章語言的特點及上機指導語言的特點簡潔、緊湊,使用方便、靈活,易于學習和應用。語言是面向結(jié)構(gòu)化程序設計的語言。允許直接對位、字節(jié)、和地址進行操作。運算符及數(shù)據(jù)類型(結(jié)構(gòu))豐富。語言生成的目標代碼質(zhì)量高,可移植性好。程序的上機步驟()在UNIX操作系統(tǒng)下運行C程序的步驟用編輯程序(如UNIX系統(tǒng)的廣西行編輯程序ED,或屏幕編輯程序VI)將源程序輸入計算機,經(jīng)修改后存入文件系統(tǒng)(源程序的后輟一般為“C”)。編譯。調(diào)用編譯程序CC對源文件進行編譯CCFC(FC為要編譯的文件)連接。將目標程序的庫函數(shù)或其它目標程序連接成可執(zhí)行的目標程序。在UNIX系統(tǒng)下,連接是由CC自動完成的。最后得到的可執(zhí)行目標文件名由系統(tǒng)自動確定為AOUT。若想指定文件名在編譯時可打入命令CCOFOUTFC執(zhí)行程序。輸入可執(zhí)行目標文件名后回車即可。以上過程可用下圖表示開始編輯源程序FC編譯目標程序有錯FC無連接庫函數(shù)可執(zhí)行和其它目目標程序標程序AOUT執(zhí)行結(jié)果正確結(jié)束()、在DOS下用MS編譯程序運行程序的步驟編輯源程序??捎眯芯庉嫵绦駿DLIN或WORDSTAR。編譯。要經(jīng)過道編譯,或稱次掃描。假設文件名為則編譯命令為CC1FC(第一次,作用為預處理)CC2FC(第二次,語法分析)CC3FC(第三次,編譯)CC4FC(第四次,優(yōu)化編譯)連接。將編譯好的目標文件同庫函數(shù)連接起來。最簡單命令為LINKF,CSLIB注CSLIB是系統(tǒng)庫(CSYSTEMLIBRARY)的縮寫。鏈接成功后得到的可執(zhí)行文件名自動定為FEXE(文件名與源文件名相同,后綴改為EXE)。執(zhí)行程序。只需輸入目標文件名F()用URBO運行程序的步驟先將裝入磁盤。調(diào)用URBO程序TC屏幕頂部出現(xiàn)一排“命令”行菜單FILEEDITRUNCOMPILEPROJECTOPTIONSDEBUG用光標鍵來選擇各菜單項進行相應操作。編輯源文件。根據(jù)需要輸入或修改源程序。編譯源程序。按“F9”鍵即可進行編譯、連接,并在屏幕上顯示有無錯誤和有幾個錯誤。根據(jù)此信息修改源程序,然后再重復此項操作。執(zhí)行程序。按“F10”鍵,屏幕又出現(xiàn)上述菜單,選中RUN即可執(zhí)行程序??捎谩癆LT”和“X”鍵脫離TURBO,回到操作命令狀態(tài),此時可用系統(tǒng)命令顯示源程序和運行程序TYPEFC(列出源程序清單)F(執(zhí)行目標程序FEXE)第二章數(shù)據(jù)類型語言的基本符號、基本符號26個英文字母(大小寫表示分別表示兩個不同的字符)10個阿拉伯數(shù)字()其它特殊符號,以運算符為主(、等)、標識符()基本概念在語言中變量名、數(shù)組名、函數(shù)名和其它由用戶自定義的數(shù)據(jù)類型名,被統(tǒng)稱為標識符。()標識符的書寫規(guī)則只能由英文字母、數(shù)字和下劃線構(gòu)成;必須以字母或下劃線開頭;不能以保留字作為標識符。、函數(shù)語言的源程序由一個或多個函數(shù)組成,每個函數(shù)完成一種指定的操作,所以有人又把語言稱為函數(shù)式語言。構(gòu)成語言的函數(shù)必須有一個主函數(shù)(即MAIN函數(shù)),在語言的源程序結(jié)構(gòu)中不可缺少的語句是“;”。語言的數(shù)據(jù)類型、概述一個程序應包括兩個方面的主要內(nèi)容()數(shù)據(jù)的描述;()操作步驟,即動作的描述??梢赃@樣表示程序算法數(shù)據(jù)結(jié)構(gòu)程序設計方法語言工具、數(shù)據(jù)類型整型字符型單精度型實型(浮點型)枚舉類型雙精度型數(shù)組類型數(shù)據(jù)類型構(gòu)造類型結(jié)構(gòu)體類型共用體類型指針類型空類型常量和符號常量、基本概念在程序運行過程中,其值不能被改變的量稱為常量。可以用一個標識符代表一個常量,這種用一個標識符代表一個常量的,稱為符號常量。即標識符形式的常量。、符號常量的特點一是符號常量的實際值易于修改;二是符號常量的意義比較明確。、關(guān)于符號常量的說明符號常量在程序中用DEFINE命令行定義,常量名后跟它代表的常量;符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值;習慣上符號常量名用大寫,變量用小寫,以示區(qū)別。常量的類型常量的類型有整型常量、實型常量、字符型常量和字符串常量四種。、整型常量()概述整型常量即整常數(shù)。整常數(shù)可用以下三種形式表示十進制整數(shù)?;绢愋桶诉M制整數(shù)。以開頭的數(shù)是八進制數(shù)。如011,代表八進制數(shù)11。十六進制整數(shù)以0X開頭的數(shù)。如0X123,代表16進制數(shù)123。()整型常量的類型INT型其值在3276732768范圍內(nèi)??少x給INT型和LONGINT型變量。LONGINT型其值范圍在21474836482147483647內(nèi)。SHORTINT型范圍同INT型。一個INT型的常量同時也是一個SHORTINT型常量。注意一個整型常量可以賦給一個長度不小于其長度的整型變量。在一個整常量后面加一個字母L或L,則認為是LONGINT型常量。這往往用于函數(shù)調(diào)用中。、實型常量又叫浮點數(shù)。有兩種表示形式十進制數(shù)形式。由數(shù)字和小數(shù)點組成。(424也是一個常量)指數(shù)形式如123E3或123E3都代表123103。應注意字母E(或E)之前必須有數(shù)字,且E后面指數(shù)必須為整數(shù),如21E35、E3E等都不是合法的指數(shù)形式。、字符型常量()概述字符型常量是用單引號括起來的一個字符。如A、A、等。注意A和A是不同的常量。還允許用一種特殊的字符常量,就是以一個“”開頭的字符序列。這些字符通常是一些轉(zhuǎn)義字符,如101(101為ASCII碼(八進制)代表字符A。012代表“換行”。代表“回車”。字符常量一般用于替換操作。由預處理命令(DEFINE)定義,其命令行一般放在源程序中最前面部分。表常用的特殊字符(“轉(zhuǎn)義字符”)字符形式功能換行橫向跳格(即跳到下一個輸出區(qū))豎向跳格退格回車走紙換頁反斜杠字符“”單引號(撇號)字符DDD到位進制數(shù)所代表的字符XHH到位16進制數(shù)所代表的字符說明“轉(zhuǎn)義字符”以反斜杠打頭,用來輸出一些無法象一般字符那樣明確寫出來的字符。()字符型數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法將一個字符常量放到一個字符變量中,實際上并不是把字符本身放到內(nèi)存單元中,而是將該字符的相應的ASCII碼放到存儲單元中。它的存儲形式與整數(shù)的存儲形式相類似。所以字符型數(shù)據(jù)和整整數(shù)據(jù)之間可以通用。字符型數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。也可以對字符型數(shù)據(jù)進行算術(shù)運算。字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值。如INTICHARCIA;C97;注意有些系統(tǒng)(如PDP,VAX,TURBO)將字符變量所占用的字節(jié)的最高位當成符號位,即把字符處理成帶符號的整數(shù),這樣輸出結(jié)果與人們習慣不一致,容易出錯。、字符串常量字符串常量是用一對雙引號括起來的字符序列。如“HOWDOYOUDO”,“CHINA”,“”,“12345”。規(guī)定在每一個字符串的結(jié)尾處加一個“字符串結(jié)束標志00是一個ASCII碼為0的字符,即“空操作字符”,它不引起任何控制動作,也不是一個可顯示的字符。字符串的長度比它實際字符的個數(shù)多一(有一個結(jié)束標志0,該字符在字符串輸出時并不輸出)。需要用字符數(shù)組來存放。變量一、基本概念規(guī)定在程序中所有用到的變量都必須在程序中指定其類型,即“定義”。對變量的定義,一般是放在一個函數(shù)的開頭部分。變量定義的一般形式為變量類型變量名變量可以一次性定義一個也可以一次性定義多個,但定義多個變量時,只能同時定義同種類型的變量,變量間用豆號隔開。如定義兩個整型變量INTABJ,ABJ;說明變量名的命名規(guī)則與標識符的一樣。習慣上變量名用小寫字母。二、變量的類型變量可分為整型、實型、字符型等。、整型變量()整型變量的分類基本型以INT表示。短整型以SHORTINT表示?;騍HORT表示。長整型以LONGINT表示。或以LONG表示。無符號型存儲單元中全部二進位用作存放數(shù)本身,而不包括符號。又分為無符號整型、無符號短整型、無符號長整型。()各種類型(整型)的數(shù)據(jù)范圍見下表表類型所占位數(shù)數(shù)的范圍INT163276832767即215(2151)SHORTINT16同上LONGINT3221474836482147483647即31(311)UNSIGNEDINT16065535即0(2151)UNSIGNEDSHORT16同上即0(2151)UNSIGNEDLONG32042894967295即0(311)、實型變量實型變量分為單精度(FLOAT型)和雙精度(DOUBLE型)兩類。在一般系統(tǒng)中,一個FLOAT型數(shù)據(jù)在內(nèi)存中占個字節(jié),一個DOUBLE型數(shù)據(jù)占個字節(jié)。FLOAT型實數(shù)提供位有效數(shù)字,DOUBLE型提供1516位有效數(shù)字,數(shù)值的范圍隨機器系統(tǒng)而異。在IBMPCMSC中,單精度實數(shù)的數(shù)值范圍約為10381038,雙精度實數(shù)范圍約為1030810308。、字符變量字符型變量用來存放字符型常量,一個字符變量只能放一個字符。字符型變量用“CHAR”來定義,一般以一個字節(jié)來存放一個字符變量,或者說一個字符變量在內(nèi)存中占一個字節(jié)。字符變量可以接收整型數(shù)據(jù)。三、變量賦初值程序中需要對一些變量預先設置初值。定義變量時賦初值INTZJJ,KD;先定義然后再賦初值INTZJJ;ZJJ;注意定義變量時不能以連等的形式給多個變量賦同一值。也不能同時在定義一個變量后,接著給該變量賦值。如INTJ,J;以及INTAK1AK2AK3;都是錯誤的。初始化不是在編譯階段完成的(靜態(tài)存儲變量和外部變量的初始化除外),而是在程序運行時執(zhí)行本函數(shù)時賦以初值的。相當于有一個賦值語句。例如INT;相當于INT;各類數(shù)值型數(shù)據(jù)間的混合運算整型、單精度型、雙精度型數(shù)據(jù)可以混合運算。整型、實型、字符型數(shù)據(jù)間也可以混合運算。如101587651234是合法的。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換的規(guī)則如右圖。轉(zhuǎn)換過程是由系統(tǒng)自動進行的。第三章運算符與表達式DOUBLEFLOAT高LONGUNSIGNED低INTCHAR,SHORT語言的運算符范圍很寬,把除了控制語句和輸入輸出以外的幾乎所有的基本操作都作為運算符處理。算術(shù)運算符及算術(shù)表達式、基本的算術(shù)運算符(見下表)、算術(shù)表達式用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。說明如果一個運算符的兩側(cè)的數(shù)據(jù)類型不同,則先自動進行類型轉(zhuǎn)換,使二者具有同一種類型,然后進行運算??梢岳脧娭祁愋娃D(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型。如(INT)(XY)將的值轉(zhuǎn)換成整型在強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化。在進行除法運算時如果兩個整數(shù)中有一個為負值,則舍入的方向是不固定的。如53在有的機器上得到的結(jié)果為,有的機器上則給出結(jié)果。所有實數(shù)都按DOUBLE型進行運算。、自增、自減運算符作用是使變量的值增或減,如,(在使用之前,先使的值加(減)種類運算符含義備注結(jié)合性加法運算或正值運算減法運算或負值運算和乘法運算符和除法運算符兩個整數(shù)相除結(jié)果為整數(shù)算術(shù)運算符的基本類型模運算或稱求余運算要求其兩側(cè)均為整型量。自左自右結(jié)合即左結(jié)合性,(在使用之后,使的值加(減)說明自增運算符和自減運算符,只能用于變量,不能用于常量或表達式。和的結(jié)合方向為“自右自左”(指變量的左邊還有另外同級運算符時)。自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加。也用于指針變量,使指針指向下一個地址。使用和時會出現(xiàn)一些人們“想不到”的副作用,初學者要慎用。、有關(guān)表達式使用中的問題說明在表達式中包含自加或自減運算時,很容易出錯。如若則表達式()()()的值是(TURBO和MS系統(tǒng)),然后自加變?yōu)?。再如()()()先對自加得,然后進行運算,故得18。有的運算符由兩個字符組成時,在表達式中應盡可能多地自左而右將若干個字符組成一個運算符。如應結(jié)合成()在調(diào)用函數(shù)時,實參數(shù)的求值順序若有上述類似問題,標準并無統(tǒng)一規(guī)定。如PRINTF(”D,D”,);有的系統(tǒng)中從左至右求值,輸出“,”。而在多數(shù)系統(tǒng)中對函數(shù)參數(shù)的求值順序是自右而,所以上面函數(shù)中要輸出兩個表達式的值,先計算出的值再計算的值。賦值運算符和賦值表達式、賦值運算符賦值符號“”就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。擴展的賦值運算符(復合的賦值運算符)在賦值符之前加上其它運算符構(gòu)成。類型示例說明等價于等價于()等價于()、函數(shù)的返回值函數(shù)返回值是通過函數(shù)中的RETURN語句來獲得的。一個函數(shù)可以有一個以上的RETURN語句。函數(shù)值的類型。應當在定義函數(shù)時指定函數(shù)值的類型。如果函數(shù)值的類型和RETURN語句中表達式的值不一致,則以函數(shù)類型為準。如果被調(diào)用函數(shù)中沒有RETURN語句,并不帶回一個確定的、用戶所希望得到的函數(shù)值,即帶回的是一個不確定的值。為了明確表示“不帶回值”,可用“VOID”定義為“無類型”(或稱“空類型”)函數(shù)的調(diào)用定義了一個函數(shù)后,必須調(diào)用該函數(shù)才能執(zhí)行該函數(shù)。、函數(shù)調(diào)用的一般形式為函數(shù)我(實參表列)說明實參的個數(shù)和類型必須和形參的個數(shù)與類型一致。、函數(shù)調(diào)用的方式()函數(shù)語句。即把函數(shù)調(diào)用作為一個語句。函數(shù)名(實參表);這種調(diào)用方式可以忽略返回值或沒有返回值的函數(shù)。()函數(shù)表達式。函數(shù)(調(diào)用)出現(xiàn)在表達式中。這種表達式稱為函數(shù)表達式。變量名函數(shù)表達式;如MAXA,B()函數(shù)參數(shù)。函數(shù)調(diào)用作為一個函數(shù)的實參。變量名函數(shù)名(實參,函數(shù))如MMAXA,MAXB,C、對被調(diào)函數(shù)的說明()被調(diào)用的函數(shù)必須已經(jīng)存在(是庫函數(shù)或用戶自定義的函數(shù))。()如果是庫函數(shù),一般還應該在本文件開頭用INCLUDE命令將調(diào)用有關(guān)庫數(shù)時所需用到的信息包含到本文件來。()如果使用用戶自定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)整函數(shù))在同一文件中,一般還應該在主調(diào)函數(shù)中對被調(diào)用函數(shù)的返回值的類型進行說明。說明如果函數(shù)的返回值是整型或字符型,可以不必進行說明。被調(diào)用函的定義出現(xiàn)在主調(diào)函數(shù)之前可以不必加以說明。如果已在所有函數(shù)定義之前,在文件的開頭,在函數(shù)的外部已說明了函數(shù)類型,則在各個主調(diào)函數(shù)中不必對所調(diào)用的函數(shù)再作類型說明。、函數(shù)的嵌套調(diào)用語言不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù)。就是說,在調(diào)用一個函數(shù)的過程中又調(diào)用另一函數(shù)。、函數(shù)的遞歸調(diào)用在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身。用于解決遞歸問題(回推、遞推兩個階段)。數(shù)組作為函數(shù)參數(shù)、數(shù)組元素做函數(shù)實參數(shù)組元素作為函數(shù)參數(shù),其用法與變量相同,是單向傳遞即“值傳送”方式。、數(shù)組名也可以數(shù)組名作為函數(shù)參數(shù),此時實參與形參都應用數(shù)組名(或用數(shù)組指針),傳遞的是整個數(shù)組。說明用數(shù)組名作函數(shù)參數(shù),應該在主調(diào)函數(shù)和被調(diào)函數(shù)分別定義數(shù)組,不能只在一方定義。實參數(shù)組與形參數(shù)組類型應一致,否則出錯。實參數(shù)組與形參數(shù)組大小可一致也可以不致。數(shù)組名作函數(shù)參數(shù)時不是“值傳遞”,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組。、多維數(shù)組也可以作函數(shù)參數(shù)。局部變量和全局變量、局部變量在一個函數(shù)內(nèi)部定義的只能在本函數(shù)內(nèi)才能使用的,在此函數(shù)外不能使用的變量,稱為“局部變量”。說明主函數(shù)MAIN中定義的變量(M,N)也只在主函數(shù)中有效,不因為在主函數(shù)中定義而在整個文件或程序中有效。主函數(shù)也不能使用其它函數(shù)中定義的變量。不同函數(shù)中可以使用相同名字的變量,它們代表不同的對象,互不干擾。形參也是局部變量。在一個函數(shù)內(nèi)部,可以在復合語句中定義變量,這些變量只在本復合語句中有效,這種復合語句也可稱為“分程序”或“程序塊”。、全局變量在函數(shù)之外定義定義的變量。全局變量可以為本文件中其它函數(shù)所共用。其有效范圍是從定義變量的位置開始到本源文件結(jié)束。說明()設全局變量的作用是增加了函數(shù)間數(shù)據(jù)聯(lián)系的渠道;還可以減少函數(shù)參與形參的個數(shù)。語言規(guī)定,局部數(shù)組不能賦初值。()不再必要時,不要使用全局變量。因為全局變量在程序的全部執(zhí)行過程中都占用存儲單元;降低了函數(shù)的通用性。外部變量與其它文件的變量同名時,會出現(xiàn)問題;使用過多會降低程序的清晰性,人們往往難以清楚地判斷出每個瞬時各個外部變量的值。()如果外部變量在文件開頭定義,則在整個文件范圍內(nèi)都可以使用該外部變量。如果在定義點之前的函數(shù)相引用該外部變量,則應該在該函數(shù)中用關(guān)鍵字“EXTERN”作“外部變量說明”。注外部變量的定義和外部變量說明不是一回事。外部變量的定義只能有一次,它的定義在所有函數(shù)之外,而同一文件中的外部變量的說明可以有多次,它的位置在函數(shù)之內(nèi)(哪個函數(shù)用就在哪個函數(shù)中說明)。原則上所有函數(shù)都應當對所用的外部變量和說明,只是為簡人起見,允許在外部變量的定義點之后的函數(shù)可以省略寫這個“說明”。()如果在同一源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。動態(tài)存儲變量與靜態(tài)存儲變量、變量的存儲類別()從變量的作用域(即從空間)角度來分可分為全局變量和局部變量。()從變量存在的時間(即生存期)角度來分可分為靜態(tài)存儲變量和動態(tài)存儲變量。所謂靜態(tài)存儲方式是指在程序運行期間分配固定的存儲空間的方式。而動態(tài)存儲方式則是在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式。在內(nèi)存中可供用戶使用的存儲空間可以分為三部分程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)全局變量存放在靜態(tài)存儲區(qū)中,在程序執(zhí)行過程中,它們占據(jù)固定的存儲單元。()在動態(tài)存儲區(qū)中存放下列數(shù)據(jù)函數(shù)形參變量。局部變量(未加STATIC說明的局部變量。即自動變量。)函數(shù)調(diào)用時的現(xiàn)場保護和返回地址等。在語言中每一個變量和函數(shù)有兩個屬性數(shù)據(jù)類型和數(shù)據(jù)的存儲類別。、局部變量的存儲方式()函數(shù)中的局部變量,如不做專門的說明(說明為靜態(tài)的存儲類別),都是動態(tài)分配存儲空間的,存儲在動態(tài)存儲區(qū)中。這類局部變量稱為自動變量。自動變量用關(guān)鍵字AUTO作存儲類型的說明,“AUTO”也可以省略不寫,此時系統(tǒng)默認為自動變量。()函數(shù)中的局部變量在函數(shù)調(diào)用結(jié)束后,仍希望不釋放其存儲單元,而在下次調(diào)用該函數(shù)時沿用其值(上次調(diào)用結(jié)束時的值)。這時就用STATIC說明為“局部靜態(tài)變量”。對局部靜態(tài)變量的說明局部靜態(tài)變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期都不釋放。對局部靜態(tài)變量是在編譯時賦初值的,即只賦初值一次。以后每調(diào)用函數(shù)時不再重新賦初值,而只是保留上一次函數(shù)調(diào)用結(jié)束時的值。而自動變量每調(diào)用函數(shù)一次就賦一次初值。如在定義局部變量不賦初值的話,則對靜態(tài)變量來說,編譯時自動賦初值(對數(shù)值型變量)或空字符。而對自動變量來說,如果不賦初值,則它的值是一個不確定的值。規(guī)定,只有在定義全局變量和局部靜態(tài)變量時才能對數(shù)組初始化。雖然局部靜態(tài)變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其它函數(shù)是不能引用它的。局部靜態(tài)變量的用法需要保留函數(shù)上一次調(diào)用結(jié)束時的值。如果初始化后,變量只被引用而不改變其值,則這時用局部靜態(tài)變量比較方便,以便每次調(diào)用時重新賦值。函數(shù)中的數(shù)組要初始化時必須用局部靜態(tài)類別。注意如果數(shù)組的值在函數(shù)調(diào)用過程中被改變了,將影響下一次調(diào)用時的初值。用靜態(tài)存儲要多占內(nèi)存,而且降低了程序的可讀性,當調(diào)用次數(shù)多時往往弄不清局部靜態(tài)變量的當前值是什么。因此,如不必要,不要多用局部靜態(tài)變量。()一般情況下,變量(包括靜態(tài)存儲方式和動態(tài)存儲方式)的值是存放在內(nèi)存中的。為提高執(zhí)行效率,語言允許將局部變量的值放在運算器中的寄存器中,需要時直接從寄存器取出參加運算不必再到內(nèi)存中去存取。這種變量叫做“寄存器變量”,用關(guān)鍵字REGISTER作說明。說明只有局部自動變量和形式參數(shù)可以作為寄存器變量,其它(如全局變量)不行。一個計算機系統(tǒng)中寄存器數(shù)目是有限的,不能定義任意多個寄存器變量。不同的系統(tǒng)對REGISTER變量的處理是不同的,微機上用的、URC對REGISTER變量當作自動變量處理,分配內(nèi)存單元,并不真正把它們存放在寄存器中,因此,雖然程序合法,但并不提高執(zhí)行速度。局部靜態(tài)變量不能定義為寄存器變量。不能寫成REGISTERSTATICINTA,B,C;不能把變量A,B,C既放在靜態(tài)存儲區(qū)中,又放在寄存器中,二者只能居其一。全局變量的存儲方式、全局變量是在函數(shù)的外部定義的,編譯時分配在靜態(tài)存儲區(qū)。全局變量可以為程序中各個函數(shù)所引用。、全局變量的使用范圍允許其它文件(同屬一個程序)中的函數(shù)引用。應該在需要引用它的文件中,用EXTERN作說明。只被本文件中的函數(shù)引用。這時可以在定義外部變量時前面加一個STATIC說明。這種加上STATIC說明、只能用于本文件的外部變量(全局變量)稱為靜態(tài)外部變量,或稱為“函數(shù)外部靜態(tài)變量”。注對外部變量加STATIC說明,并不意味著這時才是靜態(tài)存儲(存放在靜態(tài)存儲區(qū)中),而不加STATIC的是動態(tài)存儲(存放在動態(tài)存儲區(qū))。兩種形式的外部變量都是靜態(tài)存儲方式,只是作用范圍不同而已。C存儲類別小結(jié)對一個數(shù)據(jù)的定義,需要指定兩各屬性數(shù)據(jù)類型和存儲類別,分別用兩個關(guān)鍵字進行定義。STATICINTA(靜態(tài)內(nèi)部變量或靜態(tài)外部變量)AUTOCHARC(自動變量,在函數(shù)內(nèi)定義)REGISTERINTD(寄存器變量,在函數(shù)內(nèi)定義)另外,在對變量作說明時,可以用EXTERN說明某變量為已定義的外部變量。、從作用域角度分,有局部變量和全局變量。它們采取以下的存儲類別自動變量,即動態(tài)局部變量(離開函數(shù),值就消失)靜態(tài)局部變量(離開函數(shù),值仍保留)寄存器變量(離開函數(shù),值就消失)(形式參數(shù)可以定義為自動變量或寄存器變量)局部變量靜態(tài)外部變量(只限本文件引用)外部變量(即非靜態(tài)的外部變量,允許其它文件引用)、從變量存在的時間來區(qū)分,有動態(tài)存儲和靜態(tài)存儲類型。靜態(tài)存儲是程序整個運行時間都存在,而動態(tài)存儲則是在調(diào)用函數(shù)時臨時分配單元。自動變量(本函數(shù)內(nèi)有效)動態(tài)存儲寄存器變量(本函數(shù)內(nèi)有效)形式參數(shù)靜態(tài)局部變量(函數(shù)內(nèi)有效靜態(tài)存儲靜態(tài)外部變量(本文件內(nèi)有效)外部變量(其它文件可引用)、從變量值存放的位置來區(qū)分靜態(tài)局部變量內(nèi)存中靜態(tài)存儲區(qū)靜態(tài)外部變量(函數(shù)外部靜態(tài)變量)外部變量(其它文件可引用)內(nèi)存中動態(tài)存儲區(qū)自動變量和形式參數(shù)CPU中的寄存器寄存器變量、關(guān)于作用域和生存期的概念。內(nèi)部函數(shù)和外部函數(shù)、內(nèi)部函數(shù)如果一個函數(shù)只能被本文件中其它函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)名和函數(shù)類型前面加STATIC。即STATIC類型標識符函數(shù)名(形參表)內(nèi)部函數(shù)又稱靜態(tài)函數(shù)。使用內(nèi)部函數(shù)可以使函數(shù)只局限于所在文件,如果在不同的文件中有同名的內(nèi)部函數(shù),互不干擾。全局變量、外部函數(shù)在定義函數(shù)時,如果冠以關(guān)鍵字EXTERN,表示此函數(shù)是外部函數(shù)。在需用調(diào)用此類函數(shù)的文件中,一般要用EXTERN說明所用的函數(shù)是外部函數(shù)。第八章編譯預處理語言提供編譯預處理功能,這是它與其它高級語言的一個重要區(qū)別?!熬幾g預處理”是編譯系統(tǒng)和一個組成部分。語言允許在程序中使用幾種特殊的命令(它們不是一般的語句)。在編譯系統(tǒng)對程序進行通常的編譯之前,先對程序中這些特殊的命令進行“預處理”,然后將預處理的結(jié)果和源程序一起再進行通常的編譯處理,以得到目標代碼。提供的預處理功能主要有以下三種、宏定義;、文件包含;、條件編譯。分別用宏定義命令、文件包含命令、條件編譯命令來實現(xiàn)。這些命令以符號“”開頭。宏定義、不帶參數(shù)的宏定義(定義一個符號常量)用一個指定的標識符(即名字)來代表一個字符串,它的一般形式為DEFINE標識符字符串如DEFINEPI31415926它的作用是指定用標識符PI來代替“31415926”這個字符串,在編譯預處理時,把程序中在該命令以后的所有的PI都用“31415926”代替。這個標符(名字)稱為“宏名”,在預編譯時將宏名替換成字符串的過程稱為“宏展開”。DEFINE是宏定義命令。說明宏名一般習慣用大寫字母表示,以與變量名相區(qū)別。使用宏名代替一個字符串,可以減少程序中重復書寫某些字符字符串的工作量。同時也便與修改。使用宏定義可提高程序的可移值性。宏定義是用宏名代替一個字符串,也就是作簡單的置換,不作語法檢查。只有在編譯已被宏展開后的源程序時才報錯。宏定義不是語句,不恬行末加分號。DEFINE命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為定義命令之后到本源文件結(jié)束。通常DEFINE寫在文件開頭,函數(shù)之前,作為文件一部分,在此文件范圍內(nèi)有效。可以用UNDEF命令終止宏定義的作用域。如DEFINE98MAINUNDEFF1由于UNDEF的作用,使的作用范圍在UNDEF行處終止。在進行宏定義時,可以引用已定義的宏名,可以層層置換。對程序中用雙引號括起來的字符串內(nèi)的字符,即使與宏名相同,也不進行置換。、帶參數(shù)的宏定義()形式不是進行簡單的字符串替換,還要進行參數(shù)替換,其定義的一般形式為DEFINE宏名(參數(shù)表)字符串字符串中包含在括弧中所指定的參數(shù)。如DEFINEA,BABAREA3,2;定義矩形面積,和是邊長。賦值語句展開為AREA32;()展開置換的方式在程序中如果有帶實參的宏,則按DEFINE命令行中指定的字符串從左到右進行置換。如果串中包含宏中的形參,則將程序語句中相應的實參(可以是常量、變量或表達式)代替形參,如果宏定義中的字符串中的字符中不是參數(shù)字符,則保留。說明對帶參數(shù)的宏的展開只是將語句中的宏名后面括號內(nèi)的實參字符串代替DEFINE命令行中的形參。在宏定義時,在宏名與帶參靈敏的括弧之間不應加空格,否則將空格以后的字符都作為替代字符串的一部分。注意帶參數(shù)的宏和函數(shù)的的區(qū)別函數(shù)調(diào)用時,先求出實參表達式的值,然后代入形參,而使用帶參數(shù)的宏只是進行簡單的字符替換函數(shù)調(diào)用是在程序運行時處理的,分配臨時的內(nèi)存單元。而宏展開則是在編譯時進行的,在展開時并不分配內(nèi)存單元,不進行值的傳遞處理,也沒有“返回值”的概念。對函數(shù)中的實參和形參都要定義類型,二者的類型要求一致,如不一致,應進行類型轉(zhuǎn)換。而宏不存在類型問題,宏名無類型,它的參數(shù)也無類型,只是一個符號代表,展開時代入指定的字符即可。宏定義時,字符串可以是任何類型的數(shù)據(jù)。調(diào)用函數(shù)只可得到一個返回值,而用宏可以設法得到幾個結(jié)果。使用宏次數(shù)多時,宏展開后源程序長,因為每展開產(chǎn)次都使程序增長,而函數(shù)調(diào)用不使源程序變長。宏替換不占運行時間,只占編譯時間。而函數(shù)調(diào)用則占運行時間(分配單元、保留現(xiàn)場、值傳遞、返回)。一般用宏來代表簡短的表達式比較合適。有些問題,用宏和函數(shù)都可以。利用宏可以實現(xiàn)程序的簡化。注意在宏展開實現(xiàn)參數(shù)替換時,雙引號內(nèi)字符串中與參數(shù)名相同的字符是否被替換,各個C系統(tǒng)有不同的規(guī)定。文件包含處理所謂“文件包含”處理是批量個源文件可以將另外一個源文件的全部內(nèi)容包含進來,即將另外的文件包含到本文件之中。其一般形式為INCLUDE“文件名”其好處是可以節(jié)省程序設計人沒的重復勞動。注意“文件包含”處理并不是聯(lián)接兩個文件,而是作為一個源程序編譯,得到一個目標文件。這種常用在文件頭部的被包含的文件稱為“標題文件”或“頭部文件”常以“H”為后綴。說明、一個INCLUDE命令只能指定一個被包含文件,如果要包含N個文件,要用N個INCLUDE命令。、如果文件包含文件,而文件中要用到文件的內(nèi)容,則可在文件中用兩個INCLUDE命令分別包含文件和文件,而且文件應出現(xiàn)在文件之前。、在一個被包含文件中又可以包含另一個被包含文件,即文件包含是可以嵌套的。、在INCLUDE命令中,文件名可以用雙引號或尖括號括起來。二者的區(qū)別是用雙引號的,系統(tǒng)先在引用被包含文件的源文件所在的文件目錄中尋找要包含的文件,若找不到,再提案系統(tǒng)指定定的標準方式檢索其它目錄。而用尖括弧時,不檢查源文件所在的文件目錄而直接按系統(tǒng)標準方式檢索文件目錄。一般說,用雙引號比較保險。、被包含文件與其所在的文件(即用INCLUDE命令的源文件),在預編譯后已成為同一個文件(而不是兩個文件)。因此,文件中的全局靜態(tài)變量仍然有效,不必用EXTERN說明。條件編譯一般情況下源程序中所有的行都參加編譯,但是有進希望對其中一部分內(nèi)容只在滿足一定條件才進行編譯,也就是對一部分內(nèi)容指定編譯的條件,這就是“條件編譯”。采用條件編譯的好處是可以減少被編譯的語句,從而減少目標程序的長度。還有利于程序的可移植性,增加程序的靈活性。、條件編譯命令的幾種形式()IFDEF標識符程序段ELSE程序段ENDIF其中ELSE部分可以沒有。這里的程序段可以是語句組,也可以是命令行。為了提高程序的通用性(在任何系統(tǒng)上運行),可以用以下的條件編譯IFDEFIBMPCDEFINEINTEGER_SIZE16ELSEDEFINEINTEGER_SIZE32ENDIF()IFNDEF標識符程序段ELSE程序段ENDIF這種形式與第一種形式的作用相反。即標識符未被定義時編譯程序段。()IF表達式程序段ELSE程序段ENDIF第九章指針概述1、使用指針的好處()正確而靈活地運用指針可以有效地表示復雜的數(shù)據(jù)結(jié)構(gòu);能動態(tài)分配內(nèi)存;能方便地使用字符串;有效而方便地使用數(shù)組;在調(diào)用函數(shù)時能得到多于1個的值;能直接處理內(nèi)存地址等。()掌握指針的應用,可以使程序簡潔、緊湊、高效。、地址的概念內(nèi)存區(qū)的每一個字節(jié)有一個編號,這個編號就是“地址”,它相當于旅館中的房間號。、數(shù)據(jù)在內(nèi)存中的讀取方式()直接訪問按變量地址存取變量值的方式,即根據(jù)變量名與地址的對應關(guān)系,找到變量的地址,然后從該地址開始的字節(jié)中取出數(shù)據(jù)(即變量的值)。()簡接訪問先從存放變量的地址的內(nèi)存單元中讀取變量的地址,然后在與讀出的地址值相符的內(nèi)存單元中取出變量的值。、指針的概念一個變量的地址稱為該變量的“指針”。專門用來存放另一變量的地址的變量稱為“指針變量”。指針變量中只能存放地址(指針)。變量的指針和指向變量的指針變量變量的指針就是變量的地址。為了表示指針變量和它所指向的變量之間的聯(lián)系,用“”符號表示“指向”。、指針變量的定義指針變量不同于其它類型的變量,它是用來專門存放地址的。必須將它定義為“指針類型”。指地變量定義的一般形式為類型標識符標識符(或變量名);注意標識符前面的“”,表示該變量為指針變量。一個指針變量只能指向同一個類型的變量。、指針變量的引用有關(guān)的運算符()CHARNAME20/學生姓名/CHARSEX/性別/INTAGE/年齡/FLOATSCORE/成績/CHARADDR30/地址/定義結(jié)構(gòu)體類型變量的方法要定義一個結(jié)構(gòu)體類型的變量,可以采取以下三種方法。一、先定義結(jié)構(gòu)體類型再定義變量名如上面已定義了一個結(jié)構(gòu)體類型STRUCTSTUDENT,可以用它來定義變量。如STRUCTSTUDENTSTUDENT1,STUDENT2;定義STUDENT1,STUDENT2為STRUCTSTUDENT類型變量,即它們具有STRUCTSTUDENT類型的結(jié)構(gòu)。如10001ZHANGXINM19905SHANGHAI10002WANGLIF2098BEIJING注意將一個變量定義為標準類型(基本數(shù)據(jù)類型)與定義為結(jié)構(gòu)體類型不同之處在于后者不僅要求指定變量為結(jié)構(gòu)體類型,而且要求指定為某一特定的結(jié)構(gòu)體類型(例如,STRUCTSTUDENT),不能只指定為“STRUCT型”而不指定結(jié)構(gòu)體名。而在定義變量為整型時,只需指定為INT型即可。換句話說,可以定義許多種具體的結(jié)構(gòu)體類型。為了使用方便,人們通常用一個符號常量代表一個結(jié)構(gòu)體類型。在程序開頭,用DEFINESTUDENTSTRUCTSTUDENT這樣在程序中,STUDENT與STRUCTSTUDENT完全等效。可以直接用STUDENT定義變量。如果程序規(guī)模比較大,往往對結(jié)構(gòu)體類型的定義集中放到一個文件(以H為后綴的“頭文件”)中。二、在定義類型的同時定義變量一般形式為STRUCT結(jié)構(gòu)體名成員表列變量名表列;如STRUCTSTUDENTINTNUMSTRDENT1STRDENT2CHARNAME20/學生姓名/CHARSEX/性別/INTAGE/年齡/FLOATSCORE/成績/CHARADDR30/地址/STUDENT1,STUDENT2;三、直接定義結(jié)構(gòu)類型變量其一般形式為STRUCT成員表列變量表列;即不出現(xiàn)結(jié)構(gòu)體名。關(guān)于結(jié)構(gòu)體類型的幾點說明、類型與變量是不同的概念,不要混同。對結(jié)構(gòu)體變量來說,在定義時一般先定義一個結(jié)構(gòu)體類型,然后定義變量為該類型。只能對變量賦值、存取或運算,而不能對一個類型賦值、存取或運算。在編譯時,對類型是不分配空間的。、對結(jié)構(gòu)體中的成員(即“域”),可以單獨使用,它的作用與地位相當于普通變量。、成員也可以是一個結(jié)構(gòu)體變量。即結(jié)構(gòu)體可以嵌套。在前面的結(jié)構(gòu)體定義示例中,若加入一個“日期”成員(用BIRTHDAY表示),則該成員變量又可以定義成一個結(jié)構(gòu)體,它可以包含“年”、“月”、“日”三個成員。、成員名可以與程序中的變量名相同,二者不代表同一對象。且互不干擾。結(jié)構(gòu)體類型變量的引用在定義了結(jié)構(gòu)體變量以后,就可以引用這個變量了。但應遵守以下規(guī)則、不能將一個結(jié)構(gòu)體變量作為一個整體進行輸入和輸出。如已定義的STUDENT1為結(jié)構(gòu)體變量并且它已有值。不能這樣引用PRINTF“D,S,C,D,F,SN”,STRDENT1;只能對結(jié)構(gòu)體變量中的各個成員分別輸出。引用方式為結(jié)構(gòu)體變量名成員名如STRDENT1NUM表示STUDENT1變量中的NUM成員。可以對變量的成員賦值,如STRDENT1NUM10010;“”是成員(分量)運算符,它在所有的運算符中優(yōu)先級最高,新標準C允許將一個結(jié)構(gòu)體變量直接賦值給另一個具有相同結(jié)構(gòu)的結(jié)構(gòu)體變量。、如果成員本身又屬一個結(jié)構(gòu)體類型,則要用若干個成員運算符,一級一級地找到最低的一級的成員。只能對最低級的成員進行賦值或存取以及運算。注意不能用一個結(jié)構(gòu)體變量來訪問該變量中的屬于結(jié)構(gòu)體變量的成員。如STUDENT1BIRTHDAY這種訪問方式是錯誤的。因為BIRTHDAY本身是一個結(jié)構(gòu)體變量。、對成員變量可以像普通變量一樣進行各種運算(根據(jù)其類型決定可以進行的運算)。、可以引用成員的地址,也可以引用結(jié)構(gòu)體變量的地址。如SCANF(“D”,/學生姓名/CHARSEX/性別/INTAGE/年齡/FLOATSCORE/成績/CHARADDR30/地址/STUDENT189031,“LILIN”,M,“123BEIJINGROAD”;二、對靜態(tài)存儲類型的結(jié)構(gòu)體變量進行初始化。即把上述過程放在主函數(shù)內(nèi)。三、過去許多C版本規(guī)定,自動變量不能在定義時賦初值,只能在函數(shù)執(zhí)行時用賦值語句對各成員分別賦值。新的C標準無此限制,允許對自動變量初始化。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組的每一組數(shù)據(jù)(即每一個數(shù)組元素)都是一個結(jié)構(gòu)體類型的數(shù)據(jù),它們分別包括各個成員(分量)項。一、結(jié)構(gòu)體數(shù)組的定義和定義結(jié)構(gòu)體變量的方法相似,只需說明其為數(shù)組即可(即把變量名換成數(shù)組名)。、定義結(jié)構(gòu)體的同時定義一個結(jié)構(gòu)體數(shù)組(同定義結(jié)構(gòu)體變量)。、定義結(jié)構(gòu)體后再定義一個結(jié)構(gòu)體數(shù)組(同定義結(jié)構(gòu)體變量)。用此方法定義結(jié)構(gòu)體數(shù)組時與定義數(shù)值型數(shù)組相比只是定義關(guān)鍵字(類型標識符)不同而已。二、結(jié)構(gòu)體數(shù)組的初始化定義結(jié)構(gòu)體數(shù)組時初始化,其一般形式是在定義數(shù)組的后面加上初值表列;(同數(shù)值型數(shù)組的列表賦初值)指向結(jié)構(gòu)體類型數(shù)據(jù)的指針一個結(jié)構(gòu)體變量的指針就是該變量所占據(jù)的內(nèi)存段的起始地址??梢栽O一個指針變量來指向一個結(jié)構(gòu)體變量,此時該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來批晌結(jié)構(gòu)體數(shù)組中的元素。一、指向結(jié)構(gòu)體變量的指針以下三種形式等價結(jié)構(gòu)體變量成員名;(P)成員名;P成員名有關(guān)運算PN得到P指向的結(jié)構(gòu)體變量中的成員N的值。PN得到P指向的結(jié)構(gòu)體變量中的成員N的值,用完該值后使它加1。PN得到P指向的結(jié)構(gòu)體變量中的成員N的值使之加1(先加)。二、指向結(jié)構(gòu)體數(shù)組的指針對結(jié)構(gòu)體數(shù)組及其元素也可以用指針或指針變量來指向。注意、如果P的初值為STU,即指向第一個元素,則P1后指向下一個元素的起始地址。如(P)NUM先使P自加,然后得到它指向的元素中的NUM成員值。(P)NUM先得到值,然后使P自加。、指針P已定義為指向STRUCTSTUDENT類型的數(shù)據(jù),它只能指向一個結(jié)構(gòu)體型數(shù)據(jù),而不能指向一元素中的某一成員。千萬不要認為反正P是存放地址的,可以將任何地址賦給它。三、用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)將一個結(jié)構(gòu)體變量的值傳遞給另一個函數(shù)的方法用結(jié)構(gòu)體變量的成員作參數(shù)用指向結(jié)構(gòu)體變量(或數(shù)組)的指針作實參,將結(jié)構(gòu)體變量(或數(shù)組)的地址傳給形參。用指針作函數(shù)參數(shù)能提高運行效率。用指針處理鏈表一、鏈表概述鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動態(tài)地進行存儲分配的一種結(jié)構(gòu)。鏈表有一個“頭指針”變量和一個“表尾”(最后一個元素),“頭指針”變量存放一個地址。該地址指向一個元素。鏈表中每一個元素稱為“結(jié)點”,每個結(jié)點都應包括在兩個部分一為用戶需要用的實際數(shù)據(jù),二為下一個結(jié)點的地址?!氨砦病钡牡刂凡糠址乓粋€“NULL”(表示“空地址”),鏈表到止結(jié)束。鏈表中各元素在內(nèi)存中可以不是連續(xù)存放。如果不提供“頭指針”,則整個鏈表都無法訪問。鏈表如同一條鐵鏈一樣,一環(huán)扣一環(huán),中間是不能斷開的。一個結(jié)點中應包含一個指針變量,用它存放下一結(jié)點的地址。為了動態(tài)地開辟和釋放存儲單元,C語言編譯系統(tǒng)的庫函數(shù)提供了以下函數(shù)、MALLOCSIZE在內(nèi)存的動態(tài)存儲區(qū)中分配一個長度為SIZE的連續(xù)空間。此函數(shù)的值(即“返回值”)是一個指針,它的值是該分配域的起始地址。如果此函數(shù)未能成功地執(zhí)行,則返回值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年安徽事業(yè)單位聯(lián)考池州市招聘63人備考題庫及完整答案詳解
- 2026年某投資集團安全生產(chǎn)責任制考核辦法
- 食品安全員業(yè)務能力考核試題附答案
- 2026年桃花鎮(zhèn)延喬路幼兒園招聘廚房幫廚若干名備考題庫及1套完整答案詳解
- 2026年管理人員安全生產(chǎn)責任制考核辦法樣本
- 建材企業(yè)產(chǎn)品強度不達標問題排查整改報告
- 2024年集美大學誠毅學院馬克思主義基本原理概論期末考試題附答案解析(必刷)
- 2026年安徽省合肥市合肥高新火炬中學招聘教師備考題庫含答案詳解(達標題)
- 2026中國再保險(集團)股份有限公司博士后科研工作站招聘備考題庫帶答案詳解(典型題)
- 2026安徽合肥市廬江縣沿湖治理建設管理中心選調(diào)1人備考題庫含答案詳解(基礎題)
- 2025-2030汽車變速箱技術(shù)發(fā)展現(xiàn)狀及電動化轉(zhuǎn)型趨勢研究報告
- 相關(guān)方管理操作手冊
- TCWEA192023水利水電工程生態(tài)護坡技術(shù)規(guī)范
- 七年級下冊歷史時間軸(人教版)
- 2025年中考物理試題分類匯編:光現(xiàn)象(第1期)原卷版
- 衛(wèi)生院網(wǎng)絡安全知識培訓課件
- 2025英大證券考試題目及答案
- 食材配送的增值服務
- 鐵路大票管理辦法
- 風信子教學課件
- 口腔門診急救管理制度
評論
0/150
提交評論