首页 > 解决方案 > 如何打印这个图案?谁能解释逻辑?

问题描述

Star pattern

任何人都可以为这种模式制定逻辑?我也尝试使用 2 for 循环。我刚刚接受了一次面试,要求我创建如图所示的星形图案。

#include <stdio.h>
int main()
{
   char f;
    int n;
    printf("Enter the number:");
    scanf("%d", &n);
    int i, j, s, k, l, m;
    for (s = 1; s <= n; s++) //printing
    {
        for (k = 1; k <= n; k++)
        {
            for (i = 1; i <= n; i++) //pattern
            {
                for (j = 1; j <= n; j++)
                {
                    if ((i + j == n + 1)) //star positions
                    {
                        printf("* ");
                    }
                    else
                    {
                        printf(" ");
                    }                
                }
                printf("\n");   //next line
            }            
        }        
    }
    return 0;
}

标签: clogic

解决方案


在打印星号 ( ) 字符时,您可以使用printf()所需数量的空格为您填充字符串。*这样,您就不必担心自己的间距:

#include <stdio.h>
#include <string.h>

int main(void) {
    int n;
    printf("Enter the number: ");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        char pat[n + 1];
        memset(pat, 0, sizeof pat);
        pat[0] = '*';

        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= n; k++)
                printf("%*s", n, pat);
            printf("\n");
            pat[j] = ' ';
        }
    }
}

推荐阅读