[GESP202309 二级] 小杨的 X 字矩阵
GESP二级真题,多层循环、分支语句练习,难度★✮☆☆☆。
luogu-B3865 [GESP202309 二级] 小杨的 X 字矩阵
题目要求
题目描述
小杨想要构造一个 的 X 字矩阵( 为奇数),这个矩阵的两条对角线都是半角加号
+
,其余都是半角减号-
。例如,一个 的 X 字矩阵如下:+---+ -+-+- --+-- -+-+- +---+
请你帮小杨根据给定的 打印出对应的“X 字矩阵”。
输入格式
一行一个整数 ( ,保证为奇数)。
输出格式
输出对应的“X 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 行,每行除了换行符外恰好包含 个字符,这些字符要么是
+
,要么是-
。
样例输入 #1
5
样例输出 #1
+---+
-+-+-
--+--
-+-+-
+---+
样例输入 #2
7
样例输出 #2
+-----+
-+---+-
--+-+--
---+---
--+-+--
-+---+-
+-----+
题目分析
解题思路
- 首先,读取输入的整数
N
,用于生成“X 字矩阵”。 - 初始化一个循环来生成“X 字矩阵”,从1到
N
。 - 对于每一行中的每一列,使用条件语句来决定输出
+
或-
。如果当前行和列的索引相等,或者当前行的索引加上列的索引等于N+1
,则输出+
,否则输出-
。 - 在每行输出完成后,输出换行符以换行。
- 循环完成后,输出的“X 字矩阵”将被完整生成。
{% include custom/custom-post-content-inner.html %}
示例代码
#include <iostream>
using namespace std;
int main() {
int n; // 定义变量n
cin >> n; // 读取输入的n
int result = n; // 初始化result为n
for (int i = 1; i <= n; i++) { // 遍历从1到n的所有数
for (int j = n; j >= 1; j--) { // 遍历从n到1的所有数
if (j == i || j == n - i + 1) { // 如果j等于i或j等于n-i+1
cout << "+"; // 输出"+"
} else {
cout << "-"; // 否则输出"-"
}
}
cout << endl; // 换行
}
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on