文章

【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

题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:
    • 打印出不同方向的正方形,然后打印三角形矩阵
  2. 解题思路:
    • 首先打印一个 n x n 的矩阵,矩阵中的每个元素是从 1 开始的两位数,按行顺序排列
    • 然后打印一个三角形矩阵,矩阵中的每个元素是从 1 开始的两位数,按行顺序排列,左对齐
  3. 具体实现:
    • 读入一个整数 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 进行授权