二维数组是一维数组的演变。
int a[3][4] ;// 3个可以存储4个int型元素的一维数组
double d[4][4]; //4个可以存储4个double型元素的一维数组
二维数组储存方式
m[0][0] m[0][1] m[0][2]
m[1][0] m[1][1] m[1][2]
m[2][0] m[2][1] m[2][2]
把二维数组看做教室的桌子,而学生看做所储存的元素(用学号表示一个学生)
行
列 0 1 2 3
0 1201 1208 1215 1222
1 1202 1209 1216 1223
2 1203 1210 1217 1224
3 1204 1211 1218 1225
4 1205 1212 1219 1226
5 1206 1213 1220 1227
6 1207 1214 1221 1228
把行看做排 列看做组
假如你要找 1210 首先你要知道他在几行几列.
二维数组的定义和赋值
其标准形式如下:
数据类型 数组名[一维容量][二维容量]
int a[3][3] ;//定义一个可以存储9个int型元素的二维数组
char c[2][5];//定义一个可以存储10个char型元素的二维数组
int a[3,3];//错误
注意:二维数组的容量 == 一维容量 * 二维容量
还有数组容量必须为常量。
二维数组的赋值
1.用花括号把数值分开。这样比较直观,有利于可读性,管理。
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
2.跟一维数组一样的赋值方式,但是这样方式,不利于可读,管理
int a[3][3] = {1,2,3,4,5,6,7,8,9};
3.只部分的元素赋值。剩余的编译器会自动初始化为零。
int a[3][3] = {1,2,3,5};
int a[3][3] = {{1,2},{4},{7,8}};
二维数组的应用
1.二维数组的输入输出
2.查找二维数组中的最小的元素
3.使用两个数组实现矩阵转置输出。
4.在一个数组中实现矩阵转置输出。
多维数组
int a[2][3][6]; //定义一个可以存储36个int型的多维数组。
其定义和赋值方式跟二维数组一样。
书上关于多维数组的只有一页,是不是多维数组在C语言中用的少,还是基本不用。
int a[3][4] ;// 3个可以存储4个int型元素的一维数组
double d[4][4]; //4个可以存储4个double型元素的一维数组
二维数组储存方式
m[0][0] m[0][1] m[0][2]
m[1][0] m[1][1] m[1][2]
m[2][0] m[2][1] m[2][2]
把二维数组看做教室的桌子,而学生看做所储存的元素(用学号表示一个学生)
行
列 0 1 2 3
0 1201 1208 1215 1222
1 1202 1209 1216 1223
2 1203 1210 1217 1224
3 1204 1211 1218 1225
4 1205 1212 1219 1226
5 1206 1213 1220 1227
6 1207 1214 1221 1228
把行看做排 列看做组
假如你要找 1210 首先你要知道他在几行几列.
二维数组的定义和赋值
其标准形式如下:
数据类型 数组名[一维容量][二维容量]
int a[3][3] ;//定义一个可以存储9个int型元素的二维数组
char c[2][5];//定义一个可以存储10个char型元素的二维数组
int a[3,3];//错误
注意:二维数组的容量 == 一维容量 * 二维容量
还有数组容量必须为常量。
二维数组的赋值
1.用花括号把数值分开。这样比较直观,有利于可读性,管理。
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
2.跟一维数组一样的赋值方式,但是这样方式,不利于可读,管理
int a[3][3] = {1,2,3,4,5,6,7,8,9};
3.只部分的元素赋值。剩余的编译器会自动初始化为零。
int a[3][3] = {1,2,3,5};
int a[3][3] = {{1,2},{4},{7,8}};
二维数组的应用
1.二维数组的输入输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
int main( void )
{
int i = 0,j = 0;
int a[3][3] = {0};
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
{
printf ( "a[%d][%d]=" ,i,j);
scanf ( "%d" ,&a[i][j]);
}
}
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
printf ( "%d\t" ,a[i][j]);
printf ( "\n" );
}
return 0;
}
|
2.查找二维数组中的最小的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void )
{
int i = 0,j = 0,min = 0;
int a[4][4] = {0};
srand ((unsigned) time (NULL));
for (i = 0;i < 4;++i)
{
for (j = 0;j < 4;++j)
a[i][j] = rand (); //为其赋值随机数
}
for (i = 0;i < 4;++i) //打印数组
{
for (j = 0;j < 4;++j)
printf ( "%d\t" ,a[i][j]);
printf ( "\n" );
}
min = a[0][0];
for (i = 0;i < 4;++i) //判断最小值
{
for (j = 0;j < 4;++j)
if (min > a[i][j])
min = a[i][j];
}
printf ( "\nmin = %d\n" ,min);
return 0;
}
|
3.使用两个数组实现矩阵转置输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <stdio.h>
int main( void )
{
int i = 0,j = 0;
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int t[3][3] = {0};
printf ( "输出原数组:\n" );
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
printf ( "%d\t" ,a[i][j]);
printf ( "\n" );
}
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
t[j][i] = a[i][j];
}
printf ( "输出转置后的数组:\n" );
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
printf ( "%d\t" ,t[i][j]);
printf ( "\n" );
}
return 0;
}
|
4.在一个数组中实现矩阵转置输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdio.h>
int main( void )
{
int i = 0,j = 0,t = 0;
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
printf ( "输出原数组:\n" );
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
printf ( "%d\t" ,a[i][j]);
printf ( "\n" );
}
for (i = 0;i < 3;++i)
{
for (j = i + 1;j < 3;++j)
{
t = a[j][i];
a[j][i] = a[i][j];
a[i][j] = t;
}
}
printf ( "输出转置后的数组:\n" );
for (i = 0;i < 3;++i)
{
for (j = 0;j < 3;++j)
printf ( "%d\t" ,a[i][j]);
printf ( "\n" );
}
return 0;
}
|
多维数组
int a[2][3][6]; //定义一个可以存储36个int型的多维数组。
其定义和赋值方式跟二维数组一样。
书上关于多维数组的只有一页,是不是多维数组在C语言中用的少,还是基本不用。