1.二维数组基础
二维数组的创建:类型 数组名 [ 数组长度1 ] [ 数组长度2 ]//狭义上为 [ 行 ] [ 列 ]
元素个数:行✖列
int main()
{
int array[2][3]={1,2,3,4,5,6};
int array1[2][3]={0};//其他值默认是0
int array2[2][3]={{1},{2}};//第一行第一个数字是1,第二行第一个数字是2,其他默认是0
int array3[][3]={1,2,3,4,5}//第一个方括号内的数组长度自动推导出来,行可以省略,列不能省略
int array4[2][2][2]={ {{1,2},{3,4}} , {{5,6},{7,8}} }//三维数组,第一个(1,1,1)位置的数据是{1,2},依次类推......
for(int i = 0;i < 2 ; i++ )
{
for(int j = 0;j < 3 ; j++ )
{
printf("%d",array[i][j]);
}
printf("\n");//形成行列关键
}
return 0;
}
2,二维数组传参
void print_array(int arr[][3],int row,int cols)
{
for(int i = 0;i < row ; i++ )
{
for(int j = 0;j < cols ; j++ )
{
printf("%d\t",arr[i][j]);
}
printf("\n");//形成行列关键
}
}
int main()
{
printf_array(arr,2,3);//传参操作是函数名进行传参
return 0;
}
3,字符类二维数组
char str[][10]={"yo ","~","bro"};//自动推导行数是3
for(int i=0 ; i<3 ; i++ )
{
printf("%s\n",str[i]);//str[i]代表第i行的首地址
}
for(int i =0 ; i<3 ; i++ )
{
scanf_s("%s",str[i],10);
}
for(int i=0; i<3 ; i++ )
{
printf("%d",str[i]);//str代表第一行的首地址
}
4,二维数组的常规操作
4.1制表操作
int main()
{
char name[3][10] = {"雪豹丁真","拐零","孙笑川"};
int score[3][3] =
{
60,62,50,
98,95,99,
89,84,85
};
printf("姓名\t\t语文\t\t数学\t\t英语\t\t总分\n");
int rows = 3;
int cols = 3;
int sumrows[3] = {0};
for (int i = 0;i<rows;i++)
{
printf("%-16s",name[i]);//控制打印字符间距格式
for (int j=0;j<cols;j++)
{
printf("%d\t\t",score[i][j]);
sumrows[i] += score[i][j];
//sumrows[0] += score[0][1];
//sumrows[0] += score[0][2];
//sumrows[0] += score[0][3];
}
printf("%d\n",sumrows[i]);
}
return 0;
}
/*求列的和
for (int j = 0; j < cols; j++)
{
for (int i = 0; i < row; i++)
{
colsSum[j]+= score[i][j];
}
}*/
4.2做地图
int map[9][9] =
{
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,
1,1,0,0,1,0,0,1,1,
1,0,0,0,0,0,0,0,1,
1,1,0,0,0,0,0,1,1,
1,1,1,0,0,0,1,1,1,
1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,
};
for (int i=0;i<9;i++)
{
for (int j =0;j<9;j++)
{
switch (map[i][j])
{
case 1:
printf(" ");
break;
case 0:
printf("o");
default:
break;
}
}
printf("\n");
}
5,固定高位数字去做遍历
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int cas = 0;
for(int j=0;j<4,j++)
{
printf("%d ",arr[cas][j]);
}
cas = 1;
for(int j=0;j<4,j++)
{
printf(" %d",arr[cas][j]);
}