05 - C++学习笔记: 一维数组和多维数组

news2024/9/24 8:52:46

数组是一种非常重要的数据结构,它允许用连续的方式存储和访问一组相同类型的数据。无论是存储学生成绩、处理图像数据还是解决复杂的数学问题,数组都发挥着重要的作用。
在这里插入图片描述

1️⃣ 一维数组的定义与引用

✨ 倒序输出

在C++中,一维数组是一种存储相同类型数据的连续内存块。可以通过下标来访问数组中的元素,下标从0开始计数。

#include <iostream>

int main() {
    int arr[] = {1, 2, 3, 4, 5};

    // 倒序输出数组元素
    for (int i = 4; i >= 0; i--) {
        std::cout << arr[i] << " ";
    }

    return 0;
}

输出结果:

5 4 3 2 1

在上述案例中,定义了一个整型数组arr,并使用for循环从后往前输出数组中的元素,实现了倒序输出。

✨ 数组定义语法格式

一维数组的定义语法格式如下:

数据类型 数组名[数组长度];

其中,数据类型表示数组中元素的类型,数组名是标识数组的名称,数组长度表示数组中元素的数量。

✨ 长度与下标的关系

在C++中,一维数组的长度是指数组中元素的数量。数组的下标从0开始,最大下标为数组长度减1。

#include <iostream>

int main() {
    int arr[] = {10, 20, 30, 40, 50};

    std::cout << "数组长度: " << sizeof(arr) / sizeof(arr[0]) << std::endl;
    std::cout << "第一个元素: " << arr[0] << std::endl;
    std::cout << "最后一个元素: " << arr[sizeof(arr) / sizeof(arr[0]) - 1] << std::endl;

    return 0;
}

输出结果:

数组长度: 5
第一个元素: 10
最后一个元素: 50

在上述案例中,定义了一个整型数组arr,通过sizeof运算符计算数组长度,并输出数组的第一个元素和最后一个元素。

✨ 数组类型

数组可以存储各种数据类型的元素,例如整型、浮点型、字符型等。

#include <iostream>

int main() {
    int intArray[5] = {1, 2, 3, 4, 5};
    float floatArray[3] = {1.1, 2.2, 3.3};
    char charArray[4] = {'A', 'B', 'C', 'D'};

    std::cout << "整型数组第一个元素: " << intArray[0] << std::endl;
    std::cout << "浮点型数组第二个元素: " << floatArray[1] << std::endl;
    std::cout << "字符型数组第三个元素: " << charArray[2] << std::endl;

    return 0;
}

输出结果:


整型数组第一个元素: 1
浮点型数组第二个元素: 2.2
字符型数组第三个元素: C

在上述案例中,分别定义了整型数组intArray、浮点型数组floatArray和字符型数组charArray,并输出了它们的元素。

✨ 数组初始化的多个方式

在C++中,可以使用多种方式来初始化数组,包括使用大括号列表初始化、逐个赋值和部分赋值。

#include <iostream>

int main() {
    int arr1[] = {1, 2, 3, 4, 5};  // 大括号列表初始化
    int arr2[5];
    arr2[0] = 10;  // 逐个赋值
    arr2[1] = 20;
    arr2[2] = 30;
    arr2[3] = 40;
    arr2[4] = 50;
    int arr3[5] = {1, 2, 3};  // 部分赋值

    std::cout << "arr1的第一个元素: " << arr1[0] << std::endl;
    std::cout << "arr2的最后一个元素: " << arr2[4] << std::endl;
    std::cout << "arr3的第三个元素: " << arr3[2] << std::endl;

    return 0;
}

输出结果:

arr1的第一个元素: 1
arr2的最后一个元素: 50
arr3的第三个元素: 3

在上述案例中,展示了使用大括号列表初始化、逐个赋值和部分赋值的方式来初始化数组。

✨ 一维数组的赋值与遍历

可以使用循环结构来对一维数组进行赋值和遍历。

#include <iostream>

int main() {
    int arr[5];
    int sum = 0;

    // 数组赋值
    for (int i = 0; i < 5; i++) {
        std::cout << "请输入第" << i + 1 << "个元素: ";
        std::cin >> arr[i];
    }

    // 数组遍历和求和
    for (int i = 0; i < 5; i++) {
        std::cout << "第" << i + 1 << "个元素: " << arr[i] << std::endl;
        sum += arr[i];
    }

    std::cout << "数组元素的和为: " << sum << std::endl;

    return 0;
}

在上述案例中,首先使用for循环对数组进行赋值,然后再使用for循环遍历数组并计算数组元素的和。

2️⃣ 多维数组的定义与运用

多维数组是指包含多个维度的数组,例如二维数组、三维数组等。在C++中,多维数组的定义和使用与一维数组类似。


#include <iostream>

int main() {
    int matrix[3][3] = {{1, 2, 3},
                        {4, 5, 6},
                        {7, 8, 9}};

    std::cout << "二维数组的元素: " << std::endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

输出结果:

二维数组的元素:
1 2 3 
4 5 6 
7 8 9

在上述案例中,定义了一个二维数组matrix,并使用嵌套的for循环遍历二维数组并输出其中的元素。

3️⃣ 数组经典应用例题训练

✨ 案例1: 数组元素求和

编写一个程序,要求用户输入一个整型数组,计算并输出数组元素的和。

#include <iostream>

int main() {
    const int SIZE = 5;
    int arr[SIZE];
    int sum = 0;

    std::cout << "请输入" << SIZE << "个整数:" << std::endl;
    for (int i = 0; i < SIZE; i++) {
        std::cin >> arr[i];
        sum += arr[i];
    }

    std::cout << "数组元素的和为: " << sum << std::endl;

    return 0;
}

在上述案例中,首先定义了一个大小为5的整型数组arr,并使用for循环接收用户输入的整数,并累加求和。

✨ 案例2: 查找数组元素

编写一个程序,要求用户输入一个整型数组和一个目标值,判断目标值是否在数组中存在。

#include <iostream>

int main() {
    const int SIZE = 5;
    int arr[SIZE];
    int target;
    bool found = false;

    std::cout << "请输入" << SIZE << "个整数:" << std::endl;
    for (int i = 0; i < SIZE; i++) {
        std::cin >> arr[i];
    }

    std::cout << "请输入目标值: ";
    std::cin >> target;

    for (int i = 0; i < SIZE; i++) {
        if (arr[i] == target) {
            found = true;
            break;
        }
    }

    if (found) {
        std::cout << "目标值存在于数组中" << std::endl;
    } else {
        std::cout << "目标值不存在于数组中" << std::endl;
    }

    return 0;
}

在上述案例中,首先定义了一个大小为5的整型数组arr,然后接收用户输入的整数,并使用for循环遍历数组,判断目标值是否在数组中存在。

4️⃣ 数组与循环综合复习

数组与循环是C++中非常重要的概念,

它们经常被结合使用,进行复杂的问题解决。

✨ 案例: 输出九九乘法表

#include <iostream>

int main() {
    const int SIZE = 9;

    for (int i = 1; i <= SIZE; i++) {
        for (int j = 1; j <= i; j++) {
            std::cout << j << " * " << i << " = " << i * j << "\t";
        }
        std::cout << std::endl;
    }

    return 0;
}

在上述案例中,使用嵌套的for循环来输出九九乘法表。外层循环控制乘法表的行数,内层循环控制每行的列数,输出每个乘法表达式的结果。

🎉 总结

本篇笔记介绍了C++中一维数组和多维数组的定义与使用。学习了一维数组的倒序输出、定义语法格式、长度与下标的关系、不同类型的数组以及数组的赋值和遍历。此外,还学习了多维数组的定义与运用,并通过经典应用例题和综合复习加深了对数组的理解。通过不断练习和实践,可以更好地掌握数组在C++中的应用,为解决实际问题提供更多可能性。继续加油,掌握更多C++的知识!

希望本篇笔记对你的C++学习有所帮助。如果你有任何问题或疑惑,欢迎继续探索和提问。祝你学习愉快,编程进步!

⭐️希望本篇文章对你有所帮助。

⭐️如果你有任何问题或疑惑,请随时向提问。

⭐️感谢阅读!

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

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

相关文章

阿斯巴甜再亮红灯,配料表“瘦身”成趋势

【潮汐商业评论/原创】 6月以来&#xff0c;北方大部分地区出现近40度的高温天气&#xff0c;北京更是多年不遇的发布高温红色预警&#xff0c;酷暑难耐的Allen发现自己今年在水饮的消耗比往年高了好几倍&#xff0c;每天最快乐的时候莫过于一罐冰镇可乐&#xff0c;一口下去仿…

C/C++开发,opencv基于FileStorage读写文件介绍及示例

目录 一、FileStorage类 1.1 FileStorage类说明 1.2 FileStorage类写入说明 1.3 FileStorage类读取说明 二、FileStorage类应用示例 2.1 应用代码 2.2 工程组织&#xff08;Makefile&#xff09; 2.3 编译及测试 一、FileStorage类 1.1 FileStorage类说明 FileStorage类在ope…

6.S081——并发与锁部分(自旋锁的实现)——xv6源码完全解析系列(9)

0.briefly speaking 并发(Concurrency)指的是在多处理器系统(multiprocessor)中的并行&#xff0c;线程切换和中断导致的多个指令流交互错杂的情况&#xff0c;再和现代处理器体系结构中的多发射、乱序执行、Cache一致性等话题结合起来&#xff0c;这几乎变成了一个相当相当复…

装饰器设计模式应⽤-JDK源码⾥⾯的Stream IO流

装饰器设计模式在JDK源码⾥⾯应⽤场景 抽象组件&#xff08;Component&#xff09;&#xff1a;InputStream 定义装饰⽅法的规范被装饰者&#xff08;ConcreteComponent) : FileInputStream、ByteArrayInputStream Component的具体实现&#xff0c;也就是我们要装饰的具体对…

09-属性描述符Object.getOwnPropertyDescriptor(),原始数据不可重写

把原始数据作为属性值传入新对象中&#xff0c;发生原始数据修改丢失的问题怎么办&#xff1f; 应该使用Object.defineProperty()设置该属性用Object.defineProperty()设置的属性&#xff0c;默认writable、enumerable、configurable均为false并且自定义提醒该属性设置了不可重…

掌握Python的X篇_6_常量与变量、常见运算符、字符型变量

文章目录 1. 常量与变量1.1 常量与变量定义1.2 数字型变量 2. 常见运算符3. 字符型变量( 字符 )3.1 字符串变量的格式化 1. 常量与变量 简单理解&#xff0c;直接使用的数据&#xff0c;就是常量&#xff0c;最常见的常量有数字和字符串 采用ipython进行交互式编程 1.1 常量…

5.1阻塞和非阻塞、同步和异步 5.2Unix、Linux上的五种IO模型

5.1阻塞和非阻塞、同步和异步 典型的一次IO的两个阶段是什么&#xff1f;数据就绪和数据读写 数据就绪&#xff1a;根据IO操作的就绪状态 阻塞非阻塞 数据读写&#xff1a;根据应用程序和内核的交互方式 同步异步 陈硕&#xff1a;在处理IO的时候&#xff0c;阻塞和非阻塞都…

FPGA时序约束--实战篇(时序收敛优化)

目录 一、模块运行时钟频率 二、HDL代码 1、HDL代码风格 2、HDL代码逻辑优化 三、组合逻辑层数 1、插入寄存器 2、逻辑展平设计 3、防止变量被优化 四、高扇出 1、使用max_fanout 2、复位信号高扇出 五、资源消耗 1、优化代码逻辑&#xff0c;减少资源消耗。 2、…

基于图层自动识别算法在CAD图纸基础上快速创建Revit BIM模型 - VS2022 + AutoCAD2024 + ObjectARX环境搭建

引言 CAD 技术将建筑师、工程师们从手工绘图推向计算机辅助制图&#xff0c;实现了工程设计领域的第一次信息革命。从 CAD 技术普及以来&#xff0c;设计成果一般都是 CAD 图纸形式表达。但是近些年来&#xff0c;随着建筑的复杂程度日益增加&#xff0c;专业间的配合更加紧密…

行业观察 | 芯片设计产业链:上游至下游

本文简单总结、介绍芯片设计产业链全流程。 更新&#xff1a;2023 / 7 / 2 文章目录 集成电路产业链常见的芯片架构图数字IC设计流程概略版详解版前后端前端&#xff1a;RTL -> Netlist后端&#xff1a;Netlist -> Layout 示例&#xff1a;基于标准单元&#xff08;STD …

通过串口控制LED-单片机

1.输入数据控制LED灯状态00-ff。同时会接收输入的数据。 中断和定时器配置 void UART_Init() //4800bps11.0592MHz { SCON0X50;//sm00,sm11,ren1 PCON & 0x7F; //波特率不倍速 TMOD & 0x0F; //设置定时器模式 T1 TMOD | 0x20; …

【人工智能与机器学习】决策树ID3及其python实现

文章目录 1 决策树算法1.1 特征选择1.2 熵&#xff08;entropy&#xff09;1.3 信息增益 2 ID3算法的python实现总结 1 决策树算法 决策树&#xff08;Decision Tree)是一类常见的机器学习方法&#xff0c;是一种非常常用的分类方法&#xff0c;它是一种监督学习。常见的决策树…

ModaHub魔搭社区:向量数据库MIlvus服务端配置(一)

目录 服务端配置 配置概述 Milvus 文件结构 配置修改 编辑配置文件 运行时修改 server_config.yaml 参数说明 cluster 区域 general 区域 network 区域 服务端配置 配置概述 以下配置说明可同时应用于单机或者分布式场景。 Milvus 文件结构 成功启动 Milvus 服务后…

加速优化WooCommerce跨境电商网站的15种简单方法

Neil Patel和 Google所做的研究表明&#xff0c;如果加载时间超过三秒&#xff0c;将近一半的用户会离开网站。页面加载时间每增加一秒&#xff08;最多5秒&#xff09;&#xff0c;您的收入可能就会减少。在本教程中&#xff0c;我们将学习如何优化加速WooCommerce商店。 目录…

【20220605】文献翻译:高维数据动态可视化研究综述

A Review of the State-of-the-Art on Tours for Dynamic Visualization of High-dimensional Data Visualization of High-dimensional Data) Lee, Stuart, et al. “A Review of the State-of-the-Art on Tours for Dynamic Visualization of High-dimensional Data.” arXiv…

【书评】一本Android系统性能优化的新书

Android性能优化&#xff0c;是一个合格的Android程序员必备的技能&#xff0c;现如今几乎所有的Android面试内容都会或多或少涉及性能优化方面的话题。 学习Android性能优化可以让我们在简历上展示自己的专业技能和项目经验&#xff0c;证明自己具备高效开发和优化Android应用…

java jwt生成token并在网关设置全局过滤器进行token的校验

1、首先引入jjwt的依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>2、编写生成token的工具类 package com.jjw.result.util;import com.jjw.res…

【UnityDOTS 三】Component的理解

Component的理解 文章目录 Component的理解前言一、托管Component与非托管Component1.非托管Component2.托管Component 二、各功能的Component三、在Editor中的Component的区分总结 前言 Component作为ECS中承载数据的结构&#xff0c;了解他相关内容是非常必要的&#xff0c;…

基于Jsp+Servlet+Mysql学生信息管理系统

基于JspServletMysql学生信息管理系统 一、系统介绍二、功能展示1. 系统的部署2.导入数据库3. 系统介绍 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型&#xff1a;Java web项目/Java EE项目/ 项目名称&#xff1a;基于sevelet的学生信息管理系统 当前版本&…

用Python制作一个简单时间、日期显示工具

Python是一款强大的编程软件&#xff0c;可以轻松实现我们的多种开发需求。今天我们拿Python中自带的tkinter来开发一个时钟显示器。如下图所示&#xff1a; 时间显示器 一、编程要求 用tkinter写一个漂亮、五彩的时间显示器&#xff0c;要求显示时、分、秒&#xff0c;即时变…