首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++基础语法】二维数组

数组也能嵌套数组。如果你需要存储一个表格,那么需要使用多维数组。

二维数组本质上是以数组作为数组元素的数组,即“数组的数组

5.1 定义和初始化

如果说一维数组是一排变量,二维数组就是矩阵。

5.1.1 数组的定义

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

int a[4][5]; //一个四行五列的数组

5.1.2  输入输出

#include<bits/stdc++.h> using namespace std; int a[105][105],m,n;//定义在mian()外面,系统会分配较大的内容,超过10万int整型 int main(){ //数组输入 cin >> n >> m; for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ cin >> a[i][j]; } } //输出 for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ cout << a[i][j] << " "; } cout << endl;//记得换行 } return 0; }

5.2 矩阵特点

5.2.1 矩阵的对角线

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

从右上角到左下角这一斜线上的m个元素的位置,叫做副对角线

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

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

//输出m*m主对角线上的元素 #include<bits/stdc++.h> using namespace std; int a[105][105],m;//定义在mian()外面,系统会分配较大的内容,超过10万int整型 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 <= n; i++){ for (int j = 1; j <= m; j++){ if(i == j) cout << a[i][j] << " "; } } return 0; }

5.2.2  数组坐标的表示

一个格子的坐标值是 (x,y),那么它是这个表格 xy 列。

上方:x-1, y

下方:x+1, y

左方:x, y-1

右方:x, y+1

a[x] [y] 是第 x 行第 y 列的数据

//杨辉三角形【题面】下图是杨辉三角的前 6 行。观察样例的规律,输出杨辉三角的前 n 行。//样例输入6//样例输出 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1//标程#include<bits/stdc++.h>using namespace std;int n,a[11][11];int main(){ //输入 cin >> n; for(int i = 1; i <= n; i++){ for(int j = 1; j <= i; j++){ if(j == 1 || j == i) a[i][j] = 1;//边界赋值1 else a[i][j] = a[i-1][j-1] + a[i-1][j];//递推公式 } } //输出 for(int i = 1; i <= n; i++){ for(int j = 1; j <= i;j++){ cout << a[i][j] << " "; } cout << endl; } return 0;}

爱编程  玩科技  懂教育

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OOS0AgzaOCRShMeZz-qa46ww0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券