本题要求你在屏幕上画一个正方形。
输入在一行中给出正方形边长 N 和组成正方形边的某种字符 C,间隔一个空格。
输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。
很容易知道这个图形在第 1 行和最后一行共输出 N 个 C 字符,而其他行只在第一列和最后一列输出字符 C。关键在于确定列数,如果行数为 N,列数为行数的一半且四舍五入取整,那么列数$col=\lfloor(N+1)/2\rfloor$。
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
gg ni;
char ci;
cin >> ni >> ci;
for (gg i = 0; i < ni; ++i)
cout << ci;
cout << '\n';
gg row = (ni + 1) / 2;
for (gg i = 0; i < row - 2; ++i) {
cout << ci;
for (gg j = 0; j < ni - 2; ++j)
cout << ' ';
cout << ci << '\n';
}
for (gg i = 0; i < ni; ++i)
cout << ci;
return 0;
}