B3924 [GSEP202312 二级] 小杨的H字矩阵 题解

· · 题解

估值掉了好多,又来写题解了捏。

题目描述

输出一个图形,共 N 行,每行的一开始是一个 |,中间除了第 \frac{n+1}{2} 行是 N-2- 以外,其它均为 N-2a,最后是一个 |

思路

按照题目描述模拟即可,但一定要注意输出格式要规范

1 遍历到 N,每行首先设置要在两个 | 中间输出的元素 c,普通行为 a,第 \frac{n+1}{2} 行是 -

char c='a';
if(i==(n+1)/2)c='-';

然后输出行首的 |

putchar('|');

接着输出 N-2c(即要在两个 | 中间输出的元素),使用循环。

for(int j=3;j<=n;j++)putchar(c);

输出行末的 |,与行首的 | 同理,不再赘述。

最后,是换行。换行是很考验规范性的地方,因为最后一行不应有换行,设当前在第 i 行,即若 i\neq n,才会输出换行。

if(i!=n)putchar('\n');

完整代码

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){  // 输出共 n 行
        char c='a';
        if(i==(n+1)/2)c='-';    // 设置当前行要输出的内容
        putchar('|');
        for(int j=3;j<=n;j++)putchar(c);    // 按照格式输出
        putchar('|');
        if(i!=n)putchar('\n');  // 换行问题
    }
    return 0;
}