C++013-C++二维数组

简介: C++013-C++二维数组

C++013-C++二维数组



在线练习:

http://noi.openjudge.cn/

https://www.luogu.com.cn/


二维数组


目标

了解矩阵、二维数组的基本概念

掌握二维数组输入输出基本框架

掌握二维数组元素访问和遍历的方法


6242e140137dd75b019917bc31ed190e_3d5b883233ed4ba5b5dbb7870152bcec.png


二维数组存储

array[3][4]就是一个二维数组,二维数组的存储方式与一维数组类似,都是连续存储的。


591783a1701d7d364e435fd716014443_3bcf7fd0e33147b6af5793897e1d73f1.png

5d16afab44e25410799447484965e5f9_68b8b13bbcb1456094b89f79c8563968.png


二维数组定义

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


int a[3][4];
//定义里面都是整形变量的数组a

其中,a是二维数组的数组名,该数组有3*4=12个元素,依次表示为:.


ef719838d81add5c4f36ce2af68f6eab_4043b1ed797942c28e6467581c16c51b.png

二维数组初始化


51786a3199923053d8348b65e47d5301_50dfd9740f0e4e2eafa155aa047d9bd7.png

646e4ee545d0034f5c1dacd11436e7d5_543dc6ea086f4288a049cb700af28c62.png


二维数组输入输出

#include <iostream>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[10][10];
    for(int i=1;i<=3;i++){
        for(int j=1;j<=4;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=3;i++){
        for(int j=1;j<=4;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

输出为:

1705034245f1887620489c573c8f0118_b2905ba776f440e38293f5352b15333a.png


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


矩阵的对角线

在一个m行m列的矩阵中,从左上角到右下角这一斜线上的m个元素的位置,叫做主对角线。从右上角到左下角这一斜线上的m个元素的位置,叫做副对角线。


主对角线方向(主线)的元素特点:若行号–列号+m = k,那么这个元素在第k条主线上;

副对角线方向(副线)元素特点:若行号+列号-1=k,那么这个元素在第k条副线上;

43736a656759d7b54d5bac13ea11b464_5591c3701056457f8d028525682bbae4.png


题目描述 输出m*m方阵的主对角线上的元素

#include <iostream>
//#include<bits/stdc++.h>
using namespace std;
int a[101][101],m;
int main()
{
    cin>>m;
    for(int i=1;i<=m;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=m;j++){
            if(i==j) cout<<a[i][j]<<" ";
        }
        //cout<<endl;
    }
    return 0;
}

输出为:

32ac0e30aeb3f6f0380be3eb360d2947_3ee53bbe2e784ddfa255c9b5d97aeee2.png


在线练习:


http://noi.openjudge.cn/


总结


本系列为C++学习系列,会介绍C++基础语法,基础算法与数据结构的相关内容。本文为C++二维数组案例,包括相关案例练习。

相关文章
|
1月前
|
存储 编译器 C++
c++二维数组定义方程的讲解
c++二维数组定义方程的讲解
9 0
|
3月前
|
Go C++ Java
C/C++每日一练(20230412) 二维数组找最值、排序
C/C++每日一练(20230412) 二维数组找最值、排序
27 0
C/C++每日一练(20230412) 二维数组找最值、排序
|
4月前
|
C++ 容器
[C++] 对二维数组中的二维坐标点x,y进行排序
[C++] 对二维数组中的二维坐标点x,y进行排序
81 0
|
5月前
|
算法 C语言 C++
【九章斩题录】C/C++:二维数组中的查找(JZ4)
【九章斩题录】C/C++:二维数组中的查找(JZ4)
51 0
|
6月前
|
算法 C++
剑指offer(C++)-JZ4:二维数组中的查找(算法-搜索算法)
剑指offer(C++)-JZ4:二维数组中的查找(算法-搜索算法)
【C++百日刷题计划】Day2~数组的使用(请编程计算下列给出的二维数组周边元素之和)
【C++百日刷题计划】Day2~数组的使用(请编程计算下列给出的二维数组周边元素之和)
142 0
|
安全 C++ 开发工具
C++使用VARIANT实现二维数组的操作
VARIANT变量是COM组件之间互相通信的重要的参数变量之一,它可以容纳多种不同的类型,如short、long、double等,包括各类指针和数组。组件之间的互相调用是比较耗时的,尤其带当组件位于不同进程中时,因此,减少传递次数是提高效率的一种有效方法。
1082 0
|
C++ C语言
C/C++ 二维数组
使用C语言用到了二维数组 1 #include 2 #include 3 using namespace std; 4 5 void print_arr_fun1(int arr[][3], int row){ 6 for (int i = 0; i < row; ++i...
1117 0
|
C++
C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why?
C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why? 简单粗暴的答案:存在Cache机制! 稍微啰嗦一点:CPU访问内存(读/写,遍历数组的话主要是读),不是每次都直接从内存上操作,而是先看Cache里是否有所指定地址的值! 这个问题,stackoverflow上有人问过的,结论是:CPU读取内存某地址处的值,并不是每次都去内存中取出来,有时候会从cache里读取。
1300 0