![C語言程序設(shè)計06(初識指針)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/f1b22c76-1184-400d-b5f9-c70410fe9050/f1b22c76-1184-400d-b5f9-c70410fe90501.gif)
![C語言程序設(shè)計06(初識指針)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/f1b22c76-1184-400d-b5f9-c70410fe9050/f1b22c76-1184-400d-b5f9-c70410fe90502.gif)
![C語言程序設(shè)計06(初識指針)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/f1b22c76-1184-400d-b5f9-c70410fe9050/f1b22c76-1184-400d-b5f9-c70410fe90503.gif)
![C語言程序設(shè)計06(初識指針)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/f1b22c76-1184-400d-b5f9-c70410fe9050/f1b22c76-1184-400d-b5f9-c70410fe90504.gif)
![C語言程序設(shè)計06(初識指針)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/16/f1b22c76-1184-400d-b5f9-c70410fe9050/f1b22c76-1184-400d-b5f9-c70410fe90505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計語言程序設(shè)計重慶郵電大學(xué)移通學(xué)院重慶郵電大學(xué)移通學(xué)院計算機系計算機系 宋文強宋文強C語言程序設(shè)計第第6章章 初識指針初識指針第第6章內(nèi)容章內(nèi)容指針的概念指針的概念地址與指針的概念地址與指針的概念 取地址運算符和指針運算符取地址運算符和指針運算符 指針變量的定義與引用指針變量的定義與引用 指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù)6.2.1 指針與地址的概念指針與地址的概念什么是指針?什么是指針?指針就是地址,地址就是指針就是地址,地址就是指針指針什么是指針變量什么是指針變量指針變量就是指針變量就是用來存儲用來存儲其他變量在內(nèi)存中地址的變量其他變量在內(nèi)存中地址的變量指針是指針是C語言的一
2、個顯著特色語言的一個顯著特色指針的用途指針的用途在在C語言中,指針最重要的用途如下:語言中,指針最重要的用途如下: 允許以內(nèi)存地址的方式引用大的數(shù)據(jù)結(jié)構(gòu),使數(shù)允許以內(nèi)存地址的方式引用大的數(shù)據(jù)結(jié)構(gòu),使數(shù)據(jù)結(jié)構(gòu)更簡潔,內(nèi)存空間更節(jié)省。據(jù)結(jié)構(gòu)更簡潔,內(nèi)存空間更節(jié)省。通過參數(shù)傳遞同一內(nèi)存地址,指針使程序的不同通過參數(shù)傳遞同一內(nèi)存地址,指針使程序的不同部分能共享數(shù)據(jù)。部分能共享數(shù)據(jù)。通過內(nèi)存空間的分配與釋放,指針可以在程序執(zhí)通過內(nèi)存空間的分配與釋放,指針可以在程序執(zhí)行過程中指向新的內(nèi)存空間,為動態(tài)數(shù)據(jù)結(jié)構(gòu)(行過程中指向新的內(nèi)存空間,為動態(tài)數(shù)據(jù)結(jié)構(gòu)(如鏈表、隊列和二叉樹等)提供支持。如鏈表、隊列和二叉樹等
3、)提供支持。指針可以描述數(shù)據(jù)項之間的關(guān)系(如鏈表)。指針可以描述數(shù)據(jù)項之間的關(guān)系(如鏈表)。通過指針可以使程序員盡可能多地訪問由硬件本通過指針可以使程序員盡可能多地訪問由硬件本身提供的功能身提供的功能。1. 變量地址變量地址程序運行所需的代碼和數(shù)據(jù)程序運行所需的代碼和數(shù)據(jù)都保存在內(nèi)存中都保存在內(nèi)存中內(nèi)存以字節(jié)作為基本存取單內(nèi)存以字節(jié)作為基本存取單位位計算機為每一個內(nèi)存單元進計算機為每一個內(nèi)存單元進行了非負(fù)整數(shù)的順序編號,行了非負(fù)整數(shù)的順序編號,這個編號就是該內(nèi)存單元的這個編號就是該內(nèi)存單元的“地址地址”內(nèi)存單元內(nèi)存單元012345內(nèi)存單內(nèi)存單元編號元編號61. 變量地址變量地址在在C程序中定義
4、了一個變量,程序編譯時系統(tǒng)就會程序中定義了一個變量,程序編譯時系統(tǒng)就會根據(jù)變量的數(shù)據(jù)類型,給這個變量分配相應(yīng)字節(jié)根據(jù)變量的數(shù)據(jù)類型,給這個變量分配相應(yīng)字節(jié)數(shù)的存儲單元數(shù)的存儲單元一個變量在內(nèi)存中可能占用多個字節(jié),其中第一一個變量在內(nèi)存中可能占用多個字節(jié),其中第一個字節(jié)的地址就是變量地址個字節(jié)的地址就是變量地址在在C程序中,一個變量的地址值只能通過取地址運程序中,一個變量的地址值只能通過取地址運算符算符“&”獲得,而不能直接將一個正整數(shù)值當(dāng)成獲得,而不能直接將一個正整數(shù)值當(dāng)成變量地址值來使用變量地址值來使用1. 變量地址變量地址例如,程序中有如下變量定義:例如,程序中有如下變量定義:in
5、t a=0, b/2字節(jié)字節(jié)char c/1字節(jié)字節(jié)long d/4字節(jié)字節(jié)double x, y/8字節(jié)字節(jié)假設(shè)這些變量在內(nèi)存中從地址假設(shè)這些變量在內(nèi)存中從地址2000開始依次開始依次存放存放abcdxy200020012002200320042005200620072008200920102011201220132014201520162017201820192. 變量的訪問方式變量的訪問方式定義變量:定義變量: int i; 給變量給變量 i 分配分配2個字節(jié)的存儲單元,假設(shè)為個字節(jié)的存儲單元,假設(shè)為4050訪問變量:訪問變量:i=3; 在變量在變量 i 所代表的存儲單元中存入的值為所代
6、表的存儲單元中存入的值為33i變量名變量名變量值變量值存儲單元的地址存儲單元的地址4050(1)變量的直接訪問變量的直接訪問已經(jīng)知道變量已經(jīng)知道變量 i 的地址的地址直接訪問直接訪問i=3; printf(%d, i);scanf(%d, &i);4050i3直接訪問:直接訪問:(2)變量的間接訪問變量的間接訪問不知道變量不知道變量 i 的地址,但的地址,但pi知道知道間接訪問間接訪問從從pi中取出中取出 i 的地址,然后再去訪問的地址,然后再去訪問 i40504050pii80003間接訪問:間接訪問:6.2.2 取地址和指針運算符取地址和指針運算符1.取地址運算符取地址運算符“&a
7、mp;”“&”是是單目運算符單目運算符,用于獲取一個變量在內(nèi)存中,用于獲取一個變量在內(nèi)存中的存儲地址。其形式為:的存儲地址。其形式為: &變量名變量名 假定整型變量假定整型變量 i 的地址值的地址值4050,則,則只能通過只能通過&i來來獲得獲得,而不能將,而不能將4050簡單的賦值給簡單的賦值給存儲地址的特存儲地址的特殊變量殊變量pi。6.2.2 取地址和指針運算符取地址和指針運算符2.指針運算符指針運算符“*” “*”是是單目運算符單目運算符,它根據(jù)地址提取存儲單元中,它根據(jù)地址提取存儲單元中的值。其形式為:的值。其形式為: *地址地址 “地址地址”實際上是用一個特
8、殊變量(指針變量)實際上是用一個特殊變量(指針變量)來存儲的來存儲的,因此,因此“*”后面實際上是一個特殊變量后面實際上是一個特殊變量,而不是一個具體的值。,而不是一個具體的值。 6.2.2 取地址和指針運算符取地址和指針運算符&取地址運算符取地址運算符&i 表示變量表示變量i的地址的地址*取值運算符取值運算符“*(i的地址的地址)” 表示變量表示變量i的值的值因此因此*(&i) 表示變量表示變量 i 的值,即的值,即*(&i)與與i是等價的是等價的6.2.3 指針變量的定義與引用指針變量的定義與引用1.指針變量的概念指針變量的概念每個變量在內(nèi)存中都有一定數(shù)量的
9、存儲單元,第一個存儲每個變量在內(nèi)存中都有一定數(shù)量的存儲單元,第一個存儲單元的地址就是變量地址;一個變量的地址就是該變量的單元的地址就是變量地址;一個變量的地址就是該變量的“指針指針”。 C規(guī)定可以定義一種特殊變量,用它來存儲變量的地址。規(guī)定可以定義一種特殊變量,用它來存儲變量的地址。這種特殊變量就稱之為這種特殊變量就稱之為“指針變量指針變量”。 指針變量就是地址變量,用來存放地址,指針變量的值是指針變量就是地址變量,用來存放地址,指針變量的值是地址(即指針),也就是說,指針變量就是存放地址的變地址(即指針),也就是說,指針變量就是存放地址的變量。量。前面提到的特殊變量前面提到的特殊變量pi實際
10、上就是存放實際上就是存放i變量的指針變量,變量的指針變量,pi表示表示&i,則,則*pi就表示就表示 i 。2. 指針變量的定義指針變量的定義指針變量定義的一般形式為:指針變量定義的一般形式為: 數(shù)據(jù)類型數(shù)據(jù)類型 *指針變量名;指針變量名; 例如:例如: int *pi,*pj; float *pa,*pb; char *pc;指針變量定義的指針變量定義的“數(shù)據(jù)類型數(shù)據(jù)類型”一定要與存放的地一定要與存放的地址值對應(yīng)的變量數(shù)據(jù)類型一致。址值對應(yīng)的變量數(shù)據(jù)類型一致。如:如:用來存儲用來存儲int類型變量的地址的指針變量就是類型變量的地址的指針變量就是int型指針型指針變量變量用來存儲用來存
11、儲char類型變量的地址的指針變量就是類型變量的地址的指針變量就是char型型指針變量指針變量指向整型數(shù)據(jù)的指針類型表示成指向整型數(shù)據(jù)的指針類型表示成“int *”,讀作,讀作“指向指向int的指針的指針”或或“int指針指針”。3. 指針變量的初始化指針變量的初始化指針變量是存放地址的變量,指針變量究竟存放哪個變量指針變量是存放地址的變量,指針變量究竟存放哪個變量的地址,與哪個變量有關(guān)系,可以使用指針變量的賦值方的地址,與哪個變量有關(guān)系,可以使用指針變量的賦值方式來實現(xiàn)指針變量與一般變量建立關(guān)系。其一般形式為:式來實現(xiàn)指針變量與一般變量建立關(guān)系。其一般形式為: 指針變量名指針變量名=&
12、;變量名;變量名; 例如:例如: int i, j; int *pi, *pj; pi=&i; pj=&j; 也可以在定義指針變量的同時直接初始化,例如:也可以在定義指針變量的同時直接初始化,例如:int a, b;int *p1=&a, *p2=&b;指針變量指針變量pi存放的是變量存放的是變量i的地址的地址指針變量指針變量pj存放的是變量存放的是變量j的地址的地址*pi表示變量表示變量i的值的值*pj表示變量表示變量j的值的值一個變量的指針包括兩方面的含義:一個變量的指針包括兩方面的含義:“以存儲單元編號表示的地址以存儲單元編號表示的地址”“它指向的存儲單元
13、的數(shù)據(jù)類型它指向的存儲單元的數(shù)據(jù)類型” 。int *pi; 定義了一個定義了一個指向整型數(shù)據(jù)的指針變量指向整型數(shù)據(jù)的指針變量pi指針變量的指向關(guān)系指針變量的指向關(guān)系變量變量i=3內(nèi)存用戶數(shù)據(jù)區(qū)內(nèi)存用戶數(shù)據(jù)區(qū)4050變量變量j=6變量變量k=9變量變量pi4050405240548000000010010000000000000011000000000000011000000000int i, j, k;int *pi, *pj;i=3; j=6; k=9;如果執(zhí)行了以下語句如果執(zhí)行了以下語句 pi=&i;則意味著則意味著pi指向了整型變量指向了整型變量i這時這時*pi和和 i 都表示同
14、一值都表示同一值34. 指針變量的引用指針變量的引用指針變量的引用方式有以下兩種:指針變量的引用方式有以下兩種:指針變量名指針變量名表示所指變量的地址表示所指變量的地址*指針變量名指針變量名表示所指變量的值表示所指變量的值 例如,執(zhí)行了如下語句:例如,執(zhí)行了如下語句:int *pi, i; pi=&i; pi表示整型變量表示整型變量 i 的的地址地址*pi表示整型變量表示整型變量 i 的的值值在指針變量定義語句在指針變量定義語句 int *pi; 中中“pi”表示表示“指向整型數(shù)據(jù)的指針變量指向整型數(shù)據(jù)的指針變量”“int *”表示指向整型數(shù)據(jù)的指針類型表示指向整型數(shù)據(jù)的指針類型不能將
15、星號不能將星號“*”和和pi看成一個整體看成一個整體“*pi”在指針變量引用中,在指針變量引用中,“*pi”是一個整體,表示指是一個整體,表示指針變量針變量pi所指向的整型變量所指向的整型變量 i 的值的值補充實例補充實例1#include main( )int a , b;int *p, *q;a = 100; b = 10;p = &a; q = &b;printf(%d,%dn, a, b );printf(%d,%dn, *p, *q );運行結(jié)果為:運行結(jié)果為:100, 10100, 10補充實例補充實例2#include main( )int a = 100, b
16、= 10;int *p= &a, *q = &b;printf(%d,%dn, a, b );printf(%d,%dn, *p, *q );運行結(jié)果為:運行結(jié)果為:100, 10100, 10若有若有p=&a;那么那么&*p的含義是:的含義是:&和和*的優(yōu)先級相同,為右結(jié)的優(yōu)先級相同,為右結(jié)合性,先進行合性,先進行*p運算,即運算,即得到得到變量變量a,再執(zhí)行再執(zhí)行&運運算算因此因此&*p與與&a相同相同*&a 與與 a 等價等價(*p)+與與 a+ 等價等價指針變量的值可以交換指針變量的值可以交換執(zhí)行語句執(zhí)行語句 p
17、= &a; q=&b; 后后執(zhí)行語句執(zhí)行語句 q = &a; p=&b; 后后paqbpaqb例例6.2(方法(方法1)輸入兩個數(shù),按從大到小的順序?qū)⑵漭敵鲚斎雰蓚€數(shù),按從大到小的順序?qū)⑵漭敵鰒oid main ( ) int a, b, t; scanf (%d, %d, &a, &b); if ( ab ) t=a; a=b; b=t; printf (max = %d , min = %d n, a, b) ;5ab595tab例例6.2 (方法(方法2)輸入兩個數(shù),按從大到小的順序?qū)⑵漭敵鲚斎雰蓚€數(shù),按從大到小的順序?qū)⑵漭敵鰉ain (
18、) int *p1, *p2 , *p , a , b ; scanf (%d, %d, &a, &b) ; p1 = &a; p2 = &b ; if (ab) p=p1; p1=p2; p2=p; printf (a = %d , b = %d n, a, b) ; printf (max = %d , min = %d n, *p1, *p2) ;a5bp1p2abb5ap1p2ab例例6.2 分析分析一個指針變量在程序運行過程中可以改變指向,一個指針變量在程序運行過程中可以改變指向,使其獲得不同的值。使其獲得不同的值。當(dāng)指針變量當(dāng)指針變量pa、pb分別指
19、向整型變量分別指向整型變量a、b時,按時,按照照pa、pb的順序輸出,結(jié)果就是先輸出的順序輸出,結(jié)果就是先輸出a的值,的值,再輸出再輸出b的值。的值。如果交換如果交換pa、pb指向,使其分別指向變量指向,使其分別指向變量b、a,同樣按照同樣按照pa、pb的順序輸出,則結(jié)果就是先輸出的順序輸出,則結(jié)果就是先輸出b的值,再輸出的值,再輸出a的值,從而達(dá)到的值,從而達(dá)到a、b數(shù)據(jù)排序的數(shù)據(jù)排序的目的。目的。例例6.2 程序分析程序分析當(dāng)本例所輸入的數(shù)據(jù)當(dāng)本例所輸入的數(shù)據(jù)a小于小于b時時,數(shù)據(jù)交換前后的內(nèi)存情況數(shù)據(jù)交換前后的內(nèi)存情況如下:如下: 5 9 &a &ba=5b=9ppapb
20、&a&b 5 9 &b &aa=5b=9ppapb&a&b從圖中可以看出,交換前后變量從圖中可以看出,交換前后變量a、b的值并未改變,而是的值并未改變,而是指針變量指針變量pa、pb的值交換了,改變了指針變量的值交換了,改變了指針變量pa、pb的的指向,重新與變量指向,重新與變量b、a建立了聯(lián)系。建立了聯(lián)系。 6.3 指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù)的主要方式:指針變量作函數(shù)參數(shù)的主要方式:函數(shù)調(diào)用時,將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參函數(shù)調(diào)用時,將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參地址傳遞特點:地址傳遞特點:l形參與實參占用
21、形參與實參占用同樣的存儲單元同樣的存儲單元l“雙向雙向”傳遞傳遞l實參和形參必須實參和形參必須是地址常量或變量是地址常量或變量 當(dāng)使用指針變量作函數(shù)參數(shù)時,雖然仍然遵循當(dāng)使用指針變量作函數(shù)參數(shù)時,雖然仍然遵循“值傳遞值傳遞”的原則,但確實能夠?qū)崿F(xiàn)在被調(diào)函數(shù)中交換的兩個數(shù),能在主的原則,但確實能夠?qū)崿F(xiàn)在被調(diào)函數(shù)中交換的兩個數(shù),能在主調(diào)函數(shù)中訪問。調(diào)函數(shù)中訪問。實參實參a的內(nèi)存空間的內(nèi)存空間復(fù)制地址值復(fù)制地址值實參地址內(nèi)存空間實參地址內(nèi)存空間形參地址內(nèi)存空間形參地址內(nèi)存空間值傳遞值傳遞地址傳遞方式:地址傳遞方式:主調(diào)主調(diào)函數(shù)函數(shù)被調(diào)被調(diào)函數(shù)函數(shù)例例6.3【例例6.3】輸入一行字符,統(tǒng)計各類字符的數(shù)
22、量。輸入一行字符,統(tǒng)計各類字符的數(shù)量。分析問題:分析問題: 定義定義5個指向整型數(shù)據(jù)的指針變量個指向整型數(shù)據(jù)的指針變量c1、c2、c3、c4、c5,分別統(tǒng)計大寫字母、小寫字母、空格、數(shù)字、,分別統(tǒng)計大寫字母、小寫字母、空格、數(shù)字、其它字符的數(shù)量。在循環(huán)中采用其它字符的數(shù)量。在循環(huán)中采用getche()函數(shù)輸入若函數(shù)輸入若干個字符,最后輸入干個字符,最后輸入“#”結(jié)束循環(huán)。結(jié)束循環(huán)。 例例6.3程序程序#include void main() int *c1,*c2,*c3,*c4,*c5; char ch; *c1=0; *c2=0; *c3=0; *c4=0; *c5=0; ch=getch
23、e(); while(ch!=#) if(ch=A&ch=a&ch=0&ch=說明說明p+、p-、+p、-p和和p-=n、p+=n、p=p+n、p=p-n(這里(這里n表示整型數(shù)據(jù),表示整型數(shù)據(jù),p為指針變量)等為指針變量)等運算的結(jié)果仍為指針。運算的結(jié)果仍為指針。 指針變量的加或減運算,只對具有連續(xù)存儲單元指針變量的加或減運算,只對具有連續(xù)存儲單元的相同數(shù)據(jù)類型才有實際意義,而對幾個單變量的相同數(shù)據(jù)類型才有實際意義,而對幾個單變量或不同數(shù)據(jù)類型的連續(xù)存儲單元的變量均無實際或不同數(shù)據(jù)類型的連續(xù)存儲單元的變量均無實際意義。意義。指針運算一般用于指向數(shù)組的指針變量。指針運算
24、一般用于指向數(shù)組的指針變量。7.3.2 指向一維數(shù)組的指針指向一維數(shù)組的指針1.指向一維數(shù)組的指針變量指向一維數(shù)組的指針變量C語言規(guī)定,數(shù)組名表示數(shù)組的首地址,即數(shù)組的第一個語言規(guī)定,數(shù)組名表示數(shù)組的首地址,即數(shù)組的第一個元素的地址。元素的地址。指針變量可以存放一般變量的地址(指向變量),也可以指針變量可以存放一般變量的地址(指向變量),也可以存放數(shù)組元素的地址(指向數(shù)組元素),還可以存放數(shù)組存放數(shù)組元素的地址(指向數(shù)組元素),還可以存放數(shù)組的首地址(指向數(shù)組)。的首地址(指向數(shù)組)。 定義定義 int a20,*p,i; 執(zhí)行執(zhí)行 p=a; 或或 p=&a0; 后后指針變量指針變量p
25、就指向了一維數(shù)組就指向了一維數(shù)組a,也稱之為,也稱之為p與與a建立了聯(lián)系建立了聯(lián)系在內(nèi)存中指針變量在內(nèi)存中指針變量p與數(shù)組與數(shù)組a之間的關(guān)系如圖所示之間的關(guān)系如圖所示pa13 39 96 61 1&a2:4005&a3:4007&a0:4001&a1:400380014001p+1p+2p+3a2a3a0一維數(shù)組與指針的等價表示法一維數(shù)組與指針的等價表示法l 執(zhí)行語句:執(zhí)行語句: int a20,*p=a;l 指向數(shù)組的指針變量指向數(shù)組的指針變量也可以帶下標(biāo)。如也可以帶下標(biāo)。如pi與與*(p+i)是等價的,)是等價的,*(a+i)和)和ai是等價是等價的。的。l
26、 下標(biāo)運算符實際下標(biāo)運算符實際上是變址運算符,即上是變址運算符,即ai先按先按a+i計算地址,計算地址,然后找出該地址單元然后找出該地址單元中的值。中的值。l C編譯時,編譯時,ai被解釋被解釋成成*(a+i),因此指針),因此指針表示法比下標(biāo)表示法表示法比下標(biāo)表示法效率更高。效率更高。a數(shù)組存儲區(qū)數(shù)組存儲區(qū)a0a1a24000400240044000+2*iai8010pp , a,&a0p+2,a+2,&a2p+i,a+i,&ai,&a0+ia194038p+19,a+19,&a19p+1,a+1,&a1*p,*a,p0*(p+1),*(a+
27、1),p1*(p+2),*(a+2),p2*(p+i),*(a+i),pi*(p+19),*(a+19),p19地址描述地址描述數(shù)組元素描述數(shù)組元素描述-1010082582. 指向一維數(shù)組元素的指針變量指向一維數(shù)組元素的指針變量執(zhí)行執(zhí)行 int a20,*p; p=a; *(a+i)、*(p+i)和和ai表示同一個數(shù)表示同一個數(shù)組元素組元素執(zhí)行執(zhí)行int a20,*p; p=&a6; p是是a6的地址,的地址,*p表示表示a6的值的值后移一個元素后移一個元素p-1是是a5的地址,的地址,*(p-1)表示表示a5的值的值前移一個元素前移一個元素p+1是是a7的地址,的地址,*(p+1)
28、表示表示a7a10p-2pp+4a3a4a5a6a7a8a9a11 *(p-2) *p *(p+2)3. 引用數(shù)組元素的不同方法引用數(shù)組元素的不同方法地址方式:地址方式:*(地址地址)#include void main() int a10,i; for(i=0; i10; i+) scanf(%d,a+i); printf(n); for(i=0; i10; i+) printf(%6d,*(a+i); 下標(biāo)法:下標(biāo)法: ai格式格式#include void main() int a10,i; for(i=0; i10; i+) scanf(%d,&ai); printf(n);
29、for(i=0; i10; i+) printf(%6d,ai); 3. 引用數(shù)組元素的不同方法引用數(shù)組元素的不同方法#include void main() int a10, i, *p; for(p=a,i=0; i10; i+) scanf(%d, p+i); printf(n); for(p=a, i=0; i10; i+) printf(%6d, *(p+i);7.4 一維數(shù)組及其指針作函數(shù)參數(shù)一維數(shù)組及其指針作函數(shù)參數(shù)l 在函數(shù)參數(shù)傳遞中,實參和形參的參數(shù)傳遞只有兩種:在函數(shù)參數(shù)傳遞中,實參和形參的參數(shù)傳遞只有兩種: 值傳遞值傳遞和和地址地址傳遞傳遞。指針變量存放的是地址,用指針變
30、量作為參數(shù)進行傳遞,實際。指針變量存放的是地址,用指針變量作為參數(shù)進行傳遞,實際上是一種地址傳遞方式。上是一種地址傳遞方式。函數(shù)參數(shù)傳遞中形參與實參必須在參數(shù)個數(shù)函數(shù)參數(shù)傳遞中形參與實參必須在參數(shù)個數(shù)和數(shù)據(jù)類型上相匹配和數(shù)據(jù)類型上相匹配。l 數(shù)組名是常量地址,指針變量也是存儲地址的,因此,數(shù)組名是常量地址,指針變量也是存儲地址的,因此,指針變量和數(shù)指針變量和數(shù)組名可以組合使用組名可以組合使用。 l 用數(shù)組名和指針變量作函數(shù)參數(shù),實參與形參的對應(yīng)關(guān)系有用數(shù)組名和指針變量作函數(shù)參數(shù),實參與形參的對應(yīng)關(guān)系有4種情況:種情況:方式方式實參實參形參形參 數(shù)組名數(shù)組名 數(shù)組名數(shù)組名 數(shù)組名數(shù)組名 指針變量
31、指針變量 指針變量指針變量 指針變量指針變量 指針變量指針變量 數(shù)組名數(shù)組名 1. 實參與形參都用數(shù)組名實參與形參都用數(shù)組名int main()int main() int a10; int a10; f(a,10); f(a,10); void f(int x,int n)void f(int x,int n) 數(shù)組數(shù)組a,xa0a1x0 x1x9a9可以認(rèn)為有一形參數(shù)組,與實參數(shù)組共用一段內(nèi)存單元??梢哉J(rèn)為有一形參數(shù)組,與實參數(shù)組共用一段內(nèi)存單元。2. 實參用指針變量,形參用數(shù)組名實參用指針變量,形參用數(shù)組名實參實參p為指針變量,通過為指針變量,通過p=a;使它指向使它指向a0。形參為數(shù)組
32、名。形參為數(shù)組名x,而,而數(shù)組名實際上是作為指針來處理的。將數(shù)組名實際上是作為指針來處理的。將a0的地址傳遞給了形參的地址傳遞給了形參x,也就是說數(shù)組也就是說數(shù)組x的首地址是的首地址是a0的地址。這樣可以理解為數(shù)組的地址。這樣可以理解為數(shù)組x與與數(shù)組數(shù)組a共用同一段內(nèi)存單元。在執(zhí)行過程中,共用同一段內(nèi)存單元。在執(zhí)行過程中,xi的變化就是的變化就是ai的變化。的變化。int main()int main() int a10, int a10,* *p;p; p=a; p=a; f(p,10); f(p,10); void f(int x,int n)void f(int x,int n) 數(shù)組數(shù)
33、組a,xa0, x0a1, x1pa9, x93. 實參用數(shù)組名,形參用指針變量實參用數(shù)組名,形參用指針變量實參實參a a為數(shù)組名,形參為數(shù)組名,形參x x為指向整型變量的指針變量。函數(shù)開為指向整型變量的指針變量。函數(shù)開始執(zhí)行時,始執(zhí)行時,x x指向指向a0a0。通過。通過x x值的改變,可以指向數(shù)組值的改變,可以指向數(shù)組a a的任一的任一元素。元素。int main()int main() int a10; int a10; f(a,10); f(a,10); void f(int void f(int * *x,int n)x,int n) 數(shù)組數(shù)組aa0a1xa94. 實參與形參都用指針
34、變量實參與形參都用指針變量實參實參p p和形參和形參x x都是指針變量。先使實參指針變量都是指針變量。先使實參指針變量p p指向數(shù)組指向數(shù)組a a,p p的值是的值是&a0&a0。然后再將。然后再將p p的值傳給形參指針變量的值傳給形參指針變量x x,x x的初值也的初值也是是&a0&a0。通過。通過x x值的改變可以使值的改變可以使x x指向數(shù)組指向數(shù)組a a的任一元素。的任一元素。int main()int main() int a10, int a10,* *p;p; p=a; p=a; f(p,10); f(p,10); void f(int void
35、f(int * *x,int n)x,int n) 數(shù)組數(shù)組aa0a1p,xa92022年2月12日星期六52應(yīng)用實例應(yīng)用實例【例例7.2】輸入一個班輸入一個班30個學(xué)生的個學(xué)生的C語言語言成績,成績,并輸出最高分。并輸出最高分。分析問題:分析問題: 可以定義一個具有可以定義一個具有30個元素的整型數(shù)組變量,個元素的整型數(shù)組變量,數(shù)組的每個元素代表一個學(xué)生的數(shù)組的每個元素代表一個學(xué)生的C語言語言成績,成績,然后通過循環(huán)結(jié)構(gòu)對一維數(shù)組的每個元素進行比較,然后通過循環(huán)結(jié)構(gòu)對一維數(shù)組的每個元素進行比較,得到最大值,即最高分。得到最大值,即最高分。2022年2月12日星期六53例例7.2程序程序下標(biāo)法
36、下標(biāo)法#include int main() int a30,max,i; /* 定義一維數(shù)組定義一維數(shù)組a */ for(i=0;i30;i+) scanf(%d,&ai); /* 給數(shù)組元素賦值給數(shù)組元素賦值 */ max=a0; for(i=0;imax) max=ai; /* 求最高分求最高分 */ printf(max=%dn,max); /* 輸出最高分輸出最高分 */ return(0);2022年2月12日星期六54例例7.2程序程序指針法指針法#include int max(int *p,int n);int main() int a30,v,i; /* 定義一維數(shù)
37、組定義一維數(shù)組a */ for(i=0;i30;i+) scanf(%d,&ai); /* 給數(shù)組元素賦值給數(shù)組元素賦值 */ v=max(a,30); /* 調(diào)用函數(shù),返回最高分值調(diào)用函數(shù),返回最高分值v */ printf(max=%dn,v); /* 輸出最高分輸出最高分 */ return(0);int max(int *p,int n) int m,i; m=*p; /*這里這里*p對應(yīng)對應(yīng)a0的值的值*/ for(i=0;im) m=*(p+i); /*求最高分,求最高分,*(p+i)對應(yīng)對應(yīng)ai的值的值*/ return(m);2022年2月12日星期六55例例7.3【例
38、例7.3】用篩法求用篩法求100以內(nèi)的素數(shù)。以內(nèi)的素數(shù)。分析問題:分析問題: 篩法的具體做法是:先把篩法的具體做法是:先把N個自然數(shù)按次序排列起來。個自然數(shù)按次序排列起來。1不是素不是素數(shù),也不是合數(shù),要劃去。第二個數(shù)數(shù),也不是合數(shù),要劃去。第二個數(shù)2是素數(shù)留下來,而把是素數(shù)留下來,而把2后面所后面所有能被有能被2整除的數(shù)都劃去。整除的數(shù)都劃去。2后面第一個沒有劃去的數(shù)后面第一個沒有劃去的數(shù)3是素數(shù)留下來,是素數(shù)留下來,再把再把3后面所有能被后面所有能被3整除的數(shù)都劃去。整除的數(shù)都劃去。3后面第一個沒有劃去的數(shù)后面第一個沒有劃去的數(shù)5是素數(shù)留下來,再把是素數(shù)留下來,再把5后面所有能被后面所有能
39、被5整除的數(shù)都劃去。這樣一直做整除的數(shù)都劃去。這樣一直做下去,就會把不超過下去,就會把不超過N的全部合數(shù)都篩掉,留下來的就是不超過的全部合數(shù)都篩掉,留下來的就是不超過N的的全部素數(shù)。全部素數(shù)。 因為希臘人是把數(shù)寫在涂臘的板上,每劃去一個數(shù),就在上面記因為希臘人是把數(shù)寫在涂臘的板上,每劃去一個數(shù),就在上面記一小點,求完全部素數(shù)后,許多小點就像一個篩子,所以就把埃拉托一小點,求完全部素數(shù)后,許多小點就像一個篩子,所以就把埃拉托斯特尼的方法叫做斯特尼的方法叫做“埃拉托斯特尼篩埃拉托斯特尼篩”,簡稱,簡稱“篩法篩法”。 定義一個數(shù)組存放定義一個數(shù)組存放100以內(nèi)的數(shù),按照上述方法未被劃掉的數(shù)保以內(nèi)的數(shù)
40、,按照上述方法未被劃掉的數(shù)保留原數(shù),被劃掉的數(shù)置留原數(shù),被劃掉的數(shù)置0,最后留下的數(shù)組元素值不為,最后留下的數(shù)組元素值不為0的數(shù)就是素的數(shù)就是素數(shù)。數(shù)。2022年2月12日星期六56例例7.3程序程序/* LT7_3.c */#include #include #define N 100void fun(int a,int n);int main() int i,n,aN+1; for(i=1;i=N;i+) ai=i; fun(a,N); /* 調(diào)用函數(shù)求素數(shù)調(diào)用函數(shù)求素數(shù) */ printf(n); for(i=2,n=0;i=N;i+) if(ai!=0) printf(%5d,ai);
41、 /* 輸出素數(shù)輸出素數(shù) */ n+; if(n%10=0) printf(“n”); /* 每行輸出每行輸出10個素數(shù)個素數(shù) */ return(0);/* 用篩法求素數(shù)用篩法求素數(shù) */void fun(int a,int n) int i,j; for(i=2;i=sqrt(n);i+) if(ai!=0) for(j=i+1;j=n;j+) if(aj!=0)&(aj%ai=0) aj=0; /*劃掉的數(shù)置劃掉的數(shù)置0值值*/ 例例7.4【例例7.4】將數(shù)組將數(shù)組array中中n個整數(shù)按相反順序存放。個整數(shù)按相反順序存放。分析:分析:如果有數(shù)組如果有數(shù)組a,正序為,正序為a0、
42、a1、an-2、an-1,則相反順序為則相反順序為an-1、an-2、a1、a0,即,即a0與與an-1交換,交換,a1與與an-2交換,直到數(shù)組的中間兩個元素交換,直到數(shù)組的中間兩個元素交換。交換。如果數(shù)組如果數(shù)組a為奇數(shù)個元素,則中間一個元素不動;如果數(shù)為奇數(shù)個元素,則中間一個元素不動;如果數(shù)組組a為偶數(shù)個元素,則中間兩個元素要交換。為偶數(shù)個元素,則中間兩個元素要交換??梢杂每梢杂胕變量來表示下標(biāo)從小到大,用變量來表示下標(biāo)從小到大,用j變量來表示下標(biāo)從變量來表示下標(biāo)從大到小,即交換大到小,即交換ai和和aj,其中,其中i取值取值0、1、,j取值取值n-1、n-2、,直到,直到i=(n-1)
43、/2為止。為止。4 9 7 11 0 7 6 5 34 9 7 11 0 7 6 5 3 2 22 3 5 6 7 0 11 7 9 42 3 5 6 7 0 11 7 9 4i jm例例7.4程序程序#include #define N 10void inverter(int *p, int n); int main() int i, arrayN; printf(The original array:n); for(i=0; iN; i+) scanf(%d, &arrayi); /* 輸入數(shù)組元素輸入數(shù)組元素 */ printf(n); inverter(array,N); /*
44、 調(diào)用函數(shù),將數(shù)組反向存放調(diào)用函數(shù),將數(shù)組反向存放 */ printf(The array has been inverted:n); for(i=0; iN; i+) printf(%dt, arrayi); printf(n); return(0);void inverter(int *p,int n) int i,j,m,temp; m=(n-1)/2; /*中間下標(biāo)中間下標(biāo)*/ i=0; /* 第一個元素下標(biāo)值第一個元素下標(biāo)值 */ j=n-1; /* 最后一個元素下標(biāo)值最后一個元素下標(biāo)值 */ for(;i=m; i+,j-) temp=*(p+i); *(p+i)=*(p+j);
45、*(p+j)=temp; 2022年2月12日星期六60例例7.5【例例7.5】編程實現(xiàn)插入一個數(shù)到有序數(shù)組中。編程實現(xiàn)插入一個數(shù)到有序數(shù)組中。 分析問題:分析問題: 插入是數(shù)組的基本操作之一,插入排序法的關(guān)鍵是找到該插入的位置,插入是數(shù)組的基本操作之一,插入排序法的關(guān)鍵是找到該插入的位置,然后依次移動插入位置及其以后的所有元素,空出的這個位置放入待插入的然后依次移動插入位置及其以后的所有元素,空出的這個位置放入待插入的元素。插入的基本思想是:首先要查找待插入數(shù)據(jù)在數(shù)組中的位置元素。插入的基本思想是:首先要查找待插入數(shù)據(jù)在數(shù)組中的位置pos,然,然后從最后一個元素開始往前直到下標(biāo)為后從最后一個
46、元素開始往前直到下標(biāo)為pos的元素依次往后移動一個位置,的元素依次往后移動一個位置,最后當(dāng)?shù)谧詈螽?dāng)?shù)趐os個元素的位置空出后就將要插入的數(shù)據(jù)插入。其原理如下圖所個元素的位置空出后就將要插入的數(shù)據(jù)插入。其原理如下圖所示。它是在示。它是在15、23、34、42、59、75這列有序數(shù)據(jù)中插入這列有序數(shù)據(jù)中插入50這個數(shù)成這個數(shù)成為新的有序數(shù)列:為新的有序數(shù)列: 15、23、34、42、50、59、75。15 23 34 42 59 75 15 23 34 42 59 75 a0 a1 a2 a3 a4 a5 a6a0 a1 a2 a3 a4 a5 a6 插入插入50前:前: 插入位置插入位置15 2
47、3 34 42 15 23 34 42 5050 59 75 59 75a0 a1 a2 a3 a4 a5 a6a0 a1 a2 a3 a4 a5 a6插入元素插入元素 插入插入50后后2022年2月12日星期六61例例7.5程序程序下標(biāo)法下標(biāo)法/* LT7_5A.c */#include #define SIZE 20/* 自定義函數(shù)聲明自定義函數(shù)聲明 */int findposition(int array,int n,int data); int insert(int array,int n,int data,int pos); int main() int aSIZE,d,i,n; p
48、rintf(Input array length: ); scanf(%d,&n); /* 輸入插入前數(shù)組長度,輸入插入前數(shù)組長度,n要求小于要求小于SIZE */ printf(nInput array %d element:n,n); for(i=0; in; i+) scanf(%d,&ai); /* 輸入插入前已排好序的元素輸入插入前已排好序的元素 */ printf(nBefore insert:n); for(i=0; in; i+) printf(%dt,ai); /* 輸出插入前的數(shù)組元素輸出插入前的數(shù)組元素 */ printf(nInput insert da
49、ta: ); scanf(%d,&d); /* 輸入要插入的數(shù)據(jù)輸入要插入的數(shù)據(jù) */ n=insert(a,n,d,findposition(a,n,d); /* 插入數(shù)據(jù)插入數(shù)據(jù) */ printf(nAfter insert %d:n,d); for(i=0; in; i+) printf(%dt,ai); /* 輸出插入后的數(shù)組元素輸出插入后的數(shù)組元素 */ return(0);2022年2月12日星期六62例例7.5程序程序下標(biāo)法(續(xù))下標(biāo)法(續(xù))/* 查找查找data數(shù)據(jù)在數(shù)據(jù)在array數(shù)組中的插入的位置數(shù)組中的插入的位置 */int findposition(int a
50、rray,int n,int data) int i; for(i=0;(iarrayi); i+); return(i); /* 返回插入的位置返回插入的位置 */* 在在array數(shù)組的數(shù)組的pos位置插入位置插入data數(shù)據(jù)數(shù)據(jù) */int insert(int array,int n,int data,int pos) int i; for(i=n-1; i=pos; i-) arrayi+1=arrayi; /* 將插入位置以后的元素后移將插入位置以后的元素后移1位位 */ arraypos=data; /* 將數(shù)據(jù)將數(shù)據(jù)data插入到插入到pos的位置的位置 */ return(n
51、+1); /* 返回數(shù)組的長度返回數(shù)組的長度 */2022年2月12日星期六63例例7.5程序程序指針法指針法/* LT7_5B.c */#include #define SIZE 20int findposition(int array,int n,int data); int insert(int array,int n,int data,int pos); int main() int aSIZE,d,n,*p; printf(Input array length: ); scanf(%d,&n); /* 輸入插入前數(shù)組長度,輸入插入前數(shù)組長度,n要求小于要求小于SIZE */
52、printf(nInput array %d element: n,n); for(p=a; pa+n; p+) scanf(%d,p); /* 輸入插入前已排好序的元素輸入插入前已排好序的元素 */ printf(nBefore insert: n); for(p=a; pa+n; p+) printf(%dt,*p); /* 輸出插入前的數(shù)組元素輸出插入前的數(shù)組元素 */ printf(nInput insert data: ); scanf(%d,&d); /* 輸入要插入的數(shù)據(jù)輸入要插入的數(shù)據(jù) */ n=insert(a,n,d,findposition(a,n,d); /*
53、插入數(shù)據(jù)插入數(shù)據(jù) */ printf(nAfter insert %d: n,d); for(p=a; pa+n; p+) printf(%dt,*p); /* 輸出插入后的數(shù)組元素輸出插入后的數(shù)組元素 */ return(0);2022年2月12日星期六64例例7.5程序程序指針法(續(xù))指針法(續(xù))/* 查找查找data數(shù)據(jù)在數(shù)據(jù)在p所指向的數(shù)組中的插入的位置所指向的數(shù)組中的插入的位置 */int findposition(int *p,int n,int data) int i; for(i=0;(i*p); i+,p+); return(i); /* 返回插入的位置返回插入的位置 */*
54、 在在p所指向的數(shù)組中的所指向的數(shù)組中的pos位置插入位置插入data數(shù)據(jù)數(shù)據(jù) */int insert(int *p,int n,int data,int pos) int i; for(i=n-1; i=pos; i-) *(p+i+1)=*(p+i); /* 將插入位置以后的元素后移將插入位置以后的元素后移1位位 */ *(p+pos)=data; /* 將數(shù)據(jù)將數(shù)據(jù)data插入到插入到pos的位置的位置 */ return(n+1); /* 返回數(shù)組的長度返回數(shù)組的長度 */2022年2月12日星期六65例例7.6【例例7.6】編程實現(xiàn)在一個數(shù)組中刪除一個數(shù)編程實現(xiàn)在一個數(shù)組中刪除一個
55、數(shù) 。 分析問題:分析問題: 刪除是數(shù)組的另一個基本操作,刪除的基本思想是:首先刪除是數(shù)組的另一個基本操作,刪除的基本思想是:首先要查找待刪除數(shù)據(jù)在數(shù)組中的位置要查找待刪除數(shù)據(jù)在數(shù)組中的位置pos,然后從,然后從pos+1開始到開始到最后逐一向前移動。即將最后逐一向前移動。即將pos+1的元素移動到的元素移動到pos元素的位置,元素的位置,再將再將pos+2的元素移動到的元素移動到pos+1元素的位置等等。其原理如元素的位置等等。其原理如下圖所示。下圖所示。 15 23 34 42 75 9015 23 34 42 75 90a0 a1 a2 a3 a4 a5 a6a0 a1 a2 a3 a4
56、 a5 a6 刪除刪除59后后15 23 34 42 59 75 90 15 23 34 42 59 75 90 a0 a1 a2 a3 a4 a5 a6a0 a1 a2 a3 a4 a5 a6 刪除刪除59前:前: 刪除位置刪除位置2022年2月12日星期六66例例7.6程序程序/* LT7_6.c */#include #define SIZE 20int main() int aSIZE,d,i,j,n; printf(Input array length: ); scanf(%d,&n); /* 輸入數(shù)組長度,輸入數(shù)組長度,n要求小于要求小于SIZE */ printf(nIn
57、put array %d element:n,n); for(i=0; in; i+) scanf(%d,&ai); /* 輸入數(shù)組元素輸入數(shù)組元素 */ printf(nBefore delete:n); for(i=0; in; i+) printf(%dt,ai); /* 輸出刪除前的數(shù)組元素輸出刪除前的數(shù)組元素 */ printf(nInput delete data: ); scanf(%d,&d); /* 輸入要刪除的數(shù)據(jù)輸入要刪除的數(shù)據(jù) */ for(i=0,j=0; in; i+) if(ai!=d) /* 非指定數(shù)據(jù)時,保留該數(shù)據(jù)非指定數(shù)據(jù)時,保留該數(shù)據(jù) */
58、 aj=ai; /* 將第將第i個位置的字符移動到第個位置的字符移動到第j個位置上個位置上 */ j+; printf(nAfter delete %d:n,d); for(i=0; iamid時,則時,則x在后半部分,重新賦值在后半部分,重新賦值low=mid,再次計算再次計算mid的值并將的值并將x與與amid進行比較;當(dāng)進行比較;當(dāng)xamid時,則時,則x在前在前半部分,重新賦值半部分,重新賦值high=mid,再次計算,再次計算mid的值并將的值并將x與與amid進行比進行比較。如此重復(fù)上述步驟。較。如此重復(fù)上述步驟。 2022年2月12日星期六68例例7.9程序程序#include
59、#define SIZE 20int bins(int *p,int n,int x);int main() int aSIZE,n,i=0,x,pos; printf(Input array length: ); scanf(%d,&n); printf(nInput array %d element:n,n); scanf(%d,&ai+); while(i=ai-1) i+; printf(nArray: ); for(i=0; in; i+)printf(%5d,ai); printf(nInput x: ); scanf(%d,&x); pos=bins(a,
60、n,x); if(pos!=-1) printf(%d,%d,pos,x); else printf(Not found); return(0);int bins(int *p,int n,int x) int low,high,mid; low=0; high=n-1; while(low*(p+mid) low=mid+1; else if(x*(p+mid) high=mid-1; else return(mid); return(-1); 補充實例補充實例 選擇排序算法選擇排序算法#include void main() int i, index, k, temp; int a10=35, 24, 19, 65, 48, 72, 29, 55, 61,70; for(i=0; i10; i+) index=i;/記下當(dāng)前元素的下標(biāo)記下當(dāng)前元素的下標(biāo) for(k=i+1; k10; k+)/在剩下的元素中在剩下的元素中 if(akaindex) in
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康行業(yè)風(fēng)險控制方法與操作規(guī)范
- 新能源汽車技術(shù)及應(yīng)用創(chuàng)新開發(fā)方案
- 服裝廠勞動合同
- 職業(yè)培訓(xùn)師培訓(xùn)教程
- 環(huán)境保護監(jiān)測與污染控制作業(yè)指導(dǎo)書
- 國有企業(yè)合同管理制度
- 精裝修戰(zhàn)略合作框架協(xié)議書
- 家禽買賣合同集錦
- 委托采購協(xié)議書
- 三農(nóng)產(chǎn)品國際貿(mào)易培訓(xùn)作業(yè)指導(dǎo)書
- 國際貨物運輸委托代理合同(中英文對照)全套
- 全面新編部編版四年級下冊語文教材解讀分析
- 《建筑工程質(zhì)量檢驗評定標(biāo)準(zhǔn)》
- 教學(xué)能力大賽-教學(xué)實施報告《大學(xué)英語2c》
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- VDA6.3 2023過程審核教材
- 高職應(yīng)用語文教程(第二版)教案 3管晏列傳
- 高中物理《光電效應(yīng)》
- 烹飪實訓(xùn)室安全隱患分析報告
- 《金屬加工的基礎(chǔ)》課件
- 運輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
評論
0/150
提交評論