题解 | #空心正方形图案#
空心正方形图案
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++,打印完一行后输出换行, 新的一行打印字符重新计数