《C語言課件二維數(shù)組》由會員分享,可在線閱讀,更多相關(guān)《C語言課件二維數(shù)組(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,11 二維數(shù)組的定義和引用,11.1二維數(shù)組的定義,二維數(shù)組定義的一般形式為,類型說明符 數(shù)組名常量表達式常量表達式;,例如:定義a為34(3行4列)的數(shù)組,b為510(5行10列)的數(shù)組。如下:,float a34,b510;,不能寫成 float a3,4,b5,10;,注意,我們可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個一維數(shù)組。,例如,可以把a看作是一個一維數(shù)組,它有3個元素:a0、a1、a2,每個元素又是一個包含4個元素的一維數(shù)組。,11.1二維數(shù)組的定義,二維數(shù)組中的元素在內(nèi)存中
2、的排列挨次是:按行存放,即先挨次存放第一行的元素,再存放其次行的元素,一維數(shù)組在內(nèi)存中的存放,以以下圖表示對a34數(shù)組存放的挨次,地址,值,數(shù)組元素,b00,b01,b02,b10,b11,b12,b20,b21,b22,3000H,3002H,3004H,300,6H,3008H,300AH,300CH,300EH,3010H,例如:整型數(shù)組,b33=1,2,3,4,5,6,7,8,9;,1,2,3,4,5,6,789,問題:有了二維數(shù)組的根底,那么多維數(shù)組如何定義呢?,定義三維數(shù)組:float a234;,多維數(shù)組元素在內(nèi)存中的排列挨次:第一維的下標變化最慢,最右邊的下標變化最快。,a00
3、0a001a002a003,a010a011a012a013,a020a021a022a023,a100a101a102a103,a110a111a112a113,a120a121a122a123,三維數(shù)組的元素排列順序,二維數(shù)組元素的表示形式為:,數(shù)組名下標下標,例如:a23,下標可以是整型表達式,如 a2-12*2-1,數(shù)組元素可以消逝在表達式中,也可以被賦值,例如:b12=a23/2,注意,不要寫成 a2,3,a2-1,2*2-1形式,常消逝的錯誤有:,int a34;/*定義a為34的數(shù)組*/,a34=3;,在使用數(shù)組元素時,應(yīng)當留意下標值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。,可以用下面,4
4、種,方法對二維數(shù)組初始化,數(shù)據(jù)類型,數(shù)組名 常量表達式1常量表達式,2初始化數(shù)據(jù);,(1)分行給二維數(shù)組賦初值。,如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,(2)可以將全部數(shù)據(jù)寫在一個花括弧內(nèi),按數(shù)組排列的挨次對各元素賦初值。如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,11.3二維數(shù)組的引用,(3)可以對局部元素賦初值。如:,int a34=1,5,9;,1 0 0 0,5 0 0 0,9 0 0 0,也可以對各行中的某一元素賦初值,,如,:,int a34=1,0,6,0,0,11;,1 0 0 0,0 6 0 0,0 0
5、 0 11,1 0 0 0,5 6 0 0,0 0 0 0,也可以只對某幾行元素賦初值。,如:,int a34=1,5,6;,(4)假設(shè)對全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但其次維的長度不能省。如:,int a34=1,2,3,4,5,6,7,8,9,10,11,12;它等價于:int a4=1,2,3,4,5,6,7,8,9,10,11,12;,在定義時也可以只對局部元素賦初值而省略第一維的長度,但應(yīng)分行賦初值。如:int a4=0,0,3,0,10;,0 0 3 0,0 0 0 0,0 10 0 0,二維數(shù)組元素的輸入與輸出,1、輸入,int a34,i,j;,for
6、(i=0;i3;i+),for(j=0;j4;j+),scanf(“%d“,2、輸出,for(i=0;i3;i+),for(j=0;j4;j+),printf(“%3d“,aij);,printf(“n“);,例11.1 將一個二維數(shù)組行和列元素互換,存到另一個,二維數(shù)組中。,#include,void main,int a23=1,2,3,4,5,6;,int b32,i,j;,printf(array a:n);,for(i=0;i=1;i+),for(j=0;j=2;j+),例如:a=1 2 3 1 4,4 5 6 b=2 5,3 6,printf(%5d,aij);,bji=aij;,
7、printf(n);,printf(array b:n);,for(i=0;i=2;i+),for(j=0;j=1;j+),printf(“%5d,bij);,printf(n);,/*程序完畢*/,運行結(jié)果如下:,array a:,1 2 3,4 5 6,array b:,1 4,2 5,3 6,例11.2 求二維數(shù)組,對角線元素之和,#include,void main,int a55,i,j,s=0;,for(i=0;i5;i+),for(j=0;j5;j+),scanf(“%d“,for(i=0;i5;i+),s=s+aii;,printf(“s=%d“,s);,例11.3:有一個34
8、的矩陣,要求編程序求出其中值最大的那個元素的值,以及其所在的行號和列號。,先用N-S流程圖表示算法,如下:,程序如下:,#include,void main,int i,j,row=0,colum=0,max;,int a34=1,2,3,4,9,8,7,6,,-10,10,-5,2;,max=a00;,for(i=0;i=2;i+),for(j=0;jmax),max=aij;,row=i;,colum=j;,printf(max=%d,row=%d,colum=%dn,,max,row,colum);,/*程序完畢*/,說明:楊輝三角是一個下三角形式,它的第一列和對角線上的值都是1,其他的
9、值為上一行前一列的數(shù)與上一行同一列的數(shù)之和如下形式:,1,1 1,1 2 1,1 3 3 1,1 4 6 4 1,1 5 10 10 5 1,1 6 15 20 15 6 1,例11.4:利用二維數(shù)組,輸出7行7列的楊輝三角。,#include“stdio.h“,main,int a77,i,j;,for(i=0;i7;i+),ai0=1;aii=1;,for(i=2;i7;i+),for(j=1;ji;j+),aij=ai-1j-1+ai-1j;,for(i=0;i7;i+),for(j=0;j=i;j+),printf(“%3d“,aij);,printf(“n“);,例11.5 從鍵盤上
10、輸入9個整數(shù),保存在二維數(shù)組中,按數(shù)組原來位置輸出第一行和第一列的全部元素。,第0行,第1行,第2行,0列,列,列,分析:1、輸入數(shù)組。,2、輸出數(shù)組時要考慮不是全部數(shù)據(jù)都輸出。,思考:應(yīng)當輸出的數(shù)據(jù)在位置關(guān)系上有何特點?關(guān)鍵!,#include,main,int i,j,a33;,for(i=0;i3;i+)/*輸入數(shù)組*/,for(j=0;j3;j+),printf(“a%d%d=“,i,j);,scanf(“%d“,for(i=0;i3;i+)/*輸出數(shù)組*/,for(j=0;j3;j+),if(i=1|j=1)printf(“%-6d“,aij);,else printf(“%-6c“,”);,printf(“n”);,