题解 | #空心正方形图案#
空心正方形图案
https://www.nowcoder.com/practice/72347ee949dc47399186ee183632f303
#include <iostream>
using namespace std;
int main() {
int num = 0;
while (cin >> num) {
int count = 0;
for (int a = 0; a < num; a++) {
if (a == 0 || a == num - 1) {
while (count < num) {
cout << "* ";
count++;
}
cout << endl;
count = 0;
} else {
while (count < num) {
if (count == 0 || count == num - 1) {
cout << "* ";
count++;
} else {
cout << " ";
count++;
}
}
cout << endl;
count = 0;
}
}
}
return 0;
}
// 64 位输出请用 printf("%lld")
首先我们声明 正方形的边长为num
因为是多组输入,所以使用while循环输入边长
声明count 当前行打印了几个字符
使用for循环 定义变量a 表示当前行 ,控制他一行一行打印 ,<num控制刚好打印num行
再用if语句判断 是否是首行或者尾行 如果是则一行全部打印*,count++ 记录当前打印了几个字符 ,一行打印完则换行,count字符打印次数重新计数,否 就执行else语句,打印其他行
else语句 首先用while控制当前行打第几个字符,来判断这一行打完没有,再用if判断 这是当前行的首尾字符 则打*,否,则跳到else输出“ ”空格,count++,打印完一行后输出换行, 新的一行打印字符重新计数