当前课程知识点:C语言程序设计(上) >  数组(二) >  5.5 二维数组的定义与使用 >  5.5 二维数组定义

返回《C语言程序设计(上)》慕课在线视频课程列表

5.5 二维数组定义在线视频

5.5 二维数组定义

下一节:二维数组的定义与初始化.c

返回《C语言程序设计(上)》慕课在线视频列表

5.5 二维数组定义课程教案、知识点、字幕

大家好

我们前面学习了一维数组的定义

初始化以及

数组里边的元素的一个使用的问题

尤其是我们结合了字符串数组的处理

字符串的处理问题

讨论了一维数组的使用

那么我们今天开始学习

二维数组的

来定义初始化与使用

那么它两个之间有多大的差别呢

其实 对数组而言

就有两点是最重要的

至于一维二维

从本质上的差别并不大

那么哪两点是重要的呢

第一是存储 第二是访问

那么 存储我们在关注的说

它是内存的一片

连续的存储空间

无论它是一维数组 还是二维

多维数组 都是这样的

一片连续的存储空间

那么 这一片连续的存储空间就带来了

访问上的一个便利

什么便利呢

我们可以访问数组里边的任何一个元素

那么 按什么去访问呢 位置

按位置去访问

数组里边的任何一个元素

就是这两点

存储 以及按位置

也就是按下标变量去访问

对于二维数组

具体来说 它的定义以及它的使用

都存在哪些问题呢

我们来看一下它的定义的格式

大家一看 跟一维数组

长得几乎完全一样

就是多了一个

表达式2 那它表示什么呢

表达式1 是行 就是一维数组

里边也有 这个是元素的个数

那我们现在是行数

第二个表达的是

表达的是它的列数

比如说 我们举个例子看

int a数组 flaot一个b数组

那么a数组我们对它的解读

这是一个两行三列的数组

那是几个元素呢

占了多少个字节呢 我们看int系

那么如果你用的系统

int是两个字节 那就是

2×6=12个字节

如果你用的系统是4个字节

那就4×6=24

也就说 你这个

我们定义了 a数组

这个a数组的内存占了

要不就是12个连续的字节数

要不就是

24个连续的字节数

那么这里边的

增量是多少个字节呢

也就是说

每一个数组元素它的存储空间

多大呢

那就是int型

到底是两个字节还是4个字节

那对float的这个b数组来说 是同样的道理

是3×3的整个元素

然后 flaot一定是

4个字节 那就4×9占了连续的

36个字节的一个存储空间

那么我们去访问这个存储

空间里边的任何一个元素的时候

那个增量 这个4

或者这个2它就是

非常重要的 是因为按照这个位置

去找着它这个元素的

大家一定会关注

下一个问题是它的初始化的问题

那一维数组我们可以初始化

二维数组当然也可以初始化

那么按什么呢 我们看

一样 花括弧里边是

要初始化的这些数据

但是二位数组因为它是分行的

那我这数据到底怎么摆放呢

可以 一行一行的摆放 这种形式

一行一行的摆放

用花括弧括起来

也可以不分行 什么情况下呢

很规矩 我们是3×3的数组

整好给了9个数据

那就是一个一个放进去

那这种情况我们是可以不分行的

当然 如果我们3×3的数组

我没给了全部数据

也可以不分行 比如说我就给了5

5个数据 6个数据

那他就挨着放前边的第一行第二行

放的哪一个数据按行依次存放

是这样的规则 按行依次存放

那还有另一种情况呢

我们给部分元素初始化

这是我们在一维数组里边说

是可以的 二维数组当然也是可以的

我们对第一行上

前两个元素初始化

前两个元素

那么 第二行上呢这个4

给了谁呢 一定是给了第一个元素

那 大家关心的剩下的元素呢

从一维数组那我们就知道

只要你初始化过

剩下的元素统统清0

那这种情况呢

我们说 两行3列的这个a数组

我们只给了两个元素

那是给了第一行上的前两个元素

剩下的统统 清0

那前面还有1个情况

是说 下标 这个

一维数组的下标可以省

二维数组的可以吗

两个下标都可以省吗

不可以 只可以省行下标

大家想想 如果我列下标也没有的话

我怎么知道这些元素

都给了谁呢

如果省了行下标

按照列下标

取前三个给了第一行

取后三个给了第二行

那这个a数组一定是两行3列

如果你给了9个数据

那一定是3行3列

它是按列去取

给每一行上放数据

所以 这块要强调

一定是两点 一点是说

省略的只能是

行下标 不能是列下标

第二个呢 还有非常重要的一点

你要做这种省略的时候

必须是给所有的数组元素初始化 

才能用这种省略的方式

不能给部分元素初始化

那我们看一个 给一个例子

咱们看一下 整个看一下说

数组的定义啊 初始化啊 输入输出

这些问题怎么做

我们看一个例子是说

用我们开一个二维数组整好放同学的成绩

比如说 咱们班 现在我们

8000人 9000人

每人 比如说我们这学期学了5门课

那我就是

8000比如说8000人

8000×5这么大的一个数据

那我们现在别8000×5了 我们先

3个人 3门课

那这是3×3的一个叫fs的数组

我们给它初始化的是说

第一行 第二行 第三行

我们分别用蓝颜色

红颜色 黑颜色标识出来

我们是想讨论它在内存里

到底怎么存放呢

我们看一下

看见的这个内存的形式

跟一维数组一模一样的

是线性的 连续的一片空间

那蓝颜色的

是第一行 红颜色第二行 第三行

那现在是按行存放还是按列存放

显然是按行存放的

你对数组进行了这样的初始化

它到内存里自然存放的方式

是按行存放的一个方式

大家看 那这个数组

二维数组是不是也长得有点像一维数组

事实上

任何多维的数组

在内存里存放都是这样线性存放的

我们下来一定关注的问题是

怎么引用呢

我一定要从头到尾使用吗

我要使用第二行上的

这个 55这个数据可以吗

我们把这个数组

分数这个数组给了程序

然后 我们看一下它

我们刚才讨论的

初始化定义以及输入输出的问题

我们来看一下这个程序

在这里边

那我们定义了int的fs

是给了一个?常量

我们给的是3

3×3的一个数组

然后 我们现在是怎么给这个数组里边

放的数据呢

咱先不看这个注释的这一块

我们先不看它

先看写数据

是通过scanf写进去的

那么这个scanf 每一次写的是谁呢

一个数组元素

fs这个数组元素里边的

第i行第j列

而我们现在的i 是谁

是外循环控制变量

从0到谁呢 小于n是2

从0~2 内循环是j

从0也~2

那也就说 外循环

是0的时候 内循环

从0变化到2

显然是按行去读取数据的

那输出我们看一下

这也一样 我们给的是

i和j作为它的下标控制

分别是行和列

然后把它输出一个这样子的一个分数

带着个格式的行 列

对的i j以及分数

这样的形式 我们运行一下

给3行3列给9个数据

我们简单就给1 2 3

大家看 这是我们

按第1第0

下边为0的这一行

下标为1的行 下标为2的行

这就是我们在内存里

也是按照这样的一个顺序存放的

这是我们刚才说的用scanf

把数据写进这个分数这个数组里

如果我们不是这样子

如果我们有很多的 很大量的

数据100个上千的这样的数据

那我上千个数据我们不可能搁在这里边

如果是有那么一个班30个人的数据

那我们这样scanf的方式

肯定是不可取的

我们把这个scanf这一块注释掉

咱用初始化的方式

也就说我们先用一个初始化的方式

把这恢复了

那么这时候 别忘了

不能重复定义 这一块要删掉

我们看 定义了

分数 然后给它

按行进行了初始化

那我们看这个输出

这是刚才我们不用scanf敲进去了

它就自动出来了

那我们刚才讨论过的几个问题是说

我这里边呢

第一行上我就给了两个数据

第二行上 我们刚才说给了

一个数据 第三行上我还就没给

给部分元素初始化 这样可以吗

那剩下的元素是什么呢

我们输出看一下

1 2这是在下标为0的行上

下标为1的行上只有第一个有4

剩其余的全是0

这是我们刚才说这个是没有问题的

那我们还有一种情况说是

比如说这种 这种情况 我下标

这样 把行下标缺什么

我后边可以这样给吗

大家看 如果我这样给的话会是什么情况呢

大家看 这是不是就不对了

第1 2是对的 这个4也是对的

但是后边呢这些就不对了

这个不对的原因是什么呢

我们是说

当你把这个下标

省略了的时候

我们需要规则是

给所有元素初始化

不能给部分元素初始化

所以呢 这块我们是

用这样一种方式 我们把这个拿掉

用这种 这样的方式

大家看 我们

没有下标 然后呢 给了9个数据

它自动去取 取了3行 我们看一下

这就没有问题了

那我们刚才在这说到几个问题

一个是初始化的问题

一个是 输入输出

对下标的这个二维数组的输入输出

我们看见了

非常标准的

你进行输入的时候也是两层循环

输出的时候也是两层循环

外循环控制的是行 内循环控制的是列

那这里边尤其要注意的是说

当你 这个下标

一维的行下标要省略的话

你后边的元素是给所有元素初始化

那么什么时候我们

会舍不得去写这个行下标呢

那我们在什么时候会舍不得写这个下标呢

就是说我并不知道这个行到底有多少

比如说我们说这个班到底是30个人

还是40个人还是25个人

我并不知道

但是我却知道这一堆数据

那我把数据搁进来

它按照数据去取了 自动取了它多少行

就是这种情况下

我们是需要把行下标省略了

那么 行下标省略的时候

大家说 这里边的数据

必须是一个完整的数据

好 这一点大家一定要注意

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

5.5 二维数组定义笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。