一 二维数组
1.二维数组的定义:
数据类型 数组名[行][列] ={ 数值1,数值2......};
2.二维数组有几行,就代表有几个一维数组. int a[2][3] = {1,2,3,4,5,6};
a[0] 对应的元素是1,2,3 二维数组的元素也是通过下标来访问的,行和列的下标都是从0开始的, a[0][0] 表示数组a的第一个元素.
3.二维数组的元素的个数 = 行数 * 列数
4.二维数组的初始化,可以不写第一维的长度,第一维的位数是根据第二维的长度关系计算出来的.
注意:第二维的长度必须要指定,不然编译的时候会出错.
5.二维数组的遍历:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
for(int i = 0;i < 3;i++){
for(int j = 0;j < 4;j++{
printf(“%d”,a[i][j]);
}
printf(“\n");
}
6.习题
将一个二维数组的行和列交换,存储到另外一个数组中去(即将数组的行和列进行交换)
int a[3][5] = {0};
int b[5][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = arc4random()%21+10;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
int b[5][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = arc4random()%21+10;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("a 数组的值为:\n");
//先从 a[3][5]中取出数值,存放到b[5][3]中
for (int i = 0; i < 3; i++) {
for (int j = 0; j <5; j++) {
//交换行列的核心代码
b[j][i] = a[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("b 数组的值为:%d ",b[i][j]);
}
printf("\n");
for (int j = 0; j <5; j++) {
//交换行列的核心代码
b[j][i] = a[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("b 数组的值为:%d ",b[i][j]);
}
printf("\n");
}
有一个3行4列的二维数组,要求编程找出最大元素,并输出所在的行和列.
int a[3][4] = {0};
for (int i = 0; i < 3; i++) {
for (int j =0; j < 4;j++) {
a[i][j] = arc4random()%21+10;
}
}
int max = 0,n = 0,m = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//如果最大值比 a[i][j]
for (int i = 0; i < 3; i++) {
for (int j =0; j < 4;j++) {
a[i][j] = arc4random()%21+10;
}
}
int max = 0,n = 0,m = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//如果最大值比 a[i][j]