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