分析:
根据多行输入的结果,特殊处理第一行和最后一行,对于中间的行的空格为2*n-3,然后打印首尾的星号即可。
题解:
#include <bits/stdc++.h> using namespace std; int main() { int n = 0; //循环读入n while(scanf("%d", &n) != EOF) { //外循环遍历每一行 for(int i = 0; i < n; ++i) { //对第一行和最后一行特殊处理,输出n个星号 if(i == 0 || i == n-1) { for(int j = 0; j < n; ++j) { printf("* "); } } else { //中间行只要首尾输出星号,中间用空格填充即可 printf("*"); for(int j = 0; j < 2*n-3; ++j) printf(" "); printf("* "); } //换行处理 printf("\n"); } } return 0; }
总结:
复杂图案的输出,找出每一行规律,然后根据规律写成循环即可。