第14课 多维数组

文章目录

  • 前言
  • 一、多维数组的定义
  • 二、多维数组的初始化
  • 三、多维数组的使用(以二维数组为例)
    • 1. 矩阵转置问题
  • 三、课后练习
    • 1. 求一个m*n矩阵中所有元素的累加和
    • 2. 查找并输出一个m*n矩阵中的最小元素以及其在矩阵中的位置
    • 3. 将m*n矩阵A复制为m*n矩阵B(深度复制)
    • 4. n阶方阵的对角线元素求和
    • 2. 螺旋方阵生成问题
  • 总结


前言

本课主要介绍如下内容。

  1. 二维数组的定义
  2. 二维数组的初始化
  3. 二维数组的使用举例

一、多维数组的定义

二、多维数组的初始化

三、多维数组的使用(以二维数组为例)

1. 矩阵转置问题

A=a(i, j),A为一个 m × n m \times n m×n阶矩阵,若 B = A T B=A^T B=AT,即B=b(j, i)=a(i, j),则称B为A的转置矩阵。
编写程序,输入一个 m × n m \times n m×n阶矩阵A,求 B = A T B=A^T B=AT

三、课后练习

1. 求一个m*n矩阵中所有元素的累加和

2. 查找并输出一个m*n矩阵中的最小元素以及其在矩阵中的位置

3. 将mn矩阵A复制为mn矩阵B(深度复制)

4. n阶方阵的对角线元素求和

n阶方阵对角线有两条对角线——主对角线和次对角线。编程分别求一个n阶方阵的两条对角线上元素之和。
A = ( a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ) (3) A = \begin{pmatrix} a_{11} & a_{12} & a_{13} & a_{14}\\ a_{21} & a_{22} & a_{23} & a_{24}\\ a_{31} & a_{32} & a_{33} & a_{34}\\ a_{41} & a_{42} & a_{43} & a_{44} \end{pmatrix} \tag{3} A= a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44 (3)

代码如下:

#include <iostream>
using namespace std;
int main() {const int n=4;int diagonal1=0, diagonal2=0;int a[][n] = {{60, 61, 62, 63},{70, 71, 72, 73},{80, 81, 82, 83},{90, 91, 92, 93}}; for(int i=0; i<n; i++) {for(int j=0; j<n; j++) {cout << a[i][j] << ' ';}cout << endl;}for(int i=0; i<n; i++) {for(int j=0; j<n; j++) {if(i==j) diagonal1 += a[i][j];if(i+j==n-1) diagonal2 += a[i][j];}}cout << diagonal1 << ' ' << diagonal2 << endl;return 0;
}

2. 螺旋方阵生成问题

所谓螺旋方阵,是值对任意给定的n,将1到 n × n n \times n n×n的数字从左上角第一个格子开始,按顺时针螺旋方向顺序填入 n × n n \times n n×n的方阵中,见图1所示。
螺旋方阵
图1 5阶螺旋方阵

代码如下(示例):

#include <iostream>
#include <iomanip>
//#include <cmath>
using namespace std;
//printing a screwing square matrix
int main() {int k = 1; // 方阵递增数,从1开始int m, n;  // m:轮数, n:阶数cin >> n;  // 输入阶数int matrix[n][n]; 	// 螺旋矩阵// m = ceil(n/2.0);	// 确定轮数m = (n+1)/2;// m轮顺时针圈for(int i=0; i<m; i++) { 		// 1.往右:x = i, y值从i开始递增for(int y=i; y<n-i; y++)matrix[i][y] = k++;// 2.往下:注意x从i+1开始递增,y=n-1-ifor(int x=i+1; x<n-i; x++)matrix[x][n-1-i] = k++;// 3.往左:x = n-1-i, y从n-1-1-i递减for(int y=n-2-i; y>=i; y--)matrix[n-1-i][y] = k++;// 4.往上:x从n-1-1-i递减到i+1, y=ifor(int x=n-2-i; x>=i+1; x--)matrix[x][i] = k++;}cout << endl;for(int x = 0; x < n; x++) {for(int y = 0; y < n; y++)cout << setw(8) << matrix[x][y];cout << endl << endl;}return 0;	
}

下面是当n=9时,程序输出的螺旋方正。
9阶螺旋方阵


总结

二维数组在使用中也是按元素逐个使用,使用时要给出行、列两个下标。当然,我们也可以以访问一维数组的方式来访问二维数组。在较大型复杂的项目中,将二维数组转换为一维数组来运行却可以大大简化代码的书写,使代码更加简洁美观,看起来更加工整,提高可读性。特别是在使用二维数组作为函数参数传递的时候,通过将二维数组转换为一维数组的访问方式 ,就能起到提高函数通用性,简化代码编写的目的,具体可以参考本人整理的文章——《定义矩阵相乘和转置的通用函数》。

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

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

相关文章

FA对接FC流程

2、FA进行对接 &#xff08;1&#xff09;首先安装好AD域控服务器DHCPDNS&#xff08;注意&#xff0c;不要忘记了做DNS正反向解析&#xff0c;就是把已经安装了ITA的主机做解析&#xff09;&#xff0c;在里面创建域用户 &#xff08;2&#xff09;安装ITA和VAG/VLB&#xf…

js 对象

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…

SiteGround 注册无法接收短信验证码问题的解决方法

在购买SiteGround后&#xff0c;有时会出现需要进行账号验证的情况&#xff0c;要求通过短信或电话完成验证。然而&#xff0c;有些用户无论如何操作都无法收到短信验证码。以下是解决这个问题并成功完成服务器购买的方法。 Thank You for Your Purchase! Lets Verify Your Ord…

2024的十大技术趋势预测

&#x1f4a1; 大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 2024年&#xff0c;科技圈还会有什么样的新鲜新发生&#xff1f;techradar的记者Lance Ulanoff预测了科技圈的2024十大趋势&#xff0c;包括AI、…

最优轨迹生成(四)—— 带约束轨迹优化

本系列文章是学习深蓝学院-移动机器人运动规划课程第五章最优轨迹生成 过程中所记录的笔记&#xff0c;本系列文章共包含四篇文章&#xff0c;依次介绍了微分平坦特性、无约束BVP轨迹优化、无约束BIVP轨迹优、 带约束轨迹优化等内容 本系列文章链接如下&#xff1a; 最优轨迹生…

9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…

关于Python里xlwings库对Excel表格的操作(二十四)

这篇小笔记主要记录如何【如何使用xlwings库中的“api”类设置单元格边界线型、粗细、颜色】。前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b;…

在Google Colab中调用Gemini的API实现智能问答

一、引言 Google终于放出大招&#xff0c;在2023年12月6日正式推出规模最大、功能最强大的人工智能模型Gemini&#xff0c;对标ChatGPT&#xff0c;甚至有要赶超ChatGPT-4.0的节奏。 相比之前的Bard&#xff0c;Gemini的文本理解能力、图片识别能力和语义抽取能力大大增强&am…

[C#]使用ONNXRuntime部署一种用于边缘检测的轻量级密集卷积神经网络LDC

源码地址&#xff1a; github.com/xavysp/LDC LDC: Lightweight Dense CNN for Edge Detection算法介绍&#xff1a; 由于深度学习方法的快速发展&#xff0c;近年来&#xff0c;用于执行图像边缘检测的卷积神经网络&#xff08;CNN&#xff09;模型爆炸性地传播。但边缘检测…

山西电力市场日前价格预测【2024-01-02】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-02&#xff09;山西电力市场全天平均日前电价为92.93元/MWh。其中&#xff0c;最高日前电价为275.90元/MWh&#xff0c;预计出现在18:00。最低日前电价为0.00元/MWh&#xff0c;预计出现…

磁盘阵列(RAID)

1.独立硬盘冗余阵列&#xff08;RAID, Redundant Array of Independent Disks&#xff09; 旧称廉价磁盘冗余阵列&#xff08;Redundant Array of Inexpensive Disks&#xff09;&#xff0c;简称磁盘阵列 用虚拟化存储技术把多个硬盘组合起来&#xff0c;成为一个或多个硬盘阵…

基于JAVA的酒店管理系统设计

摘 要 我们对酒店进行调研&#xff0c;发现部分酒店依托第三方平台&#xff0c;但第三方平台没有办法更好帮助酒店管理&#xff0c;故我们决定帮助酒店开发一套基于 Java 的酒店管理系统。使用基于Java的酒店管理系统可以帮助酒店完成顾客入住信息的管理&#xff0c;酒店物资的…