图形的搭建

例一:

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例一:

输入:

5

输出:

*   *
 * * 
  *  
 * * 
*   *

示例二:

输入:

6

输出:

*    *
 *  * 
  **  
  **  
 *  * 
*    *

对于图形图案的构造,我们首先要做的就是观察、找规律,然后对图形进行搭建,构造。

分析:

对于这样的图形,首先我们可以发现图形相当于一个二维数组,然后对二维数组中的值进行存放。如图:

62da22bf613d43cabf7fd3cf1adec3db.png

我们可以发现,定义两个变量,当两个变量的值相等时,就打印“ * ”,或者当两个变量相加等于输入的变量的值减去一时,也打印“ * ”。

废话不多说,上代码。

#include<stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == j|| i + j == n - 1)
            {
                printf("*");
            }
            else
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

我们可以用编译器进行打印,输出的结果

99082383ebfb4b70a50c38fa72b418ee.png

例二:

输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

示例1:

输出:

* * * * 
*     * 
*     * 
* * * * 

示例2

输入:

5

输出:

* * * * * 
*       * 
*       * 
*       * 
* * * * * 

首先,也是要进行分析。

我们可以发现,当创建两个变量,并且他们的值等于0或者3时,打印“ * ”。

cf7e577699a74ab7b67225cdeb8ff6ee.png

上代码:

#include<stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    for (int i = 0; i <= n - 1; i++)
    {
        
        for (int j = 0; j <= n - 1; j++)
        {
            if (i == 0 || i == n - 1)
            {
                printf("* ");
            }
            else if (j == 0||j ==n -1) 
            {
                printf("* ");
            }
            
            else
                printf("  ");
        }
        printf("\n");
    }
    return 0;
}

编译可知
75793611f0fc437c9ba5e5cb9785772d.png 

如图所示