第一篇:C語言《二維數(shù)組》說課稿(寫寫幫整理)
《二維數(shù)組》說課稿
一、教學(xué)目標(biāo)
1、通過本次課教學(xué),學(xué)生能進(jìn)一步理解二維數(shù)組的定義,二維數(shù)組的引用的方法;
2、掌握二維數(shù)組的初始化
3、技能目標(biāo):培養(yǎng)學(xué)生邏輯思維能力、綜合運(yùn)用知識的能力和自主學(xué)習(xí)能力;
二、教材分析
選用教材為李騰編著的《編程語言基礎(chǔ)——C語言》,該教材由國防科技大學(xué)出版社出版,教材特點(diǎn)如下:
1、在內(nèi)容上體現(xiàn)科學(xué)性、時代性、實(shí)用性,編排上面向應(yīng)用,理論與實(shí)踐有機(jī)結(jié)合;
2、采用案例教學(xué)法等教學(xué)手段,各章節(jié)均有案例,貫穿整個課程進(jìn)行難點(diǎn)講解,以實(shí)際應(yīng)用作為突破口,使學(xué)生能夠真實(shí)體驗(yàn)到知識的實(shí)際應(yīng)用,提高興趣,促進(jìn)理解;教學(xué)與項(xiàng)目開發(fā)融為一體,淺顯易懂,符合中職學(xué)生認(rèn)知規(guī)律。
3、實(shí)驗(yàn)實(shí)訓(xùn)環(huán)節(jié)結(jié)合教學(xué)內(nèi)容,實(shí)驗(yàn)項(xiàng)目豐富。課程設(shè)計(jì)中案例學(xué)生熟悉。本節(jié)課教學(xué)內(nèi)容參考教材第4章的4.2節(jié):二維數(shù)組。
三、學(xué)生分析
本課程的教學(xué)對象是中職學(xué)生,他們文化基礎(chǔ)較差,計(jì)算機(jī)專業(yè)知識薄弱,C語言程序設(shè)計(jì)是他們學(xué)習(xí)的第一門計(jì)算機(jī)語言類課程,學(xué)習(xí)時較困難,入門較慢。本次課的教學(xué)內(nèi)容中數(shù)組的概念他們?nèi)菀桌斫?,簡單的一維數(shù)組對他們不太難,但涉及二維數(shù)組的編程較為困難。
另外,中職學(xué)生對于上機(jī)實(shí)際操作要比學(xué)習(xí)理論知識更為有興趣;簡單的實(shí)驗(yàn)項(xiàng)目都能完成,但解決實(shí)際應(yīng)用問題的能力也較差。因此,在教學(xué)中通過演示讓學(xué)生有感性認(rèn)識,提高學(xué)習(xí)興趣;通過提出問題讓學(xué)生討論議一議,主動思考如何解決;通過一個教學(xué)任務(wù)讓學(xué)生動手做一做。
四、教學(xué)重點(diǎn)、難點(diǎn)及解決辦法
1、本次課教學(xué)重點(diǎn) 1)二維數(shù)組的定義; 2)二維數(shù)組元素的引用;
在教學(xué)過程的敘述中,要抓住教學(xué)的重點(diǎn)、最能體現(xiàn)教學(xué)理念的內(nèi)容和最能展示教學(xué)藝術(shù)的環(huán)節(jié),作較為詳細(xì)的敘述。
2、本次課教學(xué)難點(diǎn) 1)二維數(shù)組的初始化 2)二維數(shù)組的實(shí)際應(yīng)用
3、難點(diǎn)解決辦法
1)通過演示讓學(xué)生有感性認(rèn)識,并從一維數(shù)組入手,逐步引入二維數(shù)組的概念,弱化實(shí)用性不強(qiáng)的細(xì)節(jié);
2)圍繞字符數(shù)組進(jìn)行難點(diǎn)講解,以實(shí)際應(yīng)用作為突破口,使學(xué)生能理解二維數(shù)組在實(shí)際中的應(yīng)用,提高學(xué)習(xí)興趣;
3)針對難點(diǎn)設(shè)置上機(jī)實(shí)際操作內(nèi)容,進(jìn)一步掌握二維數(shù)組程序設(shè)計(jì)方法。4)在實(shí)驗(yàn)實(shí)訓(xùn)過程中布置任務(wù)項(xiàng)目,通過實(shí)踐環(huán)節(jié)進(jìn)一步理解和掌握重點(diǎn)難點(diǎn),達(dá)到學(xué)習(xí)目的。
五、教學(xué)理念、方法及手段
本次課采用理(論)實(shí)(踐)一體化教學(xué)理念通過任務(wù)驅(qū)動(項(xiàng)目教學(xué))、講練結(jié)合等教學(xué)手段。
1、任務(wù)驅(qū)動:通過書上實(shí)例這一任務(wù),掌握二維數(shù)組程序設(shè)計(jì)認(rèn)方法。并掌握相應(yīng)知識點(diǎn),突出重點(diǎn),分解難點(diǎn)。
2、講練結(jié)合:授課地點(diǎn)為計(jì)算機(jī)實(shí)驗(yàn)室,采用邊講邊練的教學(xué)互動形式。教學(xué)過程中,適當(dāng)安排學(xué)生在計(jì)算機(jī)上進(jìn)行進(jìn)行實(shí)際程序設(shè)計(jì),通過運(yùn)行調(diào)試自己設(shè)計(jì)的程序,讓學(xué)生親自觀察和體驗(yàn)程序設(shè)計(jì)的成功感受,加深知識的理解。
六、教學(xué)設(shè)計(jì)(時間分配)
1、任務(wù)提出,演示成果程序,明確目標(biāo),提出要求。(3分鐘)(1)演示程序成果,在屏幕上輸入源程序,并運(yùn)行。
(2)任務(wù)分析:完成本次課的任務(wù)所需知識―――二維數(shù)組的應(yīng)用。
2、知識回顧(3分鐘)
數(shù)組的概念,一維數(shù)組的定義,一維數(shù)組元素的引用,一維數(shù)組的初始化,注意事項(xiàng)。
3、上機(jī)實(shí)訓(xùn)1(3分鐘)
簡單程序:用一維數(shù)組編程,實(shí)現(xiàn)在屏幕上顯示1,2,3……10。
(上機(jī)技能訓(xùn)練的操作、指導(dǎo)、輔導(dǎo)過程,以學(xué)生實(shí)際操作動手為主,教師進(jìn)行輔導(dǎo)指導(dǎo)、師生共同探討完成,應(yīng)充分體現(xiàn)學(xué)生的主體地位)思考提問:如何輸出一個表格。
4、導(dǎo)入新課(6分鐘)
(1)通過練習(xí)1,分析在屏幕上輸出中存在的問題。(2)二維數(shù)組的定義,引用與初始化。
5、上機(jī)實(shí)訓(xùn)2,(6分鐘)輸出一個二維表: 1 5 9 11 12
6、上機(jī)實(shí)訓(xùn)3:4.6編程將數(shù)組a[3][4]轉(zhuǎn)置(8分鐘)(1)調(diào)試程序時要注意觀察程序運(yùn)行情況。程序出錯原因,提醒以后編程時注意。
7、上機(jī)實(shí)訓(xùn)4,從鍵盤輸入年、月、日,計(jì)算該日是這一年的第幾天(10分鐘)
8、課堂小結(jié)及作業(yè)(5分鐘)
9、Question & Answer(1-2分鐘)
七、學(xué)法指導(dǎo)
1、鼓勵學(xué)生自主探索和合作交流。引導(dǎo)學(xué)生自主地從事觀察、分析、交流等活動,使學(xué)生形成對計(jì)算機(jī)語言知識有效的學(xué)習(xí)策略。
2、鼓勵與提倡解決問題的多樣性,引導(dǎo)學(xué)生在與他人的交流中去選擇合適的策略,豐富自己的思維方式,獲得成功的體驗(yàn)和不同的發(fā)展。
3、引導(dǎo)學(xué)生將所學(xué)計(jì)算機(jī)知識應(yīng)用到其他學(xué)科中去,使學(xué)生覺得計(jì)算機(jī)有很用,同時也培養(yǎng)了學(xué)生邏輯思維能力。
第二篇: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ù)組的指針變量的定義格式應(yīng)寫成:基類型(*p)[N] ?上述語句int(*p)[4],代表p是一個指針變量,它指向包含4個整型元素的一維數(shù)組。*p兩側(cè)的小括號不可少,如果寫成*p[4],由于[]運(yùn)算級別高于*,*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ù)組元素的長度為單位的。 復(fù)習(xí) 新授 講授 復(fù)習(xí)默寫 1、選擇排序的基本思想 2、從鍵盤輸入5個整數(shù),使用選擇法從小到大排序,編程實(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è)二維數(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;因?yàn)榇藭ra 是行指針,而p是列指針只能指向一個整型變量,a[0]是第0行的數(shù)組名,即第0行的首地址就是a[0][0]的地址。請學(xué)生思考上述賦值語句還可以寫成什么? 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ù)組的指針變量的定義格式應(yīng)寫成:基類型(*p)[N] ?上述語句int(*p)[4],代表p是一個指針變量,它指向包含4個整型元素的一維數(shù)組。*p兩側(cè)的小括號不可少,如果寫成*p[4],由于[]運(yùn)算級別高于*,*p[4]是指針數(shù)組。 小結(jié) 作業(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); 運(yùn)行結(jié)果:1,1521 【課堂小練習(xí)】 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<回車>,則輸出結(jié)果是 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、完成深入研究整型指針練習(xí)題 C語言——運(yùn)用一維數(shù)組和二維數(shù)組輸出楊輝三角 **********一維數(shù)組********** #include #define n 10 int main() { } int a[n]={1,1},i,j;printf(“%5dn%5d%5dn”,1,a[0],a[1]);for(i=1;i **********二維數(shù)組********** #include int main() { int a[30][30]={0},i,j,n=10; for(i=0;i<=n-1;i++) a[i][0]=1; for(i=1;i<=n-1;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<=n-1;i++) { for(j=0;j<=i;j++) printf(“%5d”,a[i][j]); printf(“n”); } return 0; } C語言二維數(shù)組的定義和引用 7.1.1二維數(shù)組的定義 前面介紹的數(shù)組只有一個下標(biāo),稱為一維數(shù)組,其數(shù)組元素也稱為單下標(biāo)變量。在實(shí)際問題中有很多量是二維的或多維的,因此C語言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個下標(biāo),以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。本小節(jié)只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。 二維數(shù)組定義的一般形式是:類型說明符 數(shù)組名[常量表達(dá)式1][常量表達(dá)式2] 其中常量表達(dá)式1表示第一維下標(biāo)的長度,常量表達(dá)式2 表示第二維下標(biāo)的長度。例如: int a[3][4];說明了一個三行四列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有3×4個,即: a[0][0],a[0][1],a[0][2],a[0][3] a[1][0],a[1][1],a[1][2],a[1][3] a[2][0],a[2][1],a[2][2],a[2][3] 二維數(shù)組在概念上是二維的,即是說其下標(biāo)在兩個方向上變化,下標(biāo)變量在數(shù)組中的位置也處于一個平面之中,而不是象一維數(shù)組只是一個向量。但是,實(shí)際的硬件存儲器卻是連續(xù)編址的,也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數(shù)組,可有兩種方式:一種是按行排列,即放完一行之后順次放入第二行。另一種是按列排列,即放完一列之后再順次放入第二列。 在C語言中,二維數(shù)組是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四個元素也是依次存放。由于數(shù)組a說明為int類型,該類型占兩個字節(jié)的內(nèi)存空間,所以每個元素均占有兩個字節(jié))。 7.1.2二維數(shù)組元素的引用 二維數(shù)組的元素也稱為雙下標(biāo)變量,其表示的形式為: 數(shù)組名[下標(biāo)][下標(biāo)] 其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式。例如: a[3][4] 表示a數(shù)組三行四列的元素。 下標(biāo)變量和數(shù)組說明在形式中有些相似,但這兩者具有完全不同的含義。數(shù)組說明的方括號中給出的是某一維的長度,即可取下標(biāo)的最大值;而數(shù)組元素中的下標(biāo)是該元素在數(shù)組中的位置標(biāo)識。前者只能是常量,后者可以是常量,變量或表達(dá)式。 【例7.6】一個學(xué)習(xí)小組有5個人,每個人有三門課的考試成績。求全組分科的平均成績和各科總平均成績。 可設(shè)一個二維數(shù)組a[5][3]存放五個人三門課的成績。再設(shè)一個一維數(shù)組v[3]存放所求得各分科平均成績,設(shè)變量average 為全組各科總平均成績。編程如下: main(){ int i,j,s=0,average,v[3],a[5][3]; printf(“input scoren”); for(i=0;i<3;i++){ for(j=0;j<5;j++) { scanf(“%d”,&a[j][i]); s=s+a[j][i];} v[i]=s/5; s=0; } average =(v[0]+v[1]+v[2])/3; printf(“math:%dnc languag:%dndbase:%dn”,v[0],v[1],v[2]); printf(“total:%dn”, average);} 程序中首先用了一個雙重循環(huán)。在內(nèi)循環(huán)中依次讀入某一門課程的各個學(xué)生的成績,并把這些成績累加起來,退出內(nèi)循環(huán)后再把該累加成績除以5送入v[i]之中,這就是該門課程的平均成績。外循環(huán)共循環(huán)三次,分別求出三門課各自的平均成績并存放在v數(shù)組之中。退出外循環(huán)之后,把v[0],v[1],v[2]相加除以3即得到各科總平均成績。最后按題意輸出各個成績。 7.1.3二維數(shù)組的初始化 二維數(shù)組初始化也是在類型說明時給各下標(biāo)變量賦以初值。二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。例如對數(shù)組a[5][3]: 按行分段賦值可寫為: int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };按行連續(xù)賦值可寫為: int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85}; 這兩種賦初值的結(jié)果是完全相同的。 【例7.7】 main(){ int i,j,s=0, average,v[3]; int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}}; for(i=0;i<3;i++) { for(j=0;j<5;j++) s=s+a[j][i]; v[i]=s/5; s=0; } average=(v[0]+v[1]+v[2])/3; printf(“math:%dnc languag:%dndFoxpro:%dn”,v[0],v[1],v[2]); printf(“total:%dn”, average); } 對于二維數(shù)組初始化賦值還有以下說明: 可以只對部分元素賦初值,未賦初值的元素自動取0值。 例如: int a[3][3]={{1},{2},{3}};是對每一行的第一列元素賦值,未賦值的元素取0值。賦值后各元素的值為:0 0 0 0 0 0 int a [3][3]={{0,1},{0,0,2},{3}};賦值后的元素值為: 0 1 0 0 0 2 0 0 如對全部元素賦初值,則第一維的長度可以不給出。 例如: int a[3][3]={1,2,3,4,5,6,7,8,9};可以寫為: int a[][3]={1,2,3,4,5,6,7,8,9}; 數(shù)組是一種構(gòu)造類型的數(shù)據(jù)。二維數(shù)組可以看作是由一維數(shù)組的嵌套而構(gòu)成的。設(shè)一維數(shù)組的每個元素都又是一個數(shù)組,就組成了二維數(shù)組。當(dāng)然,前提是各元素類型必須相同。根據(jù)這樣的分析,一個二維數(shù)組也可以分解為多個一維數(shù)組。C語言允許這種分解。 如二維數(shù)組a[3][4],可分解為三個一維數(shù)組,其數(shù)組名分別為: a[0] a[1] a[2] 對這三個一維數(shù)組不需另作說明即可使用。這三個一維數(shù)組都有4個元素,例如:一維數(shù)組a[0]的元素為a[0][0],a[0][1],a[0][2],a[0][3]。必須強(qiáng)調(diào)的是,a[0],a[1],a[2]不能當(dāng)作下標(biāo)變量使用,它們是數(shù)組名,不是一個單純的下標(biāo)變量。 實(shí)驗(yàn)九 數(shù)組 一、一維數(shù)組 1、編寫程序,測試下列數(shù)組的定義方式是否正確(1)main(){ int n;scanf(“%d”,&n);int a[n];//…….}(2)main(){ int n=10;int a[n];a[0] = 1;//......}(3)#include 2、運(yùn)行下面的C程序,根據(jù)運(yùn)行結(jié)果,可以說明什么? #include 3、調(diào)試下列程序,使之具有如下功能:輸入10個整數(shù),按每行3個數(shù)輸出這些整數(shù),最后輸出10個整數(shù)的平均值。寫出調(diào)試過程。main(){ int i,n,a[10],av; for(i=0;i for(i=0;i if(i%3= =0)printf(“n”); } for(i=0;i!=n;i++)av+=a[i]; printf(“av=%fn”,av); } //尤其注意最后一次循環(huán) 上面給出的程序是完全可以運(yùn)行的,但是運(yùn)行結(jié)果是完全錯誤的。調(diào)試時請注意變量的初值問題、輸出格式問題等。請使用前面實(shí)驗(yàn)所掌握的調(diào)試工具,判斷程序中的錯誤并改正。在程序運(yùn)行過程中,可以使用 5、編寫程序,任意輸入10個整數(shù)的數(shù)列,先將整數(shù)按照從大到小的順序進(jìn)行排序,然后輸入一個整數(shù)插入到數(shù)列中,使數(shù)列保持從大到小的順序。分析討論 通過實(shí)驗(yàn),分析定義與引用數(shù)組的區(qū)別。二、二維數(shù)組 1.寫出程序輸出結(jié)果(1)#include”stdio.h” main(){ int i, j, t, a[4][4]={11,22,33,44,1,2,3,4,10,20,30,40,12,22,32,42};for(i=0;i<4;i++)for(j=0;j for(j=0;j<4;j++)printf(“%d”,a[i][j]); } }(2)#include”stdio.h” main(){int i,j,m,n,a[3][4]={43,32,22,13,11,22,33,44,44,11,32,31};m=n=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[m][n]>a[i][j]){m=i;n=j;} printf(“a[m][n]=%d,m=%d,n=%d”,a[m][n],m,n);} 3、操作符&用以求一個變量的地址,這在函數(shù)scanf 中已經(jīng)使用過了。現(xiàn)在要你設(shè)計(jì)一個程序,返回一個3 * 5 的二維數(shù)組各元素的地址,并由此說明二維數(shù)組中各元素是按什么順序存儲的。 4、輸入4×4的數(shù)組,編寫程序?qū)崿F(xiàn): ⑴ 求出對角線上各元素的和; ⑵ 求出對角線上行、列下標(biāo)均為偶數(shù)的各元素的積; ⑶ 找出對角線上其值最大的元素和它在數(shù)組中的位置。 三、字符數(shù)組 1.驗(yàn)證程序輸出結(jié)果 #include”stdio.h” main(){char a[ ]=“ab12cd34ef”;int i, j;for(i=j=0;a[i ];i++)if(a[ i]>=’a’&&a[ i]<=’z’)a[ j++ ]=a[ i ];a[ j ]=’
第三篇:C語言運(yùn)用一維數(shù)組和二維數(shù)組輸出楊輝三角
第四篇:黑馬程序員C語言教程:C語言二維數(shù)組的定義和引用
第五篇:C語言數(shù)組