C++基础21 二维数组及相关问题详解

news2024/12/26 20:57:14

这是《C++算法宝典》C++基础篇的第21节文章啦~

如果你之前没有太多C++基础,请点击👉C++基础,如果你C++语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏:数据结构啦

目录

📕二维数组的概念

📕二维数组的定义

📕引用数组元素

📕注意事项

📕二维数组的输入

📕二维数组的输出

🧠二维数组输入输出

🧠二维数组输入输出参考代码

🧠注意事项

🧠找货物

🧠找货物参考代码

🧠有两列火车停反了位置该如何解决?


二维数组的概念

在上篇文章中我们提到,一维数组就像是一列火车。假设我们来到火车站,看见有很多辆长度一样的火车。为了区别这些火车,我们尝试分别命名为a1,a2,a3...那么a1[2]就可以用来表示第一辆火车2号车厢。

如果把火车当做一个元素,那么这些火车就会组成一个一维数组,而这个一维数组里面的每一个元素都是一个小的一维数组。这样就是二维数组,即一个数组需要使用两个数字来控制位置。

二维数组的定义

维数组就是用一个名字后面跟着两个数字,分别表示数组的行和列。二维数组就是一个矩阵——长方形方阵,有行有列。

定义:

数据类型  数组名[常量表达式1] [常量表达式2]

例如:int a[5][9]; //定义一个5行9列的二维整型数组a

引用数组元素

如果需要使用二维数组中的某个元素,就需要找到具体位置:

<数组名>[行下标][列下标]

如:a[1][2]

表示二维数组a中的第2行第3列元素。

 

注意事项

和一维数组一样,行下标和列下标都是从0开始编号的。

每个下标表达式取值不应超出下标所指定的范围。

例如,设有定义:int a[2][3];则表示a是2行3列的二维数组,共有2*3=6个元素,它们是:

a[0][0] a[0][1] a[0][2]

a[1][0] a[1][1] a[1][2]

因此可以看成一个矩阵(表格),a[1][2]即表示第2行第3列的元素,而a[2][3]就已经越界了。

二维数组的输入

int  a[10][10];  //定义一个10行10列的二维数组 a
for(i=1;i<=3;i++)  //控制行下标
{
    for(j=1;j<=4;j++)   //控制列下标
     cin>>a[i][j];
} 

二维数组的输出

for(i=1;i<=3;i++)             
{
    for(j=1;j<=4;j++)
    cout<<a[i][j]<<" ";  //每个元素之间用空格隔开
    cout<<endl;             //每一行输出结束之后需要手动换行
}    

二维数组输入输出

给定一个m行n列的二维数组,请原样输出这个二维数组(m和n范围为2-20)

【输入描述】

m+1行:

第一行:m和n,分别表示二维数组的行数和列数

接下来m行,每行n个数字,表示二维数组中每个元素

【输出描述】

m行,每行n个数字,二维数组原样输出

【输入样例】

2 3
1 3 4
2 6 8

【输出样例】

1 3 4
2 6 8

二维数组输入输出参考代码

#include<iostream>
using namespace std;
int a[22][22],m,n;
int main()
{
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++)
         cin>>a[i][j];
    }
    for(int i=1;i<=m;i++){
     for(int j=1;j<=n;j++)
          cout<<a[i][j]<<" ";
          cout<<endl;
     }
    return 0;
}

注意事项

二维数组定义的时候尽量在主函数之外定义,因为一般情况下二维数组较大,占的空间较多。定义在主函数之外可以定义的比较大,且数组里面的所有元素都会默认赋值为0。(一维数组和变量也可以定义在主函数之外)。这样的定义叫做全局数组(变量)。

找货物

有m列火车,每列火车有n节车厢,车厢装有很多货物,需要对第x列火车第y节车厢进行抽查,请问这节车厢里有多少货物?(最多有20列火车,每列火车20节车厢)

【输入描述】

m+1行:

第一行:m,n,x,y,分别表示二维数组的行数、列数和要找的元素的所在行和列

接下来m行,每行n个数字,表示二维数组中每个元素

【输出描述】

一个数字,表示x行y列的元素

【输入样例】

3 4 2 2
1 2 3 4
4 5 6 7
7 8 9 10

【输出样例】

5

找货物参考代码

#include<iostream>
using namespace std;
int m,n,x,y,a[30][30];
int main()
{
    cin>>m>>n>>x>>y;
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            cin>>a[i][j];
            cout<<a[x][y];
    return 0;
}

有两列火车停反了位置该如何解决?

for(i=1;i<=n;i++)     //对二维数组两行进行交换。
{
    t=a[x][i];
    a[x][i]=a[y][i]; //因为每行都有n个元素,所以一共需要交换n次。(循环n次)
    a[y][i]=t;
}

 从入门到算法,再到数据结构,查看全部文章请点击此处​​​​icon-default.png?t=N7T8http://www.bigbigli.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1898541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MindSpore学习打卡】应用实践-计算机视觉-深入解析 Vision Transformer(ViT):从原理到实践

在近年来的深度学习领域&#xff0c;Transformer模型凭借其在自然语言处理&#xff08;NLP&#xff09;中的卓越表现&#xff0c;迅速成为研究热点。尤其是基于自注意力&#xff08;Self-Attention&#xff09;机制的模型&#xff0c;更是推动了NLP的飞速发展。然而&#xff0c…

嵌入式UI开发-lvgl+wsl2+vscode系列:6、布局(Layouts)

一、前言 这节总结一下整体页面的布局方式&#xff0c;lvgl的布局方式比较少&#xff0c;目前只有flex和grid两大类布局&#xff0c;即弹性布局和网格布局&#xff0c;弹性布局一般就是指定相对位置&#xff0c;网格布局就是将整个页面划分为网格状&#xff0c;我们做其它的UI…

【Python机器学习】处理文本数据——用tf-idf缩放数据

为了按照我们预计的特征信息量大小来缩放特征&#xff0c;而不是舍弃那些认为不重要的特征&#xff0c;最常见的一种做法就是使用词频-逆向文档频率&#xff08;tf-idf&#xff09;。这一方法对某个特定文档中经常出现的术语给与很高的权重&#xff0c;但是堆在语料库的许多文档…

pandas,dataframe使用笔记

目录 新建一个dataframe不带列名带列名 dataframe添加一行内容查看dataframe某列的数据类型新建dataframe时设置了列名&#xff0c;则数据类型为object dataframe的保存保存为csv文件保存为excel文件 dataframe属于pandas 新建一个dataframe 不带列名 df pd.DataFrame() 带…

【Linux开发】基于ALSA库实现音量调节

基于ALSA库实现音量调节 ALSA库实现音量调节1、使用alsamixer工具查看音频接口2、完整代码2.1、snd_mixer_open2.2、snd_mixer_attach、2.3、snd_mixer_selem_register2.4、snd_mixer_load2.5、snd_mixer_first_elem/snd_mixer_elem_next2.6、snd_mixer_selem_get_playback_vol…

江汉大学刘春萌同学整理的wifi模块 上传mqtt实验步骤

一.固件烧录 1.打开安信可官网 2.点击wifi模组系列的ESP8266 3.点击各类固件后选择固件号1471下载 4.打开烧录工具将下载的二进制文件导入并将后面的起始地址写为0x00000,下面勾选40mhz QIO 8Mbit点击start下载即可 二.本地部署mqtt服务器(windows) 1.下载mosquitto后有一个m…

数据驱动下的SaaS渠道精细化运营:提升ROI的实战指南

在当今数字化转型的大潮中&#xff0c;SaaS&#xff08;Software as a Service&#xff09;企业面临着日益激烈的市场竞争。为了在市场中脱颖而出&#xff0c;实现可持续增长&#xff0c;SaaS企业必须转向更为精细化的运营模式&#xff0c;而数据驱动则是实现这一目标的关键。本…

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c;毕竟楼主不是做教学的&#xff0c;没有教学经验。 关于redis的介绍请自行搜索查阅。 使用redis数据…

Java后端每日面试题(day3)

目录 Spring中Bean的作用域有哪些&#xff1f;Spring中Bean的生命周期Bean 是线程安全的吗&#xff1f;了解Spring Boot中的日志组件吗&#xff1f; Spring中Bean的作用域有哪些&#xff1f; Bean的作用域&#xff1a; singleton&#xff1a;单例&#xff0c;Spring中的bean默…

一种频偏估计与补偿方法

一种简易的频偏估计补偿方法&#xff0c;使用QAM等信号。估计精度受FFT长度限制&#xff0c;可以作为粗频偏估计。 Nfft 1024; % FFT长度 N 10*Nfft; % 仿真符号数 M 16; % 调制QAM16 freq 1e…

PDF合并怎么做?分享几种简单好用的PDF合并方法

PDF文件以其良好的兼容性和稳定的格式&#xff0c;成为了我们日常办公、学习不可或缺的一部分。然而&#xff0c;随着PDF文件的不断增多&#xff0c;如何高效管理这些文件&#xff0c;特别是如何将多个PDF文件合并成一个&#xff0c;成为了许多人头疼的问题。下面给大家分享几款…

超参数优化方法之贝叶斯优化实现流程及代码

超参数优化方法之贝叶斯优化实现流程及代码 在机器学习模型的训练过程中&#xff0c;超参数的选择往往对模型性能有着决定性的影响。贝叶斯优化作为一种高效的超参数调优方法&#xff0c;以其在高维空间中的搜索效率和对最优化问题的独特见解而受到关注。本文将深入探讨贝叶斯…

CTF常用sql注入(三)无列名注入

0x06 无列名 适用于无法正确的查出结果&#xff0c;比如把information_schema给过滤了 join 联合 select * from users;select 1,2,3 union select * from users;列名被替换成了1,2,3&#xff0c; 我们再利用子查询和别名查 select 2 from (select 1,2,3 union select * f…

QT 布局演示例子

效果 源码 #include <QApplication> #include <QWidget> #include <QSplitter> #include <QVBoxLayout> #include <QLabel>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget mainWidget;mainWidget.setWindowTitle(&qu…

适合金融行业的国产传输软件应该是怎样的?

对于金融行业来说&#xff0c;正常业务开展离不开文件传输场景&#xff0c;一般来说&#xff0c;金融行业常用的文件传输工具有IM通讯、邮件、自建文件传输系统、FTP应用、U盘等&#xff0c;这些传输工具可以基础实现金融机构的文件传输需求&#xff0c;但也存在如下问题&#…

价值499的从Emlog主题模板PandaPRO移植到wordpress的主题

Panda PRO 主题&#xff0c;一款精致wordpress博客主题&#xff0c;令人惊叹的昼夜双版设计&#xff0c;精心打磨的一处处细节&#xff0c;一切从心出发&#xff0c;从零开始&#xff0c;只为让您的站点拥有速度与优雅兼具的极致体验。 从Emlog主题模板PandaPRO移植到wordpres…

VCL界面组件DevExpress VCL v24.1 - 发布全新的矢量主题

DevExpress VCL是DevExpress公司旗下最老牌的用户界面套包&#xff0c;所包含的控件有&#xff1a;数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验&#xff0c;提供高影响力的业务解决方案&#xff0c;并利用您现有的VCL技能为未来构建下一代应用程…

CNN文献综述

卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09;是深度学习领域中的一种重要模型&#xff0c;主要用于图像识别和计算机视觉任务。其设计灵感来自于生物学中视觉皮层的工作原理&#xff0c;能够高效地处理图像和语音等数据。 基本原理…

Vue 邮箱登录界面

功能 模拟了纯前端的邮箱登录逻辑 还没有连接后端的发送邮件的服务 后续计划&#xff0c;再做一个邮箱、密码登录的界面 然后把这两个一块连接上后端 技术介绍 主要介绍绘制图形人机验证乃个 使用的是canvas&#xff0c;在源码里就有 界面控制主要就是用 表格、表单&#x…

哏号分治,CF103D - Time to Raid Cowavans

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 103D - Time to Raid Cowavans 二、解题报告 1、思路分析 想了半天数据结构最终选择根号分治 我们考虑 大于 550 的公差直接暴力 小于550 的公差的所有询问&#xff0c;我们直接计算该公差后缀和&#xf…