pycharm定义空的二维数组_C++强化 | 07 二维数组

9a0bca20e22b1df5353a8839c1f66533.png

戳一戳!和我一起走进信息学的世界

导读

C++是大多数学生入门信息学、参加信息学竞赛必备的编程语言。掌握C++,能够有助于孩子未来工作发展,也能提升孩子的综合能力,如抗挫折能力、逻辑分析能力等。

二维数组是数组中非常重要的知识,本篇文章中,让我们一起来了解二维数组,并掌握二维数组的基本用法吧!

温故而知新,可以为师矣

【NOIP竞赛/CSP认证】

▶  赛前必看!信息学名师带你复习NOIP竞赛初赛及CSP认证初赛

【信息学精华帖】

▶  信息学的万般好处!附C++必备基础知识总结

▶  信息学提高班知识体系详解与家长常见问题解答!让孩子赢在提高班学习的起跑线!

【C++提高班教程】

▶  C++强化 | 01 新学期再出发!温故知新! ▶  C++强化 | 02 继续前行,三大结构终极介绍 ▶  C++强化 | 03 一维数组入门 ▶  C++强化 | 04 数组越界 ▶  C++强化 | 05 一维数组经典应用 ▶  C++强化 | 06 一篇文章带你掌握字符数组

【C++基础班教程】

▶  C++总结 | 01 程序的世界 ▶  C++总结 | 02 输出、换行与注释 ▶  C++总结 | 03 变量定义、赋值与运算 ▶  C++总结 | 04 算术运算符与赋值运算符 ▶  C++总结 | 05 cin语句 ▶  C++总结 | 06 程序中的数据类型 ▶  C++总结 | 07 数据类型补充 ▶  C++总结 | 08 顺序结构 ▶  C++总结 | 09 if 和 if-else ▶  C++总结 | 10 if嵌套与逻辑运算符 ▶  C++总结 | 11 开关语句switch-case ▶  C++总结 | 12 for循环及其应用 ▶  C++总结 | 13 数据范围与数据类型 ▶  C++总结 | 14 break与continue ▶  C++总结 | 15 while与do-while ▶  C++总结 | 16 循环嵌套及其应用

1 说在前面的话

继续前行、不断攻坚克难!

前面几节课,我们讲了一维数组,并把一维数组中的字符数组拿出来深入讲解!

这节课开始,我们要开始讲解二维数组,二维数组有哪些需要掌握的知识呢,让我们一起走进今天的内容吧!

2 问题引入

某个班级有三排学生,每一排有五名同学。现在要为每个同学分配一个座位号,我们可以怎么做呢?

我们前面讲过一维数组,可以使用一维数组来存这15位同学的座位号:

#include

但是如果我们想要知道某一排,某一列同学的学号怎么办呢?

这就需要我们今天要讲的二维数组啦!

3 二维数组

二维数组与一维数组类似,在这一节,我们一起来学一下二维数组的基本概念,让我们一起走进二维数组的世界吧!

1 二维数组定义

在定义二维数组的时候,我们需要数组的类型数组名,以及二维数组的索引

例如:声明一个存储15个学生学号为a的二维数组。

0f6092882827d99953f0134749ad0b8a.png

我们前面的一维数组,大家可以看做是一排,二维数组就可以看作是一个方阵了,例如三行五列的二维数组如下:

bbedd2ae98c452a214ecc531d23944e7.png

2 二维数组赋初值

和一维数组一样,二维数组也可以在定义的时候赋初值。

例如我们给一个两行四列的二维数组赋值如下:

int a[

内层的大括号,表示的是一行的数据,外层大括号把内层大括号括住,内层有几对大括号,就说明至少有多少行。

为什么是至少呢?假如我们有三行四列的数据,我们使用如下方式赋值:

int a[

没有赋值的位置都会默认为0;这个时候,数据的行列和定义的大小有关

特别的,如果我们使用如下方式赋值,相当于二维数组的每个位置上的值都为0。

int a[

4 二维数组索引

一维数组里面有索引,二维数组里面也有索引,一维数组有一对中括号,那么一维数组只有一个索引,二维数组有两个中括号,则有两个索引。

1 索引与基本操作

二维数组有两个索引,第一个索引我们可以称之为:行索引,第二个索引我们可以称之为:列索引

和一维数组一样,二维数组的索引也都是从0开始。并且,行索引小于第一个中括号中的长度,列索引小于第二个中括号中的长度。如果大于或等于,就会越界

以两行四列的数组为例,数组值和索引对应关系如下:

876c8f3beb268bb4f954e5f66b13cc20.png

数组元素的访问方式如下:

cout<

同样的,我们可以利用索引去修改某个位置上的值:

0][

2 二维数组索引与循环

如果我们需要大量修改值或者访问值,还用上面的方式去做,那就太不方便啦!

前面我们讲一维数组使用循环可以访问所有的值,修改所有的值,二维数组也可以,因为我们要针对两个索引进行访问与修改,那么我们就需要用到两个变量。也需要用到循环嵌套

我们首先定义一个二维数组,并赋初值:

int a[

我们可以使用如下的方法,按行依次访问数据:

for(

按行依次修改数据(假设数据新值为行+列):

for(

使用如下方式,按列依次访问数据:

for(

总结一下就是:

按行访问数据,就要把行索引作为外层循环,会先不断改变内层列索引,不断访问某一行的数据,直到访问完;

按列访问数据,就要把列索引作为外层循环,会先不断改变内层行索引,不断访问某一列的数据,直到访问完;

5 习题

定义一个名字为name的二维字符串数组,用于存放喜羊羊、懒羊羊等12位同学的姓名,按照座位排列。

12位同学的座位如表格。

281da99b77df8b23be68c3a8cf083409.png

尝试通过键盘输入学生的姓名,之后在屏幕上输出学生的姓名。

示例如下:

1bf21c94f592690e38b2294f4fea067e.png

AI与区块链技术

0327136e914e58f0cb1a7694f45937c8.png

长按二维码关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值