第一篇:c語言 二維數(shù)組與指針 教案
講授
9.6二維數(shù)組和指針
2課時
掌握二維數(shù)組的地址表示方法 掌握指向數(shù)組元素的指針變量
掌握指向數(shù)組元素的指針變量
掌握用指向由m個元素組成的一維數(shù)組的指針變量
指向一維數(shù)組的指針變量
無
作業(yè)見后 一、二維數(shù)組的地址
例:定義二維數(shù)組int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
則二維數(shù)組a是數(shù)組的數(shù)組,由3個一維數(shù)組所組成的,即3個元素:a[0],a[1],a[2]。而每個元素又是一個一維數(shù)組。
二、指向二維數(shù)組元素的指針變量
1、指向數(shù)組元素的指針變量
例1 用指向元素的指針變量輸出二維數(shù)組元素的值 #include
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p {if((p-a[0])%4==0)printf(″\n″); printf(″%4d″,*p); } }用指向由m個元素組成的一維數(shù)組的指針變量 例2 輸出二維數(shù)組任一行任一列元素的值 #include int(*p)[4],i,j; p=a; scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意: ?指向一維數(shù)組的指針變量的定義格式應寫成:基類型(*p)[N] ?上述語句int(*p)[4],代表p是一個指針變量,它指向包含4個整型元素的一維數(shù)組。*p兩側的小括號不可少,如果寫成*p[4],由于[]運算級別高于*,*p[4]是指針數(shù)組。 ?p=a;表明p指向數(shù)組a中的第0行,此時p+1不是指向a[0][1],而是指向a[1],p的增值以一維數(shù)組的長度為單位,p+1地址就增加了8個字節(jié)。*(p+i)+j是a[i][j]的地址,這里的i是以一維數(shù)組的長度為單位,j則是以數(shù)組元素的長度為單位的。 復習 新授 講授 復習默寫 1、選擇排序的基本思想 2、從鍵盤輸入5個整數(shù),使用選擇法從小到大排序,編程實現(xiàn)。 一、二維數(shù)組的地址 例:定義二維數(shù)組int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 則二維數(shù)組a是數(shù)組的數(shù)組,由3個一維數(shù)組所組成的,即3個元素:a[0],a[1],a[2]。而每個元素又是一個一維數(shù)組。設二維數(shù)組的首行的首地址為2000,則: 二、指向二維數(shù)組元素的指針變量 1、指向數(shù)組元素的指針變量 例1 用指向元素的指針變量輸出二維數(shù)組元素的值 #include { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p {if((p-a[0])%4==0)printf(″\n″); printf(″%4d″,*p); } } 注意:上例中如果對p賦值p=a[0];不能寫成 p=a;因為此時a 是行指針,而p是列指針只能指向一個整型變量,a[0]是第0行的數(shù)組名,即第0行的首地址就是a[0][0]的地址。請學生思考上述賦值語句還可以寫成什么? p=*a;p=&a[0][0];用指向由m個元素組成的一維數(shù)組的指針變量 例2 輸出二維數(shù)組任一行任一列元素的值 #include int(*p)[4],i,j; p=a; scanf(“i=%d,j=%d”,&i,&j); printf(“a[%d,%d]=%d\n”,i,j,*(*(p+i)+j)); } 注意: ?指向一維數(shù)組的指針變量的定義格式應寫成:基類型(*p)[N] ?上述語句int(*p)[4],代表p是一個指針變量,它指向包含4個整型元素的一維數(shù)組。*p兩側的小括號不可少,如果寫成*p[4],由于[]運算級別高于*,*p[4]是指針數(shù)組。 小結 作業(yè) ?p=a;表明p指向數(shù)組a中的第0行,此時p+1不是指向a[0][1],而是指向a[1],p的增值以一維數(shù)組的長度為單位,p+1地址就增加了8個字節(jié)。*(p+i)+j是a[i][j]的地址,這里的i是以一維數(shù)組的長度為單位,j則是以數(shù)組元素的長度為單位的。 例3: int(*t)[4],a[3][4]={{1,3,5,7}, {11,13,15,17},{21,23,25,27}};t = a;printf(“%d,%d”, **t, t[1][2]);t++;t++;printf(“%d”, **t); 運行結果:1,1521 【課堂小練習】 1、[2010.3.27]若有:int(*p)[3];則正確的是(D)A)定義了基類型為int的三個指針變量 B)p是基類型為int的具有三個元素的指針數(shù)組 C)定義了名為*p,具有三個元素的整型數(shù)組 D)定義了一個名為p的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組 2、輸入:1 2 3<回車>,則輸出結果是 int a[3][2]={0},(*p)[2],i,j;p=a;for(i=0;i<2;i++){ scanf(“%d”,p);p++;} for(i=0;i<3;i++)for(j=0;j<2;j++)printf(“%d”,a[i][j]); 1、二維數(shù)組的地址 2、指向數(shù)組元素的指針變量 3、指向一維數(shù)組的指針變量 1、整理課堂筆記 2、完成深入研究整型指針練習題 《二維數(shù)組》說課稿 一、教學目標 1、通過本次課教學,學生能進一步理解二維數(shù)組的定義,二維數(shù)組的引用的方法; 2、掌握二維數(shù)組的初始化 3、技能目標:培養(yǎng)學生邏輯思維能力、綜合運用知識的能力和自主學習能力; 二、教材分析 選用教材為李騰編著的《編程語言基礎——C語言》,該教材由國防科技大學出版社出版,教材特點如下: 1、在內(nèi)容上體現(xiàn)科學性、時代性、實用性,編排上面向應用,理論與實踐有機結合; 2、采用案例教學法等教學手段,各章節(jié)均有案例,貫穿整個課程進行難點講解,以實際應用作為突破口,使學生能夠真實體驗到知識的實際應用,提高興趣,促進理解;教學與項目開發(fā)融為一體,淺顯易懂,符合中職學生認知規(guī)律。 3、實驗實訓環(huán)節(jié)結合教學內(nèi)容,實驗項目豐富。課程設計中案例學生熟悉。本節(jié)課教學內(nèi)容參考教材第4章的4.2節(jié):二維數(shù)組。 三、學生分析 本課程的教學對象是中職學生,他們文化基礎較差,計算機專業(yè)知識薄弱,C語言程序設計是他們學習的第一門計算機語言類課程,學習時較困難,入門較慢。本次課的教學內(nèi)容中數(shù)組的概念他們?nèi)菀桌斫?,簡單的一維數(shù)組對他們不太難,但涉及二維數(shù)組的編程較為困難。 另外,中職學生對于上機實際操作要比學習理論知識更為有興趣;簡單的實驗項目都能完成,但解決實際應用問題的能力也較差。因此,在教學中通過演示讓學生有感性認識,提高學習興趣;通過提出問題讓學生討論議一議,主動思考如何解決;通過一個教學任務讓學生動手做一做。 四、教學重點、難點及解決辦法 1、本次課教學重點 1)二維數(shù)組的定義; 2)二維數(shù)組元素的引用; 在教學過程的敘述中,要抓住教學的重點、最能體現(xiàn)教學理念的內(nèi)容和最能展示教學藝術的環(huán)節(jié),作較為詳細的敘述。 2、本次課教學難點 1)二維數(shù)組的初始化 2)二維數(shù)組的實際應用 3、難點解決辦法 1)通過演示讓學生有感性認識,并從一維數(shù)組入手,逐步引入二維數(shù)組的概念,弱化實用性不強的細節(jié); 2)圍繞字符數(shù)組進行難點講解,以實際應用作為突破口,使學生能理解二維數(shù)組在實際中的應用,提高學習興趣; 3)針對難點設置上機實際操作內(nèi)容,進一步掌握二維數(shù)組程序設計方法。4)在實驗實訓過程中布置任務項目,通過實踐環(huán)節(jié)進一步理解和掌握重點難點,達到學習目的。 五、教學理念、方法及手段 本次課采用理(論)實(踐)一體化教學理念通過任務驅(qū)動(項目教學)、講練結合等教學手段。 1、任務驅(qū)動:通過書上實例這一任務,掌握二維數(shù)組程序設計認方法。并掌握相應知識點,突出重點,分解難點。 2、講練結合:授課地點為計算機實驗室,采用邊講邊練的教學互動形式。教學過程中,適當安排學生在計算機上進行進行實際程序設計,通過運行調(diào)試自己設計的程序,讓學生親自觀察和體驗程序設計的成功感受,加深知識的理解。 六、教學設計(時間分配) 1、任務提出,演示成果程序,明確目標,提出要求。(3分鐘)(1)演示程序成果,在屏幕上輸入源程序,并運行。 (2)任務分析:完成本次課的任務所需知識―――二維數(shù)組的應用。 2、知識回顧(3分鐘) 數(shù)組的概念,一維數(shù)組的定義,一維數(shù)組元素的引用,一維數(shù)組的初始化,注意事項。 3、上機實訓1(3分鐘) 簡單程序:用一維數(shù)組編程,實現(xiàn)在屏幕上顯示1,2,3……10。 (上機技能訓練的操作、指導、輔導過程,以學生實際操作動手為主,教師進行輔導指導、師生共同探討完成,應充分體現(xiàn)學生的主體地位)思考提問:如何輸出一個表格。 4、導入新課(6分鐘) (1)通過練習1,分析在屏幕上輸出中存在的問題。(2)二維數(shù)組的定義,引用與初始化。 5、上機實訓2,(6分鐘)輸出一個二維表: 1 5 9 11 12 6、上機實訓3:4.6編程將數(shù)組a[3][4]轉置(8分鐘)(1)調(diào)試程序時要注意觀察程序運行情況。程序出錯原因,提醒以后編程時注意。 7、上機實訓4,從鍵盤輸入年、月、日,計算該日是這一年的第幾天(10分鐘) 8、課堂小結及作業(yè)(5分鐘) 9、Question & Answer(1-2分鐘) 七、學法指導 1、鼓勵學生自主探索和合作交流。引導學生自主地從事觀察、分析、交流等活動,使學生形成對計算機語言知識有效的學習策略。 2、鼓勵與提倡解決問題的多樣性,引導學生在與他人的交流中去選擇合適的策略,豐富自己的思維方式,獲得成功的體驗和不同的發(fā)展。 3、引導學生將所學計算機知識應用到其他學科中去,使學生覺得計算機有很用,同時也培養(yǎng)了學生邏輯思維能力。 C語言程序設計實驗七:函數(shù)、數(shù)組、指針 1、程序運行后,用戶任意輸入一個字符串,求出字符串長度,然后輸出字符串內(nèi)容及個 數(shù)。不能使用strlen函數(shù)。 求字符串長度函數(shù)的函數(shù)原型必須如下: int MyStrLenPt(char *str) 若輸入:nihao123! 則輸出:nihao123!:9 chars2、編寫一個對一維數(shù)組進行排序的程序。 要求: 寫兩個函數(shù),一個主函數(shù),一個sort函數(shù)。在主函數(shù)中完成數(shù)組的輸入和輸出,通過調(diào) 用sort函數(shù)對數(shù)組進行排序。 sort函數(shù)的原型為:voidsort(int*p, intn); 說明: (1)請大家按學號來坐,便于考勤和管理。 (2)請珍惜寶貴的實驗時間!不要做與實驗無關的事情,比如聊QQ、上網(wǎng)或打游戲。 (3)直接把C語言代碼粘貼到相應的實驗題目下方,上交實驗報告時只交word文檔。 (4)文檔名稱:班級+學號后2位+姓名+實驗編號,例如11電1班12張山實驗七.doc。 C語言字符串指針變量與字符數(shù)組的區(qū)別 用字符數(shù)組和字符指針變量都可實現(xiàn)字符串的存儲和運算。但是兩者是有區(qū)別的。在使用時應注意以下幾個問題: 1)字符串指針變量本身是一個變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續(xù)的內(nèi)存空間中并以
第二篇:C語言《二維數(shù)組》說課稿(寫寫幫整理)
第三篇:C語言程序設計實驗七:函數(shù)、數(shù)組、指針
第四篇:C語言字符串指針變量與字符數(shù)組的區(qū)別