CCF-GESP计算机学会等级考试2026年6月二级C++T2 菱形 📅 2026/7/1 18:15:11 B4554 [GESP202606 二级] 菱形题目描述给定正整数nnn在(2n−1)×(2n−1)(2n - 1) \times (2n - 1)(2n−1)×(2n−1)个网格的画布中使用字符画一个边长为nnn个网格的菱形。其中空白网格使用⋅\cdot⋅表示菱形边所在的网格用表示。例如当n3n 3n3时图形如下.... ... ... ... ....输入格式输入一个正整数nnn输出格式输出2n−12n - 12n−1行表示按要求画的菱形。输入输出样例 #1输入 #14输出 #1...... ..... ..... ..... ..... ..... ......说明/提示数据范围3≤n≤153 \le n \le 153≤n≤15。解析这道题跟去年25年9月份的题几乎是一样的。解法一矩阵中左上到右下的斜线行和列的差相等右上到左下的斜线行和列的和相等。判断是否位于四条斜线上是就打印不是就打印’.详见代码#includebits/stdc.husingnamespacestd;intmain(){intn,m;cinn;nn*2-1;mn/21;for(inti1;in;i){for(intj1;jn;j){if(ijm1||i-jm-1||j-im-1||ijm*3-1){cout;}else{cout.;}}coutendl;}return0;}解法二做一个二维的字符数组在数组中依次把四条线写进去然后打印整个数组详见代码#includebits/stdc.husingnamespacestd;chara[105][105];intn;intmain(){cinn;nn*2-1;for(intjn/21,i1;j1;j--,i){a[i][j];}for(intjn/21,i1;jn;j,i){a[i][j];}for(intin/21,j1;in;j,i){a[i][j];}for(intin/21,jn;in;j--,i){a[i][j];}for(inti1;in;i){for(intj1;jn;j){if(a[i][j]0){cout.;}else{couta[i][j];}}coutendl;}return0;}