《C語言》教案第五章_第1頁
《C語言》教案第五章_第2頁
《C語言》教案第五章_第3頁
《C語言》教案第五章_第4頁
《C語言》教案第五章_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——《C語言》教案第五章

第五章數(shù)組及其應(yīng)用構(gòu)造數(shù)據(jù)類型之一[]:數(shù)組運算符數(shù)組:有序數(shù)據(jù)的集合,用數(shù)組名標識單目運算符元素:屬同一數(shù)據(jù)類型,用數(shù)組名和下標確定優(yōu)先級(1)

5.1一維數(shù)組5.1.1一維數(shù)組的定義定義方式:例inta[6];合法標識符

左結(jié)合不能用()

數(shù)據(jù)類型

數(shù)組名[常量表達式];表示元素個數(shù)下標從0開始

a

012

3數(shù)組名表示內(nèi)存首地址,4是地址常量5

a[0]a[1]a[2]a[3]a[4]a[5]

編譯時分派連續(xù)內(nèi)存內(nèi)存字節(jié)數(shù)=數(shù)組維數(shù)*sizeof(元素數(shù)據(jù)類型)

例inti=15;例intdata[5];intdata[i];(不能用變量定義數(shù)組維數(shù))data[5]=10;//C語言對數(shù)組不作越界檢查,使用時要注意

一維數(shù)組的引用

數(shù)組必需先定義,后使用只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組數(shù)組元素表示形式:數(shù)組名[下標]其中:下標可以是常量或整型表達式例inta[10];printf(“%d〞,a);()必需for(j=0;j10;j++)printf(“%d\t〞,a[j]);

()

5.1.3一維數(shù)組的初始化初始化方式

inta[5]={1,2,3,4,5};在定義數(shù)組時,為數(shù)組元素賦初值等價于:a[0]=1;(在編譯階段使之得到初值)a[1]=2;a[2]=3;a[3]=4;a[4]=5;說明:數(shù)組不初始化,其元素值為隨機數(shù)對static數(shù)組元素不賦初值,系統(tǒng)會自動賦以0值只給部分數(shù)組元素賦初值當全部數(shù)組元素賦初值時,可不指定數(shù)組長度

如inta[5];staticinta[5]={6,2,3};inta[]={1,2,3,4,5,6};等價于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;等價于:a[0]=0;a[1]=0;a[2]=0;a[3]=0;a[4]=0;如編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù)inta[3]={6,2,3,5,1};()

#includestdio.h5.1.4一維數(shù)組程序舉例#defineSIZE10例讀10個整數(shù)存入數(shù)組,找出其中最大值和最小值main(){intx[SIZE],i,max,min;printf(Enter10integers:\n);for(i=0;iSIZE;i++)步驟:{printf(%d:,i+1);1.輸入:for循環(huán)輸入10個整數(shù)scanf(%d,x[i]);2.處理:}(a)先令max=min=x[0]max=min=x[0];(b)依次用x[i]和max,min比較(循環(huán))for(i=1;iSIZE;i++)若maxx[i],令max=x[i]{if(maxx[i])max=x[i];若minx[i],令min=x[i]if(minx[i])min=x[i];3.輸出:max和min}printf(Maximumvalueis%d\n,max);printf(Minimumvalueis%d\n,min);}

例用數(shù)組求Fibonacci數(shù)列前20個數(shù)

#includestdio.hmain(){inti;intf[20]={1,1};for(i=2;i20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i20;i++){if(i%5==0)printf(\n);printf(%12d,f[i]);}}

012

345

11235……...

f[0]f[1]f[2]f[3]f[4]f[5]

19

f[19]

f[19]

例用冒泡法對10個數(shù)排序

排序過程:(1)比較第一個數(shù)與其次個數(shù),若為逆序a[0]a[1],則交換;然后比較其次個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最終一個元素位置上(2

)對前n-1個數(shù)進行其次趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置(3)重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序終止

假使有n個數(shù),則要進行n-1趟比較,在第j趟比較中要進行n-j兩兩比較

384949386576971397769727133097279730初始關(guān)鍵字n=8

3849651376277613307627763097第一趟

384913652765133065276530

381349

1338273813383027383049

13273038

132730

1327

492713493027493065

76第二趟第三趟第四趟第五趟第六趟第七趟

輸入n個數(shù)給a[1]到a[n]forj=1ton-1fori=1ton-j真a[i]a[i+1]

a[i]a[i+1]輸出a[1]到a[n]

#includestdio.hmain(){inta[11],i,j,t;printf(Input10numbers:\n);for(i=1;i11;i++)scanf(%d,a[i]);printf(\n);假for(j=1;j=9;j++)for(i=1;i=10-j;i++)if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(Thesortednumbers:\n);for(i=1;i11;i++)printf(%d,a[i]);}

#defineN6數(shù)組定義:必需用常量表達式main(){inta[N],b[B-60],c[]={1,2,3,4,5,6},i;for(i=0;iN;i++)scanf(“%d%d〞,a[i],b[i]);for(i=0;iN;i++)數(shù)組元素引用printf(“%d〞,a[i]);printf(“\n〞);for(i=0;iN;i++)printf(“%d〞,b[i]);printf(“\n〞);for(i=0;iN;i++)Ch6_001.cc[i]=a[i]+b[N-i-1];for(i=0;iN;i++)printf(“%d〞,c[i]);}

5.2二維數(shù)組5.2.1二維數(shù)組的定義

定義方式:c[0][1][1]5數(shù)據(jù)類型數(shù)組名[常量表達式][常量表達式];c[0][1][2]6數(shù)組元素的存放順序例inta[3][4];floatb[2][5];原因:內(nèi)存是一維的intc[2][3][4];二維數(shù)組:按行序優(yōu)先inta[3,4];()多維數(shù)組:最右下標變化最快012

0c[0][0][0]c[0][0][1]1c[0][0][2]2元素個數(shù)=行數(shù)*列數(shù)c[0][0][3]列數(shù)3intc[2][3][4]行數(shù)4c[0][1][0]c[0][1][3]c[0][2][0]c[0][2][1]c[0][2][2]c[0][2][3]c[1][0][0]c[1][0][1]c[1][0][2]c[1][0][3]c[1][1][0]c[1][1][1]c[1][1][2]c[1][1][3]c[1][2][0]c[1][2][1]c[1][2][2]c[1][2][3]

7………...

inta[3][2]

a[0][0]a[1][0]a[2][0]

a[0][1]a[1][1]a[2][1]

345

a[0][0]a[0][1]a[1][0]a[1][1]20a[2][0]21a[2][1]2223

二維數(shù)組理解二維數(shù)組a是由3個元素組成01234567891011a[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]

a[0]

例inta[3][4];20002023a[0]a[0][0]a[0][1]1320232023a[1]a[1][0]a[1][1]91120232023a[2]a[2][0]a[2][1]1719行名2023a[0][2]52023a[1][2]132023a[2][2]2120006a[0][3]72023a[1][3]152023a[2][3]23

a[1]

a[2]

每個元素a[i]由包含4個元素的一維數(shù)組組成

5.2.2二維數(shù)組的引用形式:數(shù)組名[下標][下標]

5.2.3二維數(shù)組的初始化分行初始化:

部分初始化全部初始化第一維長度省略初始化

部分初始化按元素排列順序初始化第一維長度省略初始化全部初始

化例inta[2][3]={{1,2,3},{4,5,6}};例inta[2][3]={{1,2},{4}};例inta[][3]={{1},{4,5}};例intint2a[2][3]={1,2,4};1例a[2][3]={1,2,3,4,5,6};5346120400例int0a[][3]={1,2,3,4,5};10450a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]112234405060a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]123450a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]

5.2.4二維數(shù)組程序舉例例將二維數(shù)組行列元素互換,存到另一個數(shù)組中#includestdio.h14a=123main()b=25456{inta[2][3]={{1,2,3},{4,5,6}};36intb[3][2],i,j;printf(arraya:\n);printf(arrayb:\n);for(i=0;i=1;i++)for(i=0;i=2;i++){for(j=0;j=2;j++){for(j=0;j=1;j++){printf(%5d,a[i][j]);printf(%5d,b[i][j]);b[j][i]=a[i][j];printf(\n);}}printf(\n);}}

#includestdio.h例求二維數(shù)組中最大元素值及其行列號main(){inta[3][4]={{1,2,3,4},{9,8,7,6},max=a[0][0]{-10,10,-5,2}};fori=0to2inti,j,row=0,colum=0,max;forj=0to3max=a[0][0];for(i=0;i=2;i++)a[i][j]max真假for(j=0;j=3;j++)if(a[i][j]max)max=a[i][j]row=i{max=a[i][j];colum=jrow=i;colum=j;輸出:max和row,colum}printf(max=%d,row=%d,\colum=%d\n,max,row,colum);}

例讀入下表中值到數(shù)組,分別求各行、各列及表中所有數(shù)之和#includestdio.h1246main()8423322{intx[5][4],i,j;126157934for(i=0;i4;i++)8233for(j=0;j3;j++)2751715931scanf(%d,x[i][j]);251724for(i=0;i3;i++)373935111x[4][i]=0;for(j=0;j5;j++)for(i=0;i5;i++)x[j][3]=0;{for(j=0;j4;j++)for(i=0;i4;i++)printf(%5d\t,x[i][j]);for(j=0;j3;j++)printf(\n);{x[i][3]+=x[i][j];}x[4][j]+=x[i][j];}x[4][3]+=x[i][j];}

5.3字符數(shù)組5.3.1字符數(shù)組的定義ch[3][4];例charc[10],

5.3.2字符數(shù)組的初始化逐個字符賦值用字符串常量逐個字符賦值用字符串常量用字符串常量逐個字符賦值逐個字符賦值有問題!

5.3.3字符數(shù)組的引用例例charch[5]={H,e,l,l,o};charch[6]={“Hello〞};例charch[5]={B,o,y};例charch[5]={H,e,l,l,o};charch[5]=“Boy〞;charch[6]=“Hello〞;HBcharoch[]=“Hello〞;\0ellyllo\0Heo\0ch[0]Hch[1]ech[2]lch[3]lch[4]och[0]ch[1]ch[2]ch[3]ch[4]ch[0]ch[1]ch[2]ch[3]ch[4]ch[0]ch[1]ch[2]ch[3]ch[4]ch[5]

二維字符數(shù)組初始化二維字符數(shù)組初始化

例chardiamond[][5]={{'.','.','*'},{'.','*','.','*'},{'*','.','.','.','*'},{'.','*','.','*'},{'.',例charfruit[][7]={“Apple〞,〞Orange〞,'.','*'}};diamond[0]..p*pr.a

〞Grape〞,〞Pear〞,〞Peach〞};*\0\0

diamond[1]Afruit[0].diamond[2]Ofruit[1]*

.l.n.p*rc

e*g.e*

\0e\0

\0\0*\0\0\0

diamond[3]Gfruit[2].diamond[

4]Pfruit[3].fruit[4]P

r*a

e.e

aa

\0\0\0h\0

\0\0\0

例輸出一個字符串0

Iamaboy

#includestdio.hmain(){charc[10]={'I','

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論