【GESP】C++二级练习 luogu-P5725 【深基4.习8】求三角形
GESP二级练习,多层循环分支练习,难度★★☆☆☆。
luogu-P5725 【深基4.习8】求三角形
题目要求
题目描述
模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。中间有个空行。
输入格式
输入矩阵的规模,不超过 $9$。
输出格式
输出矩形和正方形
输入 #1
1
4
输出 #1
1
2
3
4
5
6
7
8
9
01020304
05060708
09101112
13141516
01
0203
040506
07080910
题目分析
解题思路
- 首先,我们需要理解题目的核心要求:
- 打印出不同方向的正方形,然后打印三角形矩阵
- 解题思路:
- 首先打印一个 n x n 的矩阵,矩阵中的每个元素是从 1 开始的两位数,按行顺序排列
- 然后打印一个三角形矩阵,矩阵中的每个元素是从 1 开始的两位数,按行顺序排列,左对齐
- 具体实现:
- 读入一个整数 n,表示矩阵的规模
- 使用两层循环打印 n x n 的矩阵,外层循环控制行,内层循环控制列,打印两位数,不足两位补零
- 打印一个空行
- 使用两层循环打印三角形矩阵,外层循环控制行,内层循环控制列,打印两位数,不足两位补零,左对齐
- 在打印三角形矩阵时,使用条件判断在适当位置打印空格
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
int n; // 定义一个整型变量 n
cin >> n; // 从标准输入读取 n 的值
for (int i = 0; i < n; i++) { // 外层循环,循环 n 次
for (int j = 1; j <= n; j++) { // 内层循环,循环 n 次
printf("%02d", i * n + j); // 打印两位数,不足两位补零
}
cout << endl; // 每行结束后换行
}
cout << endl; // 打印一个空行
int cur = 1; // 定义并初始化一个整型变量 cur 为 1
for (int i = 0; i < n; i++) { // 外层循环,循环 n 次
for (int j = 1; j <= n; j++) { // 内层循环,循环 n 次
if (j < n - i) { // 如果 j 小于 n - i
cout << " "; // 打印两个空格
} else { // 否则
printf("%02d", cur); // 打印两位数,不足两位补零
cur++; // cur 自增 1
}
}
cout << endl; // 每行结束后换行
}
return 0; // 返回 0,表示程序正常结束
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权