C模式中的Printf空间

时间:2018-11-02 14:12:24

标签: c

我的代码如下:

if (a == 4)
    {
        if (n >= 3 && n <= 18)
        {
            width = n + 2;

            for (a = 1; a <= width; a++)
            {
                printf("*");
            }
            printf("\n");
            for (i = 1; i <= n; i++)
            {
                for (j = 1; j <= n; j++)
                {
                    if (i == 1 || i == n || j == 1 || j == n)
                    {
                        printf("*");
                    }
                    else
                    {
                        printf(" ");
                    }
                }
            printf("\n");
            }
        }

此代码根据n打印行的图案。

例如对于n = 7

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

我想要做的就是像这样在每行前面打印一个空格

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

它应该在上一行的中间打印一个空白框。

2 个答案:

答案 0 :(得分:2)

在两个循环之间添加一个printf(" ");

for (i = 1; i <= n; i++)
{
    printf(" ");
    for (j = 1; j <= n; j++)
    {
        ...
    }
    printf(" \n");
}

答案 1 :(得分:0)

code

#include<stdio.h>

int main() {
    int n = 7;
    if (n >= 3 && n <= 18)
    {
        int width = n + 2;
        for (int i = 0; i != width; ++i)
            printf("*");
        printf("\n");
        for (int i = 0; i != n; ++i)
        {
            printf(" ");
            for (int j = 0; j != n; ++j)
            {
                if (i == 0 || i == n - 1 || j == 0 || j == n - 1)
                    printf("*");
                else
                    printf(" ");
            }
            printf("\n");
        }
    }
    return 0;
}