黑马程序员——数组
黑馬程序員——數(shù)組
------- android培訓(xùn)、ios培訓(xùn)、期待與您交流! ----------
?
1、概念:定義數(shù)組時(shí)需要指定這批變量類型、數(shù)組名稱,數(shù)組中包含變量的個(gè)數(shù) 。??
例如:int a[10]??? 表示定義了一個(gè)整形數(shù)組,數(shù)組名為a,此數(shù)組有10個(gè)元素。
2、一維數(shù)組定義數(shù)組基本方式為:類型符? 數(shù)組名[常量表達(dá)式]
注意:定義數(shù)組時(shí),用到的“數(shù)組名[常量表達(dá)式]”和引用數(shù)組元素時(shí)用到的“數(shù)組名[下標(biāo)]”在形式上相似,但在含以上和用法上是不同的。如:
????? int a[10];??????? /*定義素組長度為10*/
????? t=a[6];????????? /*引用a數(shù)組中序號為6的元素,此時(shí)6不代表數(shù)組長度*/
如果在數(shù)組名[常量]前有類型名(如int,float,char),則此時(shí)是定義數(shù)組;如果在其前面沒有類型名,則是引用數(shù)組元素
例:引用數(shù)組元素,利用循環(huán)數(shù)組元素a[0]~a[9]賦值為0~9,然后按逆序輸出各元素的值
? ? ? ? ??
1 #include "stdio.h" 2 3 void main() 4 5 { 6 7 int i,a[10];//定義整型變量i和整形數(shù)組a,a有10個(gè)元素 8 9 for(i=0;i<=9;i++)//先后對10個(gè)數(shù)組元素賦值 10 11 a[i]=i; 12 13 for(i=9;i>=0;i--) 14 15 printf("%d",a[i]);//按逆序先后輸出數(shù)組a中的10個(gè)元素 16 17 printf("\n"); 18 19 }?
運(yùn)行結(jié)果為:9876543210
?
**3、數(shù)組的初始化**
????? 在數(shù)組賦的初值,是按循序賦給相應(yīng)的數(shù)組元素的。如果只是一部分賦初值,那么剩下的元素就會自動設(shè)為0。
??? 數(shù)組:int a[]={1,2,3,4};? //由于有4個(gè)初值,系統(tǒng)自動確定數(shù)組有4個(gè)元素
????? 如果所定義的數(shù)組的長度和初始化的數(shù)據(jù)的個(gè)數(shù)相同,則定義數(shù)組時(shí)可以不寫數(shù)組長度
?
**4、二維數(shù)組**
? 二維數(shù)組的一般式為:類型名 ?數(shù)組名[常量表達(dá)式][常量表達(dá)式];
?? 常量表達(dá)式可以為整形常量,也可以為整型表達(dá)式如a[2-1][2*2-1]
?
**5、二維數(shù)組的初始化**
?? 1)分行給二維數(shù)組賦初值
int [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
?? 2)可以將所有數(shù)據(jù)寫在一個(gè)大括號,按數(shù)組排列的順序?qū)Ω髟刭x初值
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12,13};
?? 3)可以對部分元素賦初值(這種方法對非0元素少時(shí)方便使用)
int a[3][4]={{1},{5},{9}};
1 /*假如有10個(gè)數(shù),比較10個(gè)數(shù)的大小并排序 */ 2 3 #include "stdio.h" 4 5 void main() 6 7 { 8 9 int a[10]; 10 11 int i,j,t; 12 13 printf("請輸入10個(gè)數(shù)字:\n"); 14 15 for(i=0;i<10;i++) 16 17 scanf("%d",&a[i]);//先后輸入10個(gè)數(shù)字 18 19 printf("\n"); 20 21 for(j=0;j<9;j++)//進(jìn)行9次循環(huán),實(shí)現(xiàn)9次比較 22 23 for(i=0;i<9-j;i++)//在每一次中進(jìn)行9-j次比較 24 25 if(a[i]>a[i+1])//相鄰兩個(gè)數(shù)比較 26 27 { 28 29 t=a[i];a[i]=a[i+1];a[i+1]=t; 30 31 } 32 33 printf("排序后的數(shù)字:\n"); 34 35 for(i=0;i<10;i++) 36 37 printf("%d\t",a[i]); 38 39 }?
結(jié)果:
1 /* 將二維數(shù)組a的行與列互換存在另一個(gè)數(shù)組b中 */ 2 3 /*編程思路:將a數(shù)組中的i行j列賦值給b數(shù)組的j行i列,如a[0][1]賦給b[1][0],a[0][2]b[2][0],可以利用雙層循環(huán)來除了,用外循環(huán)控制行數(shù)的變化,內(nèi)循環(huán)控制列的變化*/ 4 5 #include "stdio.h" 6 7 void main() 8 9 { 10 11 int a[2][3]={{1,2,3},{4,5,6}};//定義數(shù)組a并賦值 12 13 int b[3][2],i,j;//定義數(shù)組a 14 15 printf("a的變化\n"); 16 17 for(i=0;i<2;i++)//用i控制行數(shù)的變化 18 19 { 20 21 for(j=0;j<3;j++)//用j控制列數(shù)的變化 22 23 { 24 25 printf("%5d",a[i][j]);//輸出a數(shù)組中的i行j列元素 26 27 b[j][i]=a[i][j];//將a數(shù)組中的i行j列賦值給b數(shù)組的j行i列 28 29 } 30 31 printf("\n"); 32 33 } 34 35 printf("b的變化\n"); 36 37 for(i=0;i<3;i++){ 38 39 for(j=0;j<2;j++) 40 41 printf("%5d",b[i][j]);//輸出b數(shù)組元素 42 43 b[j][i]=a[i][j]; 44 45 printf("\n"); 46 47 } 48 49 }?
結(jié)果:
?
?
------- android培訓(xùn)、ios培訓(xùn)、期待與您交流! ----------
轉(zhuǎn)載于:https://www.cnblogs.com/gaozp/p/4835786.html
總結(jié)