二维数组
一般表达式
类型说明符 数组名[常量表达式][常量表达式]
int a[3][4]
int arr[2][3] = {{1,2,3},{4,5,6}};
int arr1[2][3] = {1,2,3,4,5,6};
int i,j;
//遍历
for(i=0;i<2;i++){
for(j=0;j<3;j++){
//printf("%d,%d,%d\n",i,j,arr[i][j]);
printf("%d ",arr[i][j]);
}
putchar('\n');
}
return 0;
注意putchar('\n');里面是单引号
二维数组的空间地址也是连续的
初始化
int arr[3][3] = {1,2,3};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",arr[i][j]);
}
putchar('\n');
}
int arr1[3][4] = {{1},{2},{3}};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d ",arr1[i][j]);
}
putchar('\n');
}
int arr2[3][3] = {{1},{0,2},{0,0,3}};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",arr2[i][j]);
}
putchar('\n');
}
可以不写行,但不能不写列
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
练习
有一个3X4的矩阵,要求最大值,并求其所在行号和列号
#include <stdio.h>
int main()
{
int a[3][4]={1,2,3,4,5,6,7,85,9,10,11,12};
int i,j;
int row,line;
int max;
max = a[0][0];//要找出身高最高的那个人,就先记录第一个人的身高在纸上
printf("二维数组如下\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d ",a[i][j]);
}
putchar('\n');
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<a[i][j]){//如果纸上记录的身高比这个人矮,则重新写入当前的身高
max = a[i][j];
row = i;
line = j;
}
}
}
printf("\n最大数为 %d 它在第 %d 行 第 %d 列\n",max,row+1,line+1);
return 0;
}
数组结束啦