GESP 二级 C++ 真题:菱形
题目描述
小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个 n 行 n 列的字符画,n 是一个大于 1 的奇数。菱形的四个顶点依次位于第 1 行、第 1 列、第 n 行、第 n 列的正中间,使用 # 绘制。相邻顶点之间也用 # 连接。其余位置都是 .。
例如,一个 5 行 5 列的菱形字符画是这样的:
..#..
.#.#.
#...#
.#.#.
..#..
给定 n,请你帮小 A 绘制对应的菱形。
输入格式
一行,一个正整数 n。
输出格式
输出共 n 行,表示对应的菱形。
输入输出样例 1
输入
3
输出
.#.
#.#
.#.
输入输出样例 2
输入
9
输出
....#....
...#.#...
..#...#..
.#.....#.
#.......#
.#.....#.
..#...#..
...#.#...
....#....
数据范围
对于所有测试点,保证 3 ≤ n ≤ 29 且 n 为奇数。
参考代码
解法一:坐标判断法
利用矩阵中左上到右下的斜线(行和列的差相等),以及右上到左下的斜线(行和列的和相等)。判断是否位于四条斜线上,是就打印 #,不是就打印 .。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n;
m = n / 2 + ;
( i = ; i <= n; i++) {
( j = ; j <= n; j++) {
(i + j == m + || i - j == m - || j - i == m - || i + j == m * - ) {
cout << ;
} {
cout << ;
}
}
cout << endl;
}
;
}

