1. 二维数组
二维数组定义:
类型 数组名[行号][列号];
二维数组初始化:
二维数组默认:行优先
int arr[][4];ok 因为默认行优先,所以行号可以省略,而列号不能省
int arr[3][];//error
二维数组的使用:
二维数组名做函数参数传递的时候, 行信息会丢失,列信息不会丢失、
2. 二维数组正确写法:行号可以不写,列号必须写
int brr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int crr[3][4] = {{1,2,3,4},{5,6},{9,10}};
int drr[3][4] = {{1,2}, {3,4,5,6}, {7,8}};
int err[3][4] = {{0,0,1,2}, {3,4}, {0,0,5,6}};
int frr[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int grr[][4] = {1,2,3,4,5,6,7,8,9,10};
int hrr[3][4] = {};
3. 将一个3行4列的矩阵转化成一个4行3列的矩阵
#include<stdio.h>
int main()
{
int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int brr[4][3] = {};
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
brr[j][i] = arr[i][j];
}
}
for(int i=0; i<4; i++)
{
for(int j=0; j<3; j++)
{
printf("%d ", brr[i][j]);
}
printf("\n");
}
}
运行结果:
4. 给出一个3行4列矩阵,求出矩阵中的最大值以及所在位置。
方法一、直接写在主函数中
#include<stdio.h>
int main()
{
int arr[3][4] = {12,23,34,45,56,67,78,89,11,10,1,118};
int max = 0;
int max_i = 0;
int max_j = 0;
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
if(arr[i][j] > max)
{
max = arr[i][j];
max_i = i;
max_j = j;
}
}
}
printf("%d %d %d\n", arr[max_i][max_j], max_i, max_j);
return 0;
}
运行结果: