1.二維數組的定義和引用
一. 數據類型 數組名[常量表達式1][常量表達式2];
(1)假如有個二維數組array[n][m],則行下標的取值范圍0~n-1
(2)列下標的取值范圍0~m-1
(3)二維數組的最大下標元素是array[n-1][m-1];
假如有一個數組array[3][4];則其下標變量為 array[0][0],array[0][1],array[0][2],array[0][3],array[1][0],array[1][1],array[1][2],array[1][3],array[2][0],array[2][1],array[2][2],array[2][3]
二.二維數組的引用
數組名[下標][下標];
array[1][2]
2.二維數組初始化
(1)可以將所有數據寫在一個大括號內,按照數組元素排序對元素賦值。int array[2][2]={1,2,3,4};
(2)在為所有元素賦初值時,也可以省略行下標,但是不能省略列下標。int array[][3]={1,2,3,4,5,6};
(3)也可以分行給數組元素賦值。 int a[2][3]={{1,2,3},{4,5,6}}; a[0][0]=1;a[0][1]=2;a[0][2]=3...
在分行賦值時,可以只對部分元素賦值。int a[2][3]={{1,2},{4,5}};a[0][0]=1;a[0][1]=2;a[0][2]=0;a[1][0]=4;a[1][1]=5;a[1][2]=0;
(4)二維數組也可以直接對數組元素賦值。int a[2][3]; a[0][0]=1;
#include<stdio.h> /*任意輸入一個三行三列的二維數組,求對角元素之和*/ int main() { int a[3][3];/*定義一個三行三列的數組*/ int i,j,sum=0; /*定義循環控制變量好保存數據變量sum*/ printf("please input:\n"); /*利用循環數組對數組元素進行輸入*/ for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } /*利用循環數組對對角線對其求和*/ for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(i==j) { sum=sum+a[i][j]; } } } printf("the result is : %d\n",sum); /*輸出最后的結果*/ return 0; }
3.二維數組應用
#include<stdio.h> int main() { int a[2][3],b[3][2]; /*定義兩個數組*/ int max,min;/*表示最大值和最小值*/ int h,l,i,j;/*用於循環控制*/ for(i=0;i<2;i++) /*通過鍵盤為數組元素賦值*/ { for(j=0;j<3;j++) { printf("a[%d][%d]=",i,j); scanf("%d",&a[i][j]); } } printf("輸出二維數組:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf("%d\t",a[i][j]);/*使元素分行顯示*/ } printf("\n"); } /*求數組中最大元素及其下標*/ max=a[0][0]; h=0; l=0; for(i=0;i<2;i++) { for(j=0;j<3;j++) { if(max<a[i][j]) { max=a[i][j]; h=i; l=j; } } } printf("數組中最大元素是:\n"); printf("max:a[%d][%d]=%d\n",h,l,max); /*求數組中最小元素及其下標*/ min=a[0][0]; h=0; l=0; for(i=0;i<2;i++) { for(j=0;j<3;j++) { if(min>a[i][j]) { min=a[i][j]; h=i; l=j; } } } printf("數組中最小元素是:\n"); printf("min:a[%d][%d]=%d\n",h,l,min); /*將數組a轉換后存入數組b中*/ for(i=0;i<2;i++) { for(j=0;j<3;j++) { b[j][i]=a[i][j]; } } printf("輸出轉換后的二維數組:\n"); for(i=0;i<3;i++) { for(j=0;j<2;j++) { printf("%d\t",b[i][j]); } printf("\n"); /*使元素分行顯示*/ } return 0; }
