4.2.3 二维数组的初始化

更新于 2026年10月10日 版权声明
4.2.3 二维数组的初始化

在定义二维数组时,可以同时对二维数组的各元素进行初始化。

方法1:

s[3][4]={2,4,6,3,5,7,1,0,8,5,2,1};

将和元素个数相等的各数值写在一个大括号内,按数组元素的排列顺序对各个元素赋初值。

初始化的结果如下:

s[0][0]=2,s[0][1]=4,s[0][2]=6,s[0][3]=3,s[1][0]=5,s[1][1]=7,s[1][2]=1,s[1][3]=0,s[2][0]=8,s[2][1]=5,s[2][2]=2,s[2][3]=1。

等价于:

s[][4]={2,4,6,3,5,7,1,0,8,5,2,1};

因为初始化赋值时,给每个元素都赋值了,因此,可以省略第一个常量表达式,但第二个常量表达式不能省略。也就是说,行标可省,列表不能省。

例如,

s[3][]={2,4,6,3,5,7,1,0,8,5,2,1};

这样的初始化很容易产生歧义,因为从初始化的赋值中,只能知道是3行,但是每行几个元素是未知的,所以有可能理解为只是对部分元素赋值,这样结果就是不唯一的。所以,C语言规定行标可省略,列表不能省略。

方法2:

s[3][4]={{2,4,6,3},{5,7,1,0},{8,5,2,1}};

用和行数相等个数的大括号分别将数值赋给每行的每个元素。{2,4,6,3}赋值给s[0][0],s[0][1],s[0][2],s[0][3];{5,7,1,0}赋值给s[1][0],s[1][1],s[1][2],s[1][3];{8,5,2,1}赋值给s[2][0],s[2][1],s[2][2],s[2][3]。

初始化的结果如下:

s[0][0]=2,s[0][1]=4,s[0][2]=6,s[0][3]=3,s[1][0]=5,s[1][1]=7,s[1][2]=1,s[1][3]=0,s[2][0]=8,s[2][1]=5,s[2][2]=2,s[2][3]=1。

方法3:

s[3][4]={{2,4},{5},{8,5,2}};

只给每行的部分元素赋值,其他没有被赋值的元素默认为0。相当于:

s[3][4]={{2,4,0,0},{5,0,0,0},{8,5,2,0}}

初始化的结果为:

s[0][0]=2,s[0][1]=4,s[0][2]=0,s[0][3]=0,s[1][0]=5,s[1][1]=0,s[1][2]=0,s[1][3]=0,s[2][0]=8,s[2][1]=5,s[2][2]=2,s[2][3]=0。

方法4:

s[3][4]={{2,4}};

只对某些行赋初值,没有被赋值的行默认为该行所有元素都为0。相当于

s[3][4]={{2,4,0,0},{0,0,0,0},{0,0,0,0}};(https://www.daowen.com)

初始化的结果为:

s[0][0]=2,s[0][1]=4,s[0][2]=0,s[0][3]=0,s[1][0]=0,s[1][1]=0,s[1][2]=0,s[1][3]=0,s[2][0]=0,s[2][1]=0,s[2][2]=0,s[2][3]=0。

方法5:

int s[][4]={{},{5},{8}};

如果只对每行部分元素赋初值,也是可以省略列表的,但是一定要用大括号表明行数。相当于:

s[3][4]={{0,0,0,0},{5,0,0,0},{8,0,0,0}};

例4-7 编程实现将下面的矩阵输出。

2 4 6 3

5 7 1 0

8 5 2 1

分析:

要输出该矩阵,需要先给该数组元素赋值,而要输出为矩阵的样式,需要将每行元素输出完毕后,输出换行。可以使用循环的嵌套(外循环表示行,内循环表示列)依次输出该数组各元素。

程序如下:

图示

外循环表示行,因此变量i的范围从0到2;内循环表示列,因此变量j的范围从0到3。在内循环结束后要输出换行符,要特别注意换行符的位置,换行符应该是在内循环结束后,也可以认为是在外循环的循环语句中。如果将换行符放在外循环结束后,那运行结果就不对了,换行符起不到每行元素输出完毕后的换行作用。必须是在输出每行各元素之后,输出一个换行符,因此应该将其放在外循环的循环语句中,添加“printf("\n")”。

例4-8 将一个3行4列的二维数组s[3][4]行和列的元素互换,存到另一个4行3列的二维数组t[4][3]中,并求出数组t[4][3]中数值最小的那个元素值。

图示

分析:

第一步:将s[3][4]的行和列的元素互换。对于数组s[3][4]中的任何一个元素来说,s[i][j]在数组t中的位置应该是t[j][i],也就是s数组中第i行j列的元素将会是t数组中第j行第i列的元素。

程序如下:

图示

图示

第二步:求出数组t[4][3]中数值最小的元素值。可以增加一个变量min用来表示最小值,并将第一个元素值赋给min,然后通过循环依次用数组t中每个元素和min进行两两比较,如果有比min小的元素,就将该元素值赋给min。这样min跟每个元素都比较后,min中存的就是最小的元素值。

程序如下:

图示

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)