【GESP】C++二级真题 luogu-b3865, [GESP202309 二级] 小杨的 X 字矩阵
GESP二级真题,多层循环、分支语句练习,难度★✮☆☆☆。
luogu-B3865 [GESP202309 二级] 小杨的 X 字矩阵
题目要求
题目描述
小杨想要构造一个 的 X 字矩阵( 为奇数),这个矩阵的两条对角线都是半角加号
+
,其余都是半角减号-
。例如,一个 $5 \times 5$ 的 X 字矩阵如下:+---+ -+-+- --+-- -+-+- +---+
请你帮小杨根据给定的 打印出对应的“X 字矩阵”。
输入格式
一行一个整数 ( $5 \le N \le 49$,保证为奇数)。
输出格式
输出对应的“X 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 $N$ 行,每行除了换行符外恰好包含 $N$ 个字符,这些字符要么是
+
,要么是-
。
样例输入 #1
1
5
样例输出 #1
1
2
3
4
5
+---+
-+-+-
--+--
-+-+-
+---+
样例输入 #2
1
7
样例输出 #2
1
2
3
4
5
6
7
+-----+
-+---+-
--+-+--
---+---
--+-+--
-+---+-
+-----+
题目分析
解题思路
- 首先,读取输入的整数
N
,用于生成“X 字矩阵”。 - 初始化一个循环来生成“X 字矩阵”,从1到
N
。 - 对于每一行中的每一列,使用条件语句来决定输出
+
或-
。如果当前行和列的索引相等,或者当前行的索引加上列的索引等于N+1
,则输出+
,否则输出-
。 - 在每行输出完成后,输出换行符以换行。
- 循环完成后,输出的“X 字矩阵”将被完整生成。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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; // 换行
}
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权