C中的方形图案

时间:2018-12-15 19:14:13

标签: c

我必须编写代码以通过输入行数来打印由星星(*)及其对角线组成的正方形。

对于lines = 5,它应该看起来像这样:square

*****
*' '*
* ' *
*' '*
*****

我的代码有什么问题?

This is my code so far:

#include <stdio.h>
int main()
{
    int i, j, lines;
    printf("Enter number of lines:");
    scanf("%d",&lines);
         for(i=1; i<=lines; i++)
    {
        for(j=1; j<=lines; j++)
        {
            if(i==1 || i==lines || j==1 || j==lines)
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
            if(i==j)
            {
                printf(".");
            }
            if(i==(-j))
            {
                printf(".");
            }
        }
        printf("\n");
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您的问题是要制作一个在正方形内带有十字的正方形吗?您尝试过,但没有达到预期的效果?

如果是,我希望这段代码对您有帮助:

#include <stdio.h>

int main ()
{
    int n;
    printf("enter number of n: ");
    scanf("%d", &n);

        for (int z=0; z<=n; z++) {
            for (int y=0; y<=n; y++) {
                //printf("%d%d ", z,y);
                if (z==0 || y==0|| z==n || y==n) {
                    printf("* ");
                }
                else if (z==y || y==(n-z)) {
                    printf("' ");
                }
                else {
                    printf("  ");   
                }
            }
            printf("\n");
    }

}

在您的代码中,存在一些没有道理的矛盾。如果(i ==(-j))都始终提供正值怎么办?

为便于理解,请尝试首先打印第一个和第二个循环的值。例如n = 5,它将给您:

00 01 02 03 04 05
10 11 12 13 14 15
20 21 22 23 24 25
30 31 32 33 34 35
40 41 42 43 44 45

在那里您可以看到需要操作的东西。

答案 1 :(得分:1)

#include <stdio.h>

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

如果我们要打印更多的(i,j)值,我们将得到一个以原点为中心的x,并在第4象限周围有一盒星星。我们需要将正斜线向下移动一点。