05_C++数组
05_C数组5.1 概述数组Array是C中一种用于存储多个相同类型数据的容器。它们在内存中是连续存储的这使得访问数组元素非常高效。数组可以是一维、二维或多维的具体取决于应用需求。5.2 一维数组5.2.1 定义和初始化一维数组有三种常见的定义和初始化方式见示例代码#includeiostreamusingnamespacestd;intmain(){// 方法一定义时指定大小未初始化intarr1[5];// 数组名的命名规范与变量名一致// 利用下标逐个赋值arr1[0]1;// 注意数组下标从0开始arr1[1]2;arr1[2]3;arr1[3]4;arr1[4]5;// 方法二定义时指定大小并初始化// 如果{}中元素个数少于数组大小剩余元素会被自动初始化为0intarr2[5]{1,2,3,4,5};// 方法三定义时不指定大小由初始化列表决定大小intarr3[]{10,20,30};// 输出数组元素for(inti0;i5;i){coutarr2[i] arr2[i]endl;}for(inti0;i3;i){coutarr3[i] arr3[i]endl;}system(pause);return0;}5.2.2 一维数组的数组名数组名代表数组的首地址可以通过数组名访问数组元素。数组名本质上是一个常量指针不能被修改。可以统计整个数组在内存中所占的字节数使用sizeof运算符。示例代码#includeiostreamusingnamespacestd;intmain(){intarr[5]{1,2,3,4,5};// 输出数组名首地址cout数组名首地址: arrendl;cout第一个元素地址: arr[0]endl;cout第二个元素地址: arr[1]endl;// 计算数组所占字节数cout数组所占字节数: sizeof(arr) 字节endl;cout单个元素所占字节数: sizeof(arr[0]) 字节endl;cout数组元素个数: sizeof(arr)/sizeof(arr[0])endl;// 修改数组名错误示例编译会报错// arr arr 1; // 错误数组名是常量指针不能修改system(pause);return0;}一维数组练习1在一个数组中存储5个整数找出其中的最大值和最小值并输出它们的值和位置。一维数组练习2定义一个包含5个元素的数组并将数组转置即将数组的第一个元素与最后一个元素交换第二个元素与倒数第二个元素交换以此类推。输出转置后的数组。如果数组为{1, 2, 3, 4, 5}转置后应为{5, 4, 3, 2, 1}。5.2.3 冒泡排序冒泡排序是一种简单的排序算法通过重复遍历数组比较相邻元素并交换它们的位置直到整个数组有序。比较相邻的元素。如果第一个比第二个大就交换他们两个。对每一对相邻元素做同样的工作执行完毕后找到第一个最大值。重复以上的步骤每次比较次数-1直到不需要比较示例代码#includeiostreamusingnamespacestd;intmain(){intarr[]{64,34,25,12,22,11,90};intnsizeof(arr)/sizeof(arr[0]);// 冒泡排序for(inti0;in-1;i){for(intj0;jn-i-1;j){if(arr[j]arr[j1]){// 交换inttemparr[j];arr[j]arr[j1];arr[j1]temp;}}}// 输出排序后的数组for(inti0;in;i){coutarr[i] ;}coutendl;system(pause);return0;}5.3 二维数组二维数组就是在一维数组的基础上增加了一个维度类似于一个表格有行和列的概念。5.3.1 定义和初始化二维数组的定义和初始化方式如下#includeiostreamusingnamespacestd;intmain(){// 方法一定义时指定行列大小未初始化intarr1[3][4];// 3行4列// 利用下标逐个赋值arr1[0][0]1;arr1[0][1]2;arr1[0][2]3;arr1[0][3]4;// ...// 方法二数据类型 数组名[行数][列数] { {数据1数据2 } {数据3数据4 } };intarr2[2][3]{{1,2,3},{4,5,6}};// 方法三数据类型 数组名[行数][列数] { 数据1数据2 ,数据3数据4 };intarr3[2][3]{1,2,3,4,5,6};// 方法四数组名[][列数] { 数据1数据2 ,数据3数据4 };intarr4[][3]{1,2,3,4,5,6};// 输出二维数组元素for(inti0;i2;i){for(intj0;j3;j){coutarr2[i][j] ;}coutendl;}system(pause);return0;}5.3.2 二维数组的数组名二维数组名代表二维数组的首地址可以通过数组名访问二维数组元素。二维数组名本质上是一个指向一维数组的常量指针不能被修改。可以统计整个二维数组在内存中所占的字节数使用sizeof运算符。示例代码#includeiostreamusingnamespacestd;intmain(){intarr[2][3]{{1,2,3},{4,5,6}};// 输出二维数组名首地址cout二维数组名首地址: arrendl;cout第一行地址: arr[0]endl;cout第二行地址: arr[1]endl;cout第一个元素地址: arr[0][0]endl;cout第二个元素地址: arr[0][1]endl;// 计算二维数组所占字节数cout二维数组所占字节数: sizeof(arr) 字节endl;cout单个元素所占字节数: sizeof(arr[0][0]) 字节endl;cout二维数组行数: sizeof(arr)/sizeof(arr[0])endl;cout二维数组列数: sizeof(arr[0])/sizeof(arr[0][0])endl;cout一行元素所占字节数: sizeof(arr[0]) 字节endl;// 修改二维数组名错误示例编译会报错// arr arr 1; // 错误二维数组名是常量指针不能修改system(pause);return0;}5.3.3 二维数组应用案例矩阵相加矩阵相加是指将两个具有相同维度的矩阵对应位置的元素相加得到一个新的矩阵。示例代码#includeiostreamusingnamespacestd;intmain(){constintROWS2;constintCOLS3;intmatrixA[ROWS][COLS]{{1,2,3},{4,5,6}};intmatrixB[ROWS][COLS]{{7,8,9},{10,11,12}};intresult[ROWS][COLS];// 矩阵相加for(inti0;iROWS;i){for(intj0;jCOLS;j){result[i][j]matrixA[i][j]matrixB[i][j];}}// 输出结果矩阵cout结果矩阵endl;for(inti0;iROWS;i){for(intj0;jCOLS;j){coutresult[i][j] ;}coutendl;}system(pause);return0;}二维数组练习考试成绩统计定义一个二维数组来存储5个学生的3门课程成绩计算每个学生的总成绩和平均成绩并输出结果。for(intj0;jCOLS;j){coutresult[i][j] ;}coutendl;}system(pause);return0;}二维数组练习考试成绩统计定义一个二维数组来存储5个学生的3门课程成绩计算每个学生的总成绩和平均成绩并输出结果。

相关新闻

Git cherry-pick 原理与工程实践:从重演式重建到生产级避坑

Git cherry-pick 原理与工程实践:从重演式重建到生产级避坑

1. 项目概述:为什么 cherry-pick 是每个 Git 用户必须亲手“拧紧”的一把扳手在真实世界的协作开发中,我见过太多团队把git merge当成万能胶水——所有分支都往主干上糊,结果主干越来越臃肿,历史越来越模糊,一个 bug 出…

2026/7/7 1:02:46阅读更多 →
羽球联盟 HarmonyOS NEXT 实战系列 (14/20):装备资讯分类与本地兜底合并策略

羽球联盟 HarmonyOS NEXT 实战系列 (14/20):装备资讯分类与本地兜底合并策略

文章导读 装备页不仅展示列表,还要按球拍、球鞋、球包、配件、穿线等类别切换。远程抓取到的装备数据可能类别不全,因此列表页会把本地未覆盖类目补进来。刷新、分类、空态和详情跳转需要在同一页内保持逻辑一致。 页面效果 装备资讯页的体验目标很明…

2026/7/7 1:02:46阅读更多 →
惊!AI 巨头 Anthropic 对中国用户暗藏黑手,国产大模型崛起刻不容缓!

惊!AI 巨头 Anthropic 对中国用户暗藏黑手,国产大模型崛起刻不容缓!

01 “隐写间谍门”的操作手法万万没想到,世界 AI 巨头 Anthropic 竟曝出惊天丑闻。他们一边打着安全的旗号,一边往中国人的电脑里装木马。Anthropic 在自己的智能体 Claude Code 中偷偷植入了间谍软件,专门针对中国用户,一开始&a…

2026/7/7 1:02:46阅读更多 →
基于 PaddleX 实现“逆向预测”:已知目标反推输入条件的工程实践

基于 PaddleX 实现“逆向预测”:已知目标反推输入条件的工程实践

基于 PaddleX 实现“逆向预测”:已知目标反推输入条件的工程实践 在工业控制、自动化调度或业务策略制定等场景中,我们经常会遇到一种特殊的业务诉求:已知一组数据(结果)的目标值,希望模型能够反向推导出另…

2026/7/7 4:28:03阅读更多 →
UTD 降为 1 的后果:从“特训班“降级为“自习室“

UTD 降为 1 的后果:从“特训班“降级为“自习室“

如果把 UTD 降为 1,效果会大幅变差,甚至完全学不会。把 cta_ratio(UTD 比率)从 20 降到 1,导致效果变差的原理主要有三点:导师还没谱,学生瞎改(Critic Lag)在 SAC 中&…

2026/7/7 4:28:03阅读更多 →
STM32矩阵键盘优化设计:74HC32减少IO占用

STM32矩阵键盘优化设计:74HC32减少IO占用

1. 项目背景与核心需求在嵌入式系统开发中,人机交互接口的设计往往面临一个经典矛盾:功能需求日益复杂,但微控制器的GPIO资源却十分有限。传统独立按键方案每个按键都需要独占一个IO引脚,当需要管理多个功能时,硬件资源…

2026/7/7 4:28:03阅读更多 →
跨越平台壁垒:BotW存档管理器让你的海拉鲁冒险永不中断

跨越平台壁垒:BotW存档管理器让你的海拉鲁冒险永不中断

跨越平台壁垒:BotW存档管理器让你的海拉鲁冒险永不中断 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾为更换游戏主机而苦恼?数百小时的《…

2026/7/7 4:28:03阅读更多 →
Linux 命令历史彻底删除  完整恢复实操指南

Linux 命令历史彻底删除 完整恢复实操指南

Linux 命令历史彻底删除 & 完整恢复实操指南 前言 运维日常常会遇到两类场景: 服务器执行敏感操作(密码、密钥、数据库账号),需要彻底抹除全部历史命令,不留任何可恢复痕迹;误清空 / 误删历史记录&…

2026/7/7 4:28:03阅读更多 →
AD19 四层板内电层分割实战:3步解决电源平面与20H原则设置

AD19 四层板内电层分割实战:3步解决电源平面与20H原则设置

AD19四层板内电层分割与20H原则实战指南对于硬件工程师而言,从双层板过渡到四层板设计是一个重要的技术跃迁。四层板的核心价值在于通过内电层的合理规划,显著提升电源完整性和信号质量。本文将聚焦AD19环境下内电层分割的关键技术,特别是电源…

2026/7/7 4:23:03阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/7 2:56:31阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8…

2026/7/7 0:02:41阅读更多 →
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

2026/7/7 0:02:41阅读更多 →
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

2026/7/7 0:02:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →