课程目录展开/折叠
- 课程直播回放
- 第1课 C++编程快速入门试学
- 第2课 C++程序设计基础知识试学
- 第3课 基本输入输出和数据类型试学
- 第4课 基本输入输出和数据类型试学
- 第5课 基本输入输出和数据类型试学
- 第6课 数据类型和运算符
- 第7课 数据类型和运算符
- 第8课 C++中的运算符
- 第9课 C++中的运算符
- 第10课 C++中的运算符
- 第11课 C++中的运算符
- 第12课 条件判断和选择语句
- 第13课 条件判断和选择语句
- 第14课 条件判断和选择语句(刷题课)
- 第15课 循环
- 第16课 循环
- 第17课 循环
- 第18课 循环(刷题课)
- 第19课 循环(刷题课)
- 第20课 循环(刷题课)
- 第21课 循环(刷题课)
- 第22课 循环(刷题课)
- 第23课 循环嵌套
- 第24课 循环嵌套(刷题课)
- 第25课 数组试学
- 第26课 数组试学
- 第27课 数组(刷题课)试学
- 第28课 数组(刷题课)试学
- 第29课 数组(刷题课)试学
- 第30课 数组试学
- 第31课 二维数组试学
- 第32课 二维数组试学
- 第33课 数组(刷题课)试学
- 第34课 数组(刷题课)试学
- 第35课 字符串
- 第36课 字符串
- 第37课 字符串
- 第38课 字符串
- 第39课 字符串
- 第40课 字符串
- 第41课 字符串
- 第42课 字符串
- 第43课 字符串
- 第44课 指针
- 第45课 指针
- 第46课 指针
- 第47课 指针
- 第48课 指针
- 第49课 指针
- 第50课 指针
- 第51课 指针
- 第52课 指针
- 第53课 指针
- 第54课 函数
- 第55课 函数
- 第56课 函数
- 第57课 函数
- 第58课 函数
- 第59课 递归函数
- 第60课 递归函数
- 第61课 递归函数
- 第62课 递归函数
- 第63课 结构体和共用体
- 第64课 结构体和共用体
- 第65课 结构体和共用体
- 第66课 结构体和共用体
- 第67课 结构体和共用体
- 第68课 文件和文件读写
- 第69课 文件和文件读写
- 第70课 面向对象和类
- 第71课 面向对象和类试学
- 第72课 面向对象和类试学
- 第73课 STL中常用算法函数和类试学
- 第74课 整数编码和位运算试学
- 第75课 C++课程总结以及后续学习规划建议试学
第32课 二维数组
播放快捷键
播放/暂停:空格(或鼠标单击) 全屏:F(或鼠标双击) 退出全屏:Esc
快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→
快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←
本节课讲解配套PPT&板书:
















本节课讲解到的源代码
源代码下载:第32课 二维数组-源代码下载
1. 二维数组
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[3][4]; // double[3][4] scanf("%lf", &a[i][j]);
// 从键盘输入数据
for (int i = 0; i < 3; i ++)
{
for (int j = 0; j < 4; j ++)
{
scanf("%d", &a[i][j]); // scanf需要的是内存单元的地址
// cin >> a[i][j]; // C++风格
}
}
for (int i = 0; i < 3; i ++)
{
for (int j = 0; j < 4; j ++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
2. C语言输入格式控制符
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 测试学习
double d;
scanf("%lf", &d); // float 输入 %f,double %lf
printf("%f", d); // float、double(%lf) 输出 %f
return 0;
}
3. 三维数组
#include <bits/stdc++.h>
using namespace std;
int main()
{
/*
int a[10]; // 一维数组 线性的
int b[3][4]; // 二维数组 平面的
int c[2][3][4]; // 三维数组 立体的
// 单个元素初始化
c[0][0][0] = 1;
c[0][0][1] = 2;
c[0][0][2] = 3;
c[0][0][3] = 4;
c[0][1][0] = 5;
c[0][1][1] = 6;
c[0][1][2] = 7;
c[0][1][3] = 8;
c[0][2][0] = 9;
c[0][2][1] = 10;
c[0][2][2] = 11;
c[0][2][3] = 12;
*/
int c[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
},
{
{11, 22, 33, 44},
{55, 66, 77, 88},
{99, 1010, 1111, 1212},
},
};
// 访问单个元素(读 + 写)
cout << c[1][1][1] << endl;
cout << c[1][1][2] << endl;
c[1][1][3] = 8888;
cout << c[1][1][3] << endl;
// 遍历三维数组
for (int i = 0; i < 2; i ++)
{
cout << "货架:" << i << endl;
for (int j = 0; j < 3; j ++)
{
for (int k = 0; k < 4; k ++)
{
cout << c[i][j][k] << ' ';
}
cout << endl;
}
}
return 0;
}
4. P1110-对角线之和-1
#include <bits/stdc++.h>
using namespace std;
int a[105][105];
int n;
int main()
{
cin >> n;
for (int i = 0; i < n; i ++)
{
for (int j = 0; j < n; j ++)
{
cin >> a[i][j];
}
}
// 计算对角线之和
int ans1 = 0, ans2 = 0;
for (int i = 0; i < n; i ++)
{
for (int j = 0; j < n; j ++)
{
if (i == j) // 第1根对角线的元素
{
ans1 += a[i][j];
}
if (i + j == n - 1) // 第2根对角线的元素
{
ans2 += a[i][j];
}
}
}
cout << ans1 << endl;
cout << ans2 << endl;
return 0;
}
5. P1110-对角线之和-2
#include <bits/stdc++.h>
using namespace std;
int a[105][105];
int n;
int main()
{
cin >> n;
for (int i = 0; i < n; i ++)
{
for (int j = 0; j < n; j ++)
{
cin >> a[i][j];
}
}
// 计算对角线之和
int ans1 = 0, ans2 = 0;
for (int i = 0; i < n; i ++)
{
// 第1对角线:i = j
// 第2对角线: i + j = n - 1
// a[i][i] a[i][n - 1 - i]
ans1 += a[i][i];
ans2 += a[i][n - 1 - i];
}
cout << ans1 << endl;
cout << ans2 << endl;
return 0;
}
6. P1110-对角线之和-3
#include <bits/stdc++.h>
using namespace std;
int a[105][105];
int n;
int main()
{
// 计算对角线之和
int ans1 = 0, ans2 = 0;
cin >> n;
for (int i = 0; i < n; i ++)
{
for (int j = 0; j < n; j ++)
{
cin >> a[i][j];
if (i == j) ans1 += a[i][j];
if (i + j == n - 1) ans2 += a[i][j];
}
}
cout << ans1 << endl;
cout << ans2;
return 0;
}
7. P1113-对角线之和2-1
#include <bits/stdc++.h>
using namespace std;
int a[1005];
int n;
// int idx; // index idx
int T;
int m;
int b[25][25];
int main()
{
cin >> n;
for (int i = 0; i < n; i ++)
{
cin >> a[i];
}
cin >> T;
while (T--)
{
int idx = 0;
int m;
cin >> m;
for (int i = 0; i < m; i ++)
{
for (int j = 0; j < m; j ++)
{
// cin >> b[i][j];
b[i][j] = a[idx++]; // 一维数组访问越界??
}
}
// 打印调试下
/*
cout << endl;
for (int i = 0; i < m; i ++)
{
for (int j = 0; j < m; j ++)
{
cout << b[i][j] << ' ';
}
cout << endl;
}
*/
int ans1 = 0, ans2 = 0;
for (int i = 0; i < m; i ++)
{
ans1 += b[i][i];
ans2 += b[i][m - 1 - i]; // m行m列
}
cout << ans1 << ' ' << ans2 << endl;
}
return 0;
}
本节课答疑
建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习
陈远龙老师视频讲解:如何使用DeepSeek进行答疑?
通过AI未能获得满意解答的,可以联系陈远龙老师答疑
目录