Logo

郎哥编程

第33讲:二维数组

2026-03-25 29

前面介绍了一维数组。在实际问题中有些数据信息是二维的或者多维的。多维数组元素有多个下标,以标识它在数组中的位置。本节只介绍二维数组,多维数组可由二维数组类推而得到。

声明二维数组

二维数组的声明与一维数组类似,只是需要给出两对方括号,声明二维数组的语法为:

类型说明符   数组名[][];

例如:

int  a[3][2];
score[2+1]1+1];

其中,声明语句的第一个方括号可以称为行数组,第二个方括号可以称为列数组。

二维数组的初始化

同一维数组类似,二维数组在使用前也要进行初始化。初始化也分为静态初始化和动态赋值。

   ① 静态初始化

静态初始化是在数组声明时,对声明的数组元素赋初值的过程。

例如:

int  array[][] = {{3,-9,6},{8,0,1},{11,9,8}};

声明并初始化数组array,它有3个元素,每个元素又都是有3个元素的一维数组。外层大括号对里面的元素是行数组的元素,因为行数组元素是一维数组,因此每个行数组元素也用大括号对包括起来,里面的元素是列数组的元素。

另外,用指定初值的方式对数组进行初始化时,列数组元素的个数可以不同。

例如:

int  array[][] = {{3,6},{8,0,1},{11,9,8}};

此时,第一个列数组的元素个数是2,第二个和第三个列数组的元素个数是3个。

② 动态赋值

二维数组的动态赋值和一维数组的动态赋值操作相同。

●先声明二维数组

例如:

int  b[1][2];
int  a[3][2];

●动态赋值

a[0][0] = 3;
a[0][1] = 6;
b[0][0] = 5;
b[1][0] = 10;
b[2][0] = 15;

二维数组元素的访问

二维数组的元素通过两个下标进行访问,分别是行数组下标和列数组下标,例如:对于二维数组a,可通过a[i][j]进行访问,其中i和j为数组a的下标。

例如:

#include <stdio.h>
int main()
{
	int  a[3][3] = {{3,-9,6},{8,0,1},{11,9,8}};
	int  i,j;
	for( i = 0; i < 3; i++ )
	{
		for(j=0; j<3;j++)
			printf("a[%d][%d] 数组元素的值为: %d;\n",i,j,a[i][j]);    
	}
}

在遍历数组的外层for循环中,循环条件为a数组第1维的长度,在内层for循环中,循环条件为a数组第2维的长度。

二维数组的存储结构

前面array数组的存储结构如下图所示:

下面通过一个完整的示例,演示如何声明一个二维数组,赋值并输出。

例【1】二维数组练习

编程要求:使用一个二维数组,存储5名同学的语文成绩和数学成绩,成绩由用户录入,最后输出这5名同学的语文成绩和数学成绩。

程序清单 sample.c

#include <stdio.h>
void main()
{
	 /**
      * 声明grade数组
      * 数组第1维是学生元素
	  * 数组第2维是成绩元素
     */
     float grade[5][2];
     //i,j为循环变量
     int i;
     //循环接收用户输入的学生成绩 
     for( i=0; i < 5; i++ )
     {
        
        printf("请输入 %d 个学生的语文成绩: ",i+1);  
		scanf("%f",&grade[i][0]);
        printf("请输入 %d 个学生的数学成绩: ",i+1);  
        scanf("%f",&grade[i][1]);
		printf("\n");
     }
     printf("*****学生成绩******");  
     //输出学生成绩
     for( i=0; i < 5; i++ )
     {
        printf("语文成绩:%.2f  数学成绩:%.2f \n",grade[i][0],grade[i][1]);    
     }
}

程序功能主要是演示二维数组声明、初始化、动态赋值、输出数组元素的使用方法。

程序声明一个二维数组grade,其中第1维有5个元素,存储5名学生的信息,第2维数组有2个元素,分别存储学生的语文成绩和数学成绩。程序通过循环依次获取用户输入的5位学生的语文成绩和数学成绩,并存储到二维数组中。最后,循环输出每位学生的语文成绩和数学成绩。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论