




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-3-51C語言程序設計 2022-3-52第五章 一級指針與一維數組主講主講: : 計算機學院計算機學院 吳敏吳敏天使與魔鬼的化身指針 指針: 鐵桿C/C+程序員最摯愛的武器 指針造就了C/C+的高效和強大,很多不可能的任務由指針完成 黑客攻擊服務器利用的bug絕大部分都是指針和數組造成的這 “該程序執行了非法操作,即將關閉”種錯誤幾乎全是由指針和數組導致的2010年5月10日星期一內存地址內存:計算機內的存儲部件,活動中程序指令和數據都保存在內存中速度快、但是掉電即失內存中的每個字節都有唯一的一個地址, 地址是一個無符號整數(通常用16進制數)只要指明要訪問的內存單元的地址,就可以
2、立即訪問到該單元可以認為:地址和指針是同義詞,變量的指針就是變量的地址2010年5月10日星期一指針的故事 地下工作者阮小二接到上級指令,要去尋找打開密電碼的密鑰,這是一個整數。幾經周折,才探知如下線索,密鑰藏在一棟三年前就被貼上封條的小樓中。一個風雨交加的夜晚,阮小二潛入了小樓,房間很多,不知該進哪一間,正在一籌莫展之際,忽然走廊上的電話鈴聲響起。阮小二抓起聽筒,只聽一個陌生人說:“去打開211房間,那里有線索”。阮小二疾步上樓,打開211房門,用電筒一照,桌上隱約顯現:1000。阮小二眼睛一亮,迅速找到1000房間,取出重要數據66,完成了任務。2010年5月10日星期一故事說明重要數據藏
3、在一個內存地址單元中,地址是1000。地址1000又由另一單元P所指認,P單元的地址為211。66的直接地址是1000;66的間接地址是211,因為211單元中存的是直接地址1000。我們稱P為指針變量,1000是指針變量的值,實際上是有用數據藏在地址為1000的存儲器中。. .10002116610002010年5月10日星期一指針的概念 指針變量:用來存放另一變量地址的變量(內存地址),簡稱指針 指針是對一種特殊變量的稱呼,其特殊性表現在類型(運算)和值上。變量數組字符串函數指針常量2010年5月10日星期一指針既然是變量,所以也具有變量的三個要素:變量的名稱。命名規則與一般變量一樣,是由
4、英文字符或下劃線開始的。變量的類型。“X型指針”、“指向X類型的指針”。變量的值。有特殊含義-是某個內存地址。指針定義類型 *標識符int *pi, *pc;2010年5月10日星期一這里的&是取地址運算符,&i表示取變量i的地址int *pi = &i;表示定義一個指向int型的指針變量pi,并用i的地址來初始化pipi是變量, int *是類型變量占用內存空間,pi的大小是sizeof(int *)指針所指變量int i = 0;int *pi = &i;char c =a;char *pc = &c;c:97i:0.pc:0 x804a0024pi
5、:0 x804a00200 x804a00240 x804a00200 x804a00140 x804a00102010年5月10日星期一示例#include /*演示指針的定義*/int main( ) int i=0;char c=a; int*pi; char *pc;pi = &i;pc = &c;printf(變量t內容tt地址n);printf(-n);printf(it%dtt%pn,i, &i);printf(ct%ctt%pn,c, &c);printf(pit%pt%pn,pi, &pi);printf(pct%pt%pn,pc, &
6、amp;pc);printf(-n);printf(pi=%dtpc=%cn, *pi, *pc);return 0; pointer1.c2010年5月10日星期一NULL是一個等于0的常量,在頭文件stddef.h中定義, 它是唯一的一個允許直接賦值給指針的整數值空指針int *p = NULL; 表示指針不指向任何內存地址 防止其指向任何未知的內存區域 把指針初始化為 NULL 是好習慣, 可以避免產生難以預料的錯誤發生2010年5月10日星期一指針的作用與意義 指針的最根本意義在于:使程序可以通過地址訪問數據和函數。2010年5月10日星期一關于指針的原則 學習原則 一定要學會 其實通
7、常的應用很簡單,就是一個變量 復雜的應用也不建議使用 使用原則 永遠要清楚每個指針指向了哪里 遠要清楚指針指向的位置是什么2010年5月10日星期一指針使用注意事項:指針使用注意事項:(1)指針變量前面的指針變量前面的“*”,表示該變量類型為指針類型。,表示該變量類型為指針類型。例例: float *pointer_1;指針變量名是;指針變量名是pointer_1 ,而不是,而不是* pointer_1 。 (2) 在定義指針變量時必須指定基類型。在定義指針變量時必須指定基類型。需要特別注意的是,只有整型變量的地址才能放到指向需要特別注意的是,只有整型變量的地址才能放到指向整型變量的指針變量中
8、。下面的賦值是錯誤的整型變量的指針變量中。下面的賦值是錯誤的 float a; int * pointer_1; pointer_1=&a; (3)不要將一個整數(或任何其他非地址類型的數據)賦給指針變量)如果已執行了語句 pointer_;對對“”和和“* *”運算符說明:運算符說明:n存在的存在的等價關系:等價關系: n(1 1)pointer_1= =&a; pointer_1= =&a; n(2 2) * * pointer_1pointer_1 =a ; =a ; n(3 3)& &* * pointer_1 pointer_1 = point
9、er_1 ; = pointer_1 ; n(4 4) * *& pointer_1& pointer_1 = pointer_1 = pointer_1 n(5 5) * *&a=a&a=an但是:但是:& &* *a=a; a=a; 卻是錯誤的,卻是錯誤的,因為因為a a不代表地址,所以不代表地址,所以* *a a無意義無意義。int i,*p;p=&i; int *p;float *q;p=q;int i;float *p;p=&i;int *p;p=100;指針變量只指針變量只存放地址存放地址!一個指針變量不能一個指針變量
10、不能指向與其類型不同指向與其類型不同的變量的變量!我是真的,我是真的,你猜對了嗎?你猜對了嗎?應在類型相應在類型相同的指針變同的指針變量之間賦值量之間賦值指針運算2010年5月10日星期一取地址運算符& &運算符用來取被操縱對象的地址 例如: &x表示變量x在內存的存放地址,若x的地址0 xbfff0010, 則&x的值就是0 xbfff0010。 &的優先級是14。2010年5月10日星期一取值運算符* *運算訪問指針所指變量。 例如: x=*p是將指針p所指變量的值賦給x *p=5是將5送入指針p所指變量中 *的優先級也為142010年5月10日星期
11、一& 與 * 的關系#include /*演示指針的定義*/int main( )int * p = NULL;int i = 0;int a5=0,0,0,0,0;p = &i;*p = 1;printf(i = %dn, i);p = a;*p = 2;printf(a0 = %dn, a0);p = &a0;*p = 3;printf(a0 = %dn, a0);p = &a4;*p = 4;printf(a4 = %dn, a4);return 0; &和*互為逆運算 &是取地址運算符,操作對象是變量,&運算的結果指向該變量的指針
12、 *是取值運算符,操作對象是地址,*運算訪問地址表達式所指變量pointer2.c2010年5月10日星期一 指針變量中只能存放地址,因此,在使用中不要將一個整數賦給一指針變量指針賦值#include /*演示指針的賦值*/int main( ) int a = 66; int *p=NULL; int *q=NULL; p = a; q = 66; p = &a; /將變量 a 的地址賦給 p q = p; / 將 p 的值賦給 q printf(%d %d %dn, a, *p, *q); return 0;pointer3.c2010年5月10日星期一指針運算法則 只能進行加減和
13、關系運算 +、- =!= 只能同類型指針之間或指針與整數之間運算2010年5月10日星期一數組下標范圍數組下標范圍0-0-4 4 C語言為這些數據,提供了一種構造數據類型:語言為這些數據,提供了一種構造數據類型:數組。所謂數組。所謂數組就是一組具有相同數據類型的數據數組就是一組具有相同數據類型的數據的有序集合。的有序集合。n一個班學生的學習成績一個班學生的學習成績n一行文字一行文字n一個矩陣一個矩陣這些數據的特點是:這些數據的特點是:- -批量處理數據批量處理數據1.1.具有相同的數據類型具有相同的數據類型2.2.使用過程中需要保留原始數據使用過程中需要保留原始數據1. 格式:類型說明符類型說
14、明符 數組名常量表達式;數組名常量表達式;例如: int aint a1010; ; 它表示定義了一個整形數組,數組名為它表示定義了一個整形數組,數組名為a a,此數組有,此數組有1010個個元素。元素。1 1、一維數組的定義、一維數組的定義1. 1.數組名定名規則和變量名相同,遵循標識符定名規則。數組名定名規則和變量名相同,遵循標識符定名規則。2.2.在定義數組時,需要指定數組中元素的個數。在定義數組時,需要指定數組中元素的個數。方括弧中的常量表達式用來表示元素的個數,即數組長度。方括弧中的常量表達式用來表示元素的個數,即數組長度。3.3.常量表達式中不能包含變量。常量表達式中不能包含變量。
15、 C C語言不允許對數組的大小作動態定義,即數組的大小不依語言不允許對數組的大小作動態定義,即數組的大小不依賴于程序運行過程中變量的值。賴于程序運行過程中變量的值。 int n; int n; scanf( scanf(“%d%d,&n); &n); int a int an n; ; float afloat a0 0; int b(2); int b(2); int k, ak;int k, ak; 常見錯誤:常見錯誤:每個數據元素占用每個數據元素占用的字節數,就是的字節數,就是基基類型類型的字節數的字節數一個元素占一個元素占4個字節個字節一維數組:一維數組: float
16、mark100;float mark100;mark0mark1mark2mark3. . . .mark9986.592.077.552.0. . . .94.0低地址低地址 高地址高地址2 2、一維數組的存放規律、一維數組的存放規律注意:注意:1、定義數組時用到的“數組名常量表達式” 和引用數組元素時用到的“數組名下標” 是有區別的。例如例如 int a10; t=a6; 2、數組不能整體引用,每次只能引用數組的一個元數組不能整體引用,每次只能引用數組的一個元素。素。 數組名下標數組名下標下標可以是整型常量或整型表達式。下標可以是整型常量或整型表達式。例如例如: : a0=a5+a7-a2
17、*32 2、一維數組元素的引用、一維數組元素的引用#include #include void main()void main() int i int i,a a1010; ; for (i=0; i=9;i+) for (i=0; i=0; i-) for(i=9;i=0; i-) printf(%d printf(%d ,a ai i);); printf(n); printf(n); 運行結果如下:運行結果如下:9 8 7 6 5 4 3 2 1 09 8 7 6 5 4 3 2 1 0 程序使程序使a0到到a9的值為的值為09,然后按逆序輸出。然后按逆序輸出。例如例如:int a:in
18、t a1010=0,1,2,3,4,5,6,7,8,9;=0,1,2,3,4,5,6,7,8,9;將數組元素的初值依次放在一對花括弧內。經過上面的定義和初始化之后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9。 4 4、一維數組元素的初始化、一維數組元素的初始化n 1. 1.在定義數組時對數組元素賦以初值。在定義數組時對數組元素賦以初值。例如例如: int a: int a1010=0=0,1 1,2 2,3 3,4; 4; 定義定義a a數組有數組有1010個元素,但花括弧內只提供個元素,但花括弧內只提供5 5個初值,這表示只給個初值,這
19、表示只給前面前面5 5個元素賦初值,后個元素賦初值,后5 5個元素值為個元素值為0 0。n2.2.在定義數組時只給一部分元素賦值。在定義數組時只給一部分元素賦值。 int a int a1010=0,0,0,0,0,0,0,0,0,0;=0,0,0,0,0,0,0,0,0,0; 或或int aint a1010=0;=0; 不能寫成:不能寫成:int aint a1010=0=0* *10;10;n 3.3.如果想使一個數組中全部元素值為如果想使一個數組中全部元素值為0 0,可以寫成,可以寫成: : 例如例如: :int aint a5 5=1=1,2 2,3 3,4 4,5;5;int ai
20、nt a=1=1,2 2,3 3,4 4,5; 5; int aint a1010=1=1,2 2,3 3,4 4,5; 5; 只初始化前5個元素,后5個元素為0。n 4.4.對全部數組元素賦初值可以不指定數組長度。對全部數組元素賦初值可以不指定數組長度。數組的輸入和輸出 數組輸入int array3; int i;for(i = 0; i 3; i+) scanf(%d, &arrayi);int array3;int i; scanf(%d %d %d, &array); 數組輸出int array3;int i; for(i = 0; i 3; i+)printf(%d,
21、 arrayi); int array3;int i; printf(%d, array); 11年4月6日星期三數據下標越界問題 C語言不檢查數組下標的越界。如果定義數組 int a10,合法的下標范圍是0 9,但如果你引用a10,系統不會報錯,但是程序非常容易出現異常 解決方法:程序員在對下標變量進行操作前,仔細檢查下標的合法性11年4月6日星期三請點評#include int main()int i;int a3 = 111, 222, 333;for (i = 1; i = 3; i+) ai = 0; printf(%dn, ai);return(0);overflow.c11年4月
22、6日星期三指針與數組2010年5月10日星期一指針與數組 指針與數組有著密切的關系 數組名是數組的首地址,指針值也是一個地址則p與a表示 如果指針指向數組的首地址,例p指向a0,的是同一個對象 事實上,在C中把數組名可以看作常量指針 指針也可當作數組名使用2010年5月10日星期一指針與數組等價之處 注意: ai,pi, *(a+i), *(p+i)等價#include /*演示指針標識數組*/int main( ) int i=0; int *p = NULL; int a5=0,1,2,3,4; p = a; for(i=0; i5; i+) printf(a%d = %d %d %d %
23、dn, i, ai, pi, *(a+i), *(p+i); pointer4.c return 0;2010年5月10日星期一表表5.2 5.2 數組元素及元素地址的表示(數組元素及元素地址的表示(數組定義:數組定義:int a5;int a5;)表示表示 意義意義 等價表示等價表示 a a 數組第一個元素的地址,是指針常量數組第一個元素的地址,是指針常量 &a0&a0a+i(0i4) a+i(0i4) 第第i+1i+1個元素的地址,是指針常量表個元素的地址,是指針常量表達式,不可被修改達式,不可被修改 &ai &ai &ai(0i4)&ai(
24、0i4)a+i a+i * *(a+i)(0i4)(a+i)(0i4) 第第i+1i+1個元素的間接引用表達,是基個元素的間接引用表達,是基類型的變量類型的變量 ai ai ai(0i4)ai(0i4)第第i+1i+1個元素的下標(索引)表達,個元素的下標(索引)表達,是基類型的變量是基類型的變量 * *(a+i) (a+i) 總結:總結:一維數組元素的一維數組元素的地址地址有兩種等價表示:有兩種等價表示:a+i= =&aia+i= =&ai;一維;一維數組數組元素元素有兩種等價表示:有兩種等價表示:* *(a+i)= ai(a+i)= ai指針與數組不同之處 指針是一個變量
25、數組名不是一個變量,是一個常量指針 定義數組分配空間由類型和下標決定,定義指針僅僅分配指針類型空間int *p;int a=1,2,3;a = p;a+;int *p;int a=1,2,3;p = a;p+;2010年5月10日星期一字符指針#include /*演示字符指針和字符串*/int main() char *sp = I Love China; char *sv = NULL; char str = I am a student; sv = sp; sp = str; printf(%sn, sp); printf(%sn, sv); return 0; 字符串實際上是常量字符數
26、組在C語言中,除了用字符數組表示字符串,還可以用字符指針來表示字符串編譯系統為sp、sv分配指針類型空間并初始化,為str分配字符型空間并初始化char_pointer.c2010年5月10日星期一str是一個僅僅足以存放初始化字符串及空字符0的一維數組,數組中的字符元素可以修改,但是str始終指向同一地址sp是一個指針,其初值指向一個字符串常量,之后它可以被修改已指向任何其它地址。字符指針與字符數組的區別char str = I Love China;char *sp = I Love China;IL o v eC h i n a 0L o v eC h i n a 0str: Isp:2
27、010年5月10日星期一請點評#include /*演示字符指針和字符串*/int main() char *sp; char str14; sp = C Programming; str= C Programming; printf(%sn, sp); printf(%sn, str); return 0; array_error.c2010年5月10日星期一請點評 注意數組名是常量指針,不能改變array_error.c#include /*演示字符指針和字符串*/int main() char *sp; char str14; sp = C Programming; str= C Pro
28、gramming; printf(%sn, sp); printf(%sn, str); return 0; 2010年5月10日星期一n1 1、表示、表示“數組數組”這個整體概念這個整體概念n2 2、表示該數組的位置,即數組第一個元素的地址,此、表示該數組的位置,即數組第一個元素的地址,此時時a a的值等于的值等于a0a0這個元素的物理地址,此時這個元素的物理地址,此時a+ia+i的數值的數值等于等于aiai這個元素的物理地址,這個元素的物理地址,* *(a+i)(a+i)表示表示aiai這個元這個元素的間接表示方法,如下圖示意:素的間接表示方法,如下圖示意:n從鍵盤上輸入從鍵盤上輸入101
29、0個整數,輸出這些元素及其中正數和負個整數,輸出這些元素及其中正數和負數的個數(請用數組實現)數的個數(請用數組實現)#include #include int main()int main() int a10,i; int a10,i; int positive=0,negative=0; int positive=0,negative=0; printf(Please input 10 elements:n);printf(Please input 10 elements:n);for (i=0;i10;i+) for (i=0;i10;i+) scanf(%d,&ai); sca
30、nf(%d,&ai); for (i=0;i10;i+)for (i=0;i0) positive+; if(ai0) positive+; else if (ai0) negative+ ;else if (ai0) negative+ ;for (i=0;i10;i+) for (i=0;i10;i+) printf(%d,ai);printf(%d,ai);printf(n positive number are %d,negative number are printf(n positive number are %d,negative number are %dn,posit
31、ive,negative);%dn,positive,negative);return 0;return 0; n程序程序5.35.3從鍵盤上輸入從鍵盤上輸入n(1n10)n(1n10)個整數,求出最大值個整數,求出最大值n思路思路:(1 1)首先需要定義數組以存儲)首先需要定義數組以存儲n n個整數,再用一層循環輸出元素值個整數,再用一層循環輸出元素值(2 2)然后用一層循環作統計、找最大值)然后用一層循環作統計、找最大值(3 3)最后輸出結果)最后輸出結果 #include #include int main()int main() int a10,i,n; int a10,i,n; in
32、t max; int max; dodo printf(Please input n(1=n=10):n);printf(Please input n(1=n=10):n);scanf(%d,&n);scanf(%d,&n);while (n10);while (n10);printf(Please input %d elements:n,n);printf(Please input %d elements:n,n);for (i=0;in;i+) for (i=0;in;i+) max=a0 ;max=a0 ; for (i=1;in; i+) for (i=1;imax)
33、max=(a+i)max) max=* *(a+i);(a+i); printf(max element=%dn,max);printf(max element=%dn,max);return 0;return 0; 數組首元素地址可以傳給?數組首元素地址可以傳給?基類型相同的指針變量基類型相同的指針變量地址傳遞地址傳遞 例:例:int a5;int a5; int int * *p=a;p=a;注意:注意: p p是變量,是變量,也可以獲得任意元素的地址值,也可以獲得任意元素的地址值,例:例:p=&a2 p=&a2 此時此時:p0:p0等價于等價于* *p p或或a2a2,
34、p2p2等價于等價于* *(P+2)P+2)或或a2a2 a0a1a2a3a3a4a413ff58app0p1p2p3p3p4p413ff58n當當p=ap=a后,有下列等價關系存在:后,有下列等價關系存在:n(1)(1)數組元素的表示:數組元素的表示:n 下標法:下標法:pi pi 、aiain 間接引用法:間接引用法:* *(p+i) (p+i) 、* *(a+i)(a+i)n(2)(2)數組元素地址的表示數組元素地址的表示: :n 指針表達式法:指針表達式法:p+ip+i、a+i a+i n 元素取地址法:元素取地址法:&pi&pi、&ai&ain程序程序
35、5.5:5.5:用一級指針訪問一維數組元素示例用一級指針訪問一維數組元素示例 a0a1a2a3a3a4a413ff58app0p1p2p3p3p4p413ff5813ff5cp0p1p1p2p2n移動下標與移動指針訪問數組的元素例示移動下標與移動指針訪問數組的元素例示: :n程序程序5.8 5.8 請將一個初值分別為請將一個初值分別為1 1、2 2、3 3、4 4、5 5、7 7、8 8、9 9、1010的整的整形數組形數組逆置存放,并輸出逆置后數組元素。逆置存放,并輸出逆置后數組元素。 n分析:逆置數組,即從兩邊向中間對應位置的元素兩兩分析:逆置數組,即從兩邊向中間對應位置的元素兩兩互換互換
36、。n方法一:方法一:采用移動下標法采用移動下標法, ,用用i i和和j j分別指示待交換的兩分別指示待交換的兩個元素的下標,個元素的下標,i i從從0 0開始遞增,開始遞增,j j從從9 9開始遞減,循環條開始遞減,循環條件為件為ijij。n方法二:方法二:采用移動指針法,設兩個指針采用移動指針法,設兩個指針p p和和q q分別指向第分別指向第一個元素和最后一個元素,一個元素和最后一個元素,交換對應的交換對應的* *p p和和* *q q,然后,然后p+p+同時同時q-q-,循環條件為循環條件為pqpq。n程序程序5.8 5.8 方法一核心代碼方法一核心代碼nfor (i=0,j=9;ij;i
37、+,j-) nntemp=ai;nai=aj;naj=temp;nn等效于等效于:(只用只用 i 控制下標控制下標)nfor (i=0;i10/2;i+) ntemp=ai;nai=a10-1-i;na10-1-i=temp;n n程序程序5.8 5.8 方法二核心代碼方法二核心代碼nfor (p=a,q=a+9;pq;p+,q-)nntemp=*p;n*p=*q;n*q=temp;nn等效于等效于:(只用只用 p 控制指針變化控制指針變化)nfor (p=a;pa+10/2;p+)ntemp=*p;n*p=*(a+10-1-(p-a);n*(a+10-1-(p-a)=temp;n n程序程序5.9 5.9 從鍵盤上輸入從鍵盤上輸入n(1n10)n(1n10)個整數作為數組個整數作為數組a a的元素值,的元素值,再讀入一個待查找的整數再讀入一個待查找的整數x x,在,在a a數組中查找數組中查找x x,如果存在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛無償租賃給旅游公司使用合同
- 智能語音助手研發與應用合同
- 蝦塘改造合同協議書
- 項目建設合同(15篇)
- 新雅酒廠蔬菜(包括水產糧油類)供貨合同2篇
- 美發合伙合同協議書范本
- 簡單綠化施工合同協議書
- 私人房屋建筑施工合同范本2篇
- 建筑安裝工程住房拆遷合同7篇
- 2025年家庭居室裝飾裝修工程監理合同4篇
- 《大棚蔬菜種植技術》課件
- 《電工電子技術(II)》試題A卷 及答案
- 夏縣縣城污水處理提質增效-一廠一策-系統化整治方案
- 2024年檔案知識競賽試題及答案
- 跨境電商知識競賽考試題庫(500題)
- 2024年注冊計量師-一級注冊計量師考試近5年真題集錦(頻考類試題)帶答案
- GB/T 44567-2024光學晶體紫外級氟化鈣晶體
- “搶10”游戲(教學設計)-2024-2025學年一年級上冊數學蘇教版
- 低壓電纜安裝合同范本
- 浙江省杭州市上城區2023-2024學年八年級下學期期末科學試題(解析版)
- 反比例函數函數K的幾何意義市公開課一等獎省賽課獲獎課件
評論
0/150
提交評論