二级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++二级真题 luogu-b3924, [GESP202312 二级] 小杨的H字矩阵
📅 2025-02-06·✍️ OneCoder·计算中...·⏱️ 4 分钟
#GESP#C++#多重循环
GESP二级真题,多层循环、分支语句练习,难度★✮☆☆☆。
luogu-B3924 [GESP202312 二级] 小杨的H字矩阵
题目要求
题目描述
小杨想要构造一个 的 H 字矩阵( 为奇数),具体来说,这个矩阵共有 行,每行 个字符,其中最左列、最右列都是
|,而中间一行(即第行)的第 个字符都是-,其余所有字符都是半角小写字母a。例如,一个 的 H 字矩阵如下:CONSOLE 5 行|aaa| |aaa| |---| |aaa| |aaa|请你帮小杨根据给定的 打印出对应的“H 字矩阵”。
输入格式
一行一个整数 ( ,保证 为奇数)。
输出格式
输出对应的“H 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 行,每行除了换行符外恰好包含 个字符,这些字符要么是 - ,要么是 | ,要么是 a 。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
样例输入 #1
CONSOLE
1 行
5
样例输出 #1
CONSOLE
5 行
|aaa|
|aaa|
|---|
|aaa|
|aaa|
样例输入 #2
CONSOLE
1 行
7
样例输出 #2
CONSOLE
7 行
|aaaaa|
|aaaaa|
|aaaaa|
|-----|
|aaaaa|
|aaaaa|
|aaaaa|
题目分析
解题思路
- 首先,读取输入的整数
N,并确保它在指定的范围内()且为奇数。 - 初始化一个循环变量
i,用于控制输出的行数。 - 使用一个循环来输出“H 字矩阵”,从
1到N。 - 在每次循环中,首先输出一个竖线
|,然后根据行数i的位置输出相应的字符:- 如果
i等于(N + 1) / 2,输出-,形成矩阵的中间横线。 - 否则,输出
a,形成矩阵的上下边界和内部。
- 如果
- 每行输出完成后,输出一个竖线
|,并换行。 - 循环结束后,输出完成。
示例代码
C++
20 行
#include <iostream>
using namespace std; // 使用标准命名空间
int main() {
int n; // 定义整数变量n
cin >> n; // 从输入流读取整数到n
for (int i = 1; i <= n; i++) { // 循环从1到n
cout << "|"; // 输出竖线
for (int j = 1; j <= n - 2; j++) { // 循环从1到n-2
if (i == (n + 1) / 2) { // 如果当前行数i等于n的中间行
cout << "-"; // 输出横线
} else {
cout << "a"; // 否则输出字符'a'
}
}
cout << "|"; // 输出竖线
cout << endl; // 换行
}
return 0; // 返回0,表示程序执行成功
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
读者讨论与留言
💬 还没有读者留言,快来成为第一个讨论者吧!