前言
今天我们一起学习一下画空心正方形~
一、空心正方形
题目来源:
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。
输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。
二、解题思路
1.拆分法
观察图形结构,发现它可以分为两个部分,第一部分是,第一行和最后一行点满,中间的为第二部分,开头结尾各一个,中空。
代码如下:
#include<stdio.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ //分行 if(i==0||i==n-1){ //第一部分点满 for(int j=1;j<=n;j++){ printf("* "); } } else { for(int b=1;b<=n;b++){ //第二部分点开头结尾 if(b==1||b==n){ printf("* "); } else{ printf(" "); } } } printf("\n"); //记得换行~ } } return 0; }
2.整体法
代码如下(示例):
#include <stdio.h> int main(){ int n; while(scanf("%d", &n) != EOF){ for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ if(i == 1 || i == n) printf("* "); else if(j == 1 || j == n) printf("* "); else printf(" "); } printf("\n"); } } return 0; }
这种方法比较高级,不太容易看懂,可能拆分法更加通俗易懂。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了两种画空心正方形的方法,希望对大家有帮助~