项目六 任务二 二维数组

任务二 二维数组
任务描述
在实际的开发中,有些时候一维数组解决不了的问题,我们还得使用二位数,例如,一个班有10个人,每个人有四门课的考试成绩,如果使用一维数组解决是很麻烦的。通过本任务就是来使用二维数组解决这样的问题,这一任务找中将会学到,二维数组的声明初始化以及引用,读者应该能够熟练声明二维数组,运用二维数组。
学习目标
掌握二维数组的定义。
掌握二维数组的初始化。
掌握二维数组的引用。
掌握二维数组的遍历。
相关知识
6-2-1 二维数组的定义与初始化
1.二维数组的定义
来看一这这样的情形,有三名同学,每名同学有三门成绩要存储如表6-1所示,一维数组是解决不了这样的问题,存储学生各科的成绩得使用的二维数组,数据得像{{23,78,99},{100,88,89},{90,80,77}}这样来存储,如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像下图Excel中的6-1表格所示。

表6-1学生成绩表

那么接下来我们就来学习二维数组。二维数组的定义方式与一维数组类似,其语法格式如下:
类型 数组名[大小][大小];
与一维数组比较,多了一个下标,一般称前个下标为行,第二个称为列。
例如定义一个3行4列的浮点的二维数组。
例    float   a[3][4];
定义了 a数组 3行4列 12个元素 均为实型,在上述定义的二维数组中,接下来,通过一张图来描述二维数组a的元素分布情况 6-6如图。

图6- 9 二维数组的内存结构图
从图中可以看出,二维数组a是按行进行存放的,先存放a[0]行,再存放a[1]行、a[2]行,并且每行有四个元素,也是依次存放的。因为数组的长度为元素数量乘以每个元素类型的大小,这里的二维数组 a 为 3行 4 列共 12 个元素,每个元素占用 4 字节,所以变量 a 占用 48 字节。
二维数组在内存的存在形式,各 个元素的地址是连续分布的,即在 前一个元素基础上+4。
2.二维数组的赋值
完成二维数组的定义后,接下来使用二维数组,在使用之前先对二维数组进行赋值,对二维数组的赋值也有两种方式。
方式一 动态赋值 :对二维数组元素进行赋值,也可以像一维数组一样动态赋值。
a[0][0]=12;
a[0][2]=12;
a[0][3]=12;
.......
可以这样一次对一维对数组的里面的元素进行赋值。
方式二:静态赋值,也就是对二维数组进行初始化,初始化二维数组的方式有两种,具体如下:
(1)按行分段赋值:
例如:int a[5][3]={ {80,75,92}, {61,65,71}, {59,63,70}, {85,87,90}, {76,77,85} };
(2)按行连续赋值:
例如:int a[5][3]={80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87, 90, 76, 77, 85};
这两种赋初值的结果是完全相同的。
3.对于二维数组的初始化还要注意以下几点:
可以只对部分元素赋值,未赋值的元素自动取“零”值。例如:
int a[3][3] = {{1}, {2}, {3}};
是对每一行的第一列元素赋值,未赋值的元素的值为 0。赋值后各元素的值为:
1  0  0
2  0  0
3  0  0
再如:
int a[3][3] = {{0,1}, {0,0,2}, {3}};
赋值后各元素的值为:
0  1  0
0  0  2
3  0  0
6-2-2 二维数组怎么引用
二维数组的引用方式同一维数组的引用方式一样,也是通过数组名和下标的方式来引用数组元素,其语法格式如下:
数组名[下标][下标];
例如 int a[3][4];
各个元素的顺序为如下。
a[0][0]、a[0][1]、a[0][2]、a[0][3]
a[1][0]、a[1][1]、a[1][2]、a[1][3]
a[2][0]、a[2][1]、a[2][2]、a[2][3]
说明:在引用二维数组的时候要注意以下几点:
1.数组的下标是从0开始的,不是从1开始。
2.数组下标必须在指定范围内使用,编译通过,在运行时会因为数组越界而异常中断:
例如 int a[2][4];  // 定义a为2行4列的二维数组
a[2][4]=3;         // 对数组a第3行第4列元素赋值,出错
为了帮助读者更好地掌握二维数组的引用,接下来一起来做一个案例。
实例6- 5定义一个二维数组,然后遍历数组的每一个元素,并在控制台上打印出来。

#include <stdio.h>
int main()
{   //声明并初始化数组
     int array[3][4] = { {11,12,3,14 }, {15,67,7,8}, {91,1,71,12} };
     int i=0,j=0;
     printf("二维数组元素如下\n");
     for (i = 0; i < 3; i++) //循环遍历行
     {
        for ( j = 0; j < 4; j++) //循环遍历列
     {
          printf("[%d][%d]: %d   ", i, j, array[i][j]);
      }
       printf("\n");//每一行的末尾添加换行符
     }
      getchar();
      return 0;
}


运行结果,如图6-10所示。

图6- 10 二维数组的引用
定义了一个二维数组array,该数组有3行4列。使用嵌套for循环遍历二维数组元素时,外层for循环用于变量数组的行元素,内层for循环用于遍历数组的列元素。

猜你喜欢

转载自blog.csdn.net/qq_27248989/article/details/106109295