C++基础语法之数组

一、一维数组

    在C++中,一维数组是一系列具有相同数据类型的元素的集合。它们在内存中是连续存储的,可以通过索引访问每个元素。

一维数组的声明形式如下:

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

 例如:

// 声明一个能存储10个整数的数组
int arr[10];// 声明并初始化一个数组
int arr[] = {1, 2, 3, 4, 5};// 初始化数组中的部分元素
int arr[5] = {1, 2}; // arr[0] = 1, arr[1] = 2, arr[2] = 0, arr[3] = 0, arr[4] = 0

一维数组的元素可以通过索引来访问和修改,索引从0开始,如下所示:

int a[] = {1, 2, 3, 4, 5};// 访问数组中的元素
int firstElement = a[0]; // 1// 修改数组中的元素
a[2] = 100; // a = {1, 2, 100, 4, 5}

一维数组的初始化有两种。

(1)单一数组元素赋值

 a[0]=0就是单一数组赋值,也可以通过变量控制下标的方式进行赋值。例如:

char a[3];
a[0]='a';
a[2]='c';
int i=0;
cout<<a[i]<<endl;

 (2)聚合方式赋值

通过大括号进行多个元素的赋值。例如:

int a[12]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; //编译器能获得数组元素个数int a[12]={1, 2, 3, 4, 5, 6, 7}; //前7个元素被赋值,后5个赋值为0

一维数组赋值如图1.1所示

图 1.1

运行结果如下所示。 

二、二维数组

    二维数组是一个表格,由行和列组成。它是一系列具有相同数据类型的元素的集合,这些元素通过行和列的索引来访问。一维数组描述的是线性序列,二维数组描述的则是矩阵。

    二维数组的一般形式为:

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

 常量表示1代表的是行的数量,常量表示2代表的是列的数量。

二维数组的声明和初始化可以通过以下方式完成:

// 声明一个3行4列的整数数组
int a[3][4];// 声明并初始化一个3行4列的数组
int a[][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};// 初始化数组中的部分元素
int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; // a[0][0] = 1, a[0][1] = 2, a[0][2] = 3, a[1][0] = 4, a[1][1] = 5, a[1][2] = 6

二维数组的元素可以通过行和列的索引来访问和修改,索引从0开始,如下所示:

int a[][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};// 访问数组中的元素
int element = a[1][2]; // 7// 修改数组中的元素
a[2][3] = 100; // a= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 100}}

实例:将二维数组中的行数据和列数据置换如下所示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int array(int a[3][3]){int i, j, t;for(i=0;i<3;i++){for(j=0;j<i;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}}return 0;
} 
int main(){int i, j;int a[3][3]={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};for(i=0;i<3;i++){for(j=0;j<3;j++){cout<<setw(7)<<a[i][j];}cout<<endl;}array(a);cout<<"置换后的结果为:"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++){cout<<setw(7)<<a[i][j];}cout<<endl;}
}

运行结果如下所示。

    感谢各位读者的阅读与参与,您的支持是我前进的动力!谢谢各位读者的鼓励与支持!!

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

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

相关文章

【AI学习】对指令微调(instruction tuning)的理解

前面对微调&#xff08;Fine-tuning&#xff09;的学习中&#xff0c;提到指令微调。当时&#xff0c;不清楚何为指令微调&#xff0c;也一直没来得及仔细学习。 什么是指令微调&#xff1f;LLM经过预训练后&#xff0c;通过指令微调提升模型的指令遵循能力。所谓指令&#xf…

从零开始精通RTSP之认证

概述 在多媒体流传输方向&#xff0c;RTSP凭借其对实时性、可控制性的良好支持&#xff0c;成为视频监控、在线直播等领域不可或缺的协议之一。然而&#xff0c;安全是任何网络通信的核心&#xff0c;尤其是在涉及敏感内容的实时流传输中。另外&#xff0c;RTSP认证不仅是技术上…

Flutter 中的 AnimatedIcon 小部件:全面指南

Flutter 中的 AnimatedIcon 小部件&#xff1a;全面指南 AnimatedIcon是Flutter Material组件库中的一个独特动画组件&#xff0c;它允许开发者在两个图标之间进行平滑的过渡动画。这使得它非常适合用于表示应用程序的状态变化&#xff0c;如菜单打开/关闭、搜索打开/关闭等。…

java动态多态性

在Java中&#xff0c;动态多态性是指同一个方法调用可以在运行时根据对象的实际类型来执行不同的行为。这是通过Java的方法重写&#xff08;Override&#xff09;和继承机制来实现的。 动态多态性的实现方式&#xff1a; 方法重写&#xff08;Override&#xff09;&#xff1a…

box-shadow和filter: drop-shadow的异同,及使用canvas绘制椭圆

一、box-shadow 和 filter: drop-shadow的异同&#xff1a; filter: drop-shadow 和 box-shadow 都可以用于创建阴影效果&#xff0c;但它们之间有一些重要的区别&#xff1a; 1、适用对象&#xff1a; 1、filter: drop-shadow* 适用于元素的整个内容区域&#xff0c;包括内容…

车载GPT爆红前夜:一场巨头竞逐的游戏

在基于GPT-3.5的ChatGPT问世之前&#xff0c;OpenAI作为深度学习领域并不大为人所看好的技术分支玩家&#xff0c;已经在GPT这个赛道默默耕耘了七八年的时间。 好几年的时间里&#xff0c;GPT始终没有跨越从“不能用”到“能用”的奇点。转折点发生在2020年6月份发布的GPT-3&a…

【STM32】状态机实现定时器按键消抖,处理单击、双击、三击、长按事件

目录 一、简单介绍 二、模块与接线 三、cubemx配置 四、驱动编写 状态图 按键类型定义 参数初始化/复位 按键扫描 串口重定向 主函数 五、效果展示 六、驱动附录 key.c key.h 一、简单介绍 众所周知&#xff0c;普通的机械按键会产生抖动&#xff0c;可以采取硬件…

注意力机制篇 | YOLOv8改进之在C2f模块引入反向残差注意力模块iRMB | CVPR 2023

前言:Hello大家好,我是小哥谈。反向残差注意力模块iRMB是一种用于图像分类和目标检测的深度学习模块。它结合了反向残差和注意力机制的优点,能够有效地提高模型的性能。在iRMB中,反向残差指的是将原始的残差块进行反转,即将卷积操作和批量归一化操作放在了后面。这样做的好…

软件工程期末复习(6)需求分析的任务

需求分析 需求分析的任务 “建造一个软件系统的最困难的部分是决定要建造什么……没有别的工作在做错时会如此影响最终系统&#xff0c;没有别的工作比以后矫正更困难。” —— Fred Brooks 需求难以建立的原因&#x…

.net iText7 导出网页pdf 文件流

一. Install-Package itext7 二.构建字节流 using System.IO; using iText.Html2pdf; using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element;public byte[] ConvertUrlToPdf(string url) {// 创建一个内存流用于存储PDF文件MemoryStream pdfStream new…

矩阵相关运算1

矩阵运算是线性代数中的一个核心部分&#xff0c;它包含了许多不同类型的操作&#xff0c;可以应用于各种科学和工程问题中。 矩阵加法和减法 矩阵加法和减法需要两个矩阵具有相同的维度。操作是逐元素进行的&#xff1a; CAB or CA−B其中 A,B 和 C 是矩阵&#xff0c;且 C…

unity删除文件到回收站

unity editor下删除文件及文件夹到回收站: unity删除文件到回收站 if (AssetDatabase.MoveAssetToTrash(removeFolder)) {AssetDatabase.MoveAssetToTrash(removeFolder ".meta"); }removeFolder“Asset/Test.txt”; 使用下面的删除了无法恢复 if (FileUtil.Delet…

7nm项目之模块实现——02 Placeopt分析

一、Log需要看什么 1.log最后的error 注意&#xff1a;warnning暂时可以不用过于关注&#xff0c;如果特别的warning出现问题&#xff0c;在其他方面也会体现 2.run time 在大型项目实际开发中&#xff0c;周期一般较长&#xff0c;可能几天过这几周&#xff0c;所以这就需要…

leetcode 2321.拼接数组的最大分数

思路&#xff1a;dp 这道题其实确实是有点难想&#xff0c;而且是很难联想到做法的那种。&#xff08;需要有一定的经验才行&#xff09;但是如果说有了思路&#xff0c;其实就很简单了。 我们可以在草纸上画上一下。比如&#xff0c;我们以第一个数组为基准&#xff0c;我们…

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction

&#xff08;1&#xff09;在 STL 库源码中这俩模板经常出现&#xff0c;用来给源码编译中的条件选择&#xff0c;模板的版本选择等提供依据。先给出其定义&#xff1a; 以及&#xff1a; 可以得出结论&#xff1a; conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…

vs2019中__cplusplus一直显示199711

vs2019中__cplusplus一直显示199711&#xff0c;如何修改&#xff1f; 打开属性->C/C->命令行&#xff0c;其他选项&#xff0c;输入&#xff1a;/Zc:__cplusplus

linux SSH连接banner设置

目的 SSH连接banner设置的目的&#xff1a; 在SSH连接成功后了解服务器地址&#xff0c;期限&#xff0c;拥有者&#xff0c;服务器硬件配置&#xff0c;环境变量等重要信息 未设置前雨云服务器SS连接成功后展示的内容 WARNING! The remote SSH server rejected X11 forward…

aws s3

列出关键点 创建s3 设置s3策略&#xff0c;所有人访问 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", …

C#窗体程序设计笔记:如何调出控件工具箱,并设置控件的属性

文章目录 调出控件工具箱设置控件属性 调出控件工具箱 使用Visual Studio打开C#解决方案后&#xff0c;初始界面如下图所示&#xff1a; 接着&#xff0c;在上方的菜单栏依次选择“视图”“工具箱”&#xff0c;即可打开工具箱&#xff0c;如下图所示&#xff1a; 设置控件属…

Android开发,日志级别

5个日志级别 Verbose (VERBOSE): 这是最低的日志级别&#xff0c;用于输出最为详尽的信息&#xff0c;包括开发和调试过程中的各种细节。在Log类中对应的方法是Log.v()。Debug (DEBUG): 此级别用于输出调试信息&#xff0c;帮助开发者理解程序运行流程或状态。通过Log.d()方法…