C中的HourGlass Star Pattern程序

时间:2017-01-28 14:50:50

标签: c

我接受了一次采访,其中我被要求写一个沙漏星形模式程序。例如,如果用户指定5,则模式必须类似于:

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

如果7,则模式必须如下:

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

我对模式的编码是:

for(i=n; i>=1; i--)
{
    for(j=i; j<n; j++)
    {
        printf(" ");
    }
    for(j=1; j<=(2*i-1); j++)
    {
        printf("*");
    }
    printf("\n");
}
for(i=1; i<=n; i++)
{
    for(j=i; j<n; j++)
    {
        printf(" ");
    }
    for(j=1; j<=(2*i-1); j++)
    {
    printf("*");
    }
    printf("\n");
}

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

这可能会有所帮助。这不是最好的,它可以提高效率,但它应该给你一个想法。

#include<stdio.h>

void print(int space, int star) 
{
    while (space--) {
        printf(" ");
    }
    while (star--) {
        printf("*");
    }
    printf("\n");
}

void main()
{
    int star,space,i,j;
    printf("Enter number:");
    scanf("%d",&star);
    j=star/2;
    i=star;space=0;
    while (space<j || star>0) {
        print(space,star);
        space=space+1;star=star-2;
    }
    space=j-1;star=3;
    while(space>0 || star<=i) {
        print(space,star);
        space=space-1;star=star+2;
    }
}

如果您有任何疑问,请发表评论 注意:以上代码只是一个示例。有许多(并且效率更高)的方法来实现模式,并鼓励他们找到一种方法 修改:代码现在只打印中间的1颗星。没注意到。道歉。

答案 1 :(得分:0)

您只能使用 1循环进行打印:

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


int main(int argc, char* argv[])
{
    int a=0;
    scanf("%d",&a);
    int i=0;
    char* asterisk=malloc(sizeof(char)*a);
    memset(asterisk,'*',a*sizeof(char));
    while(i<a)
    {
        if(i<=a/2)
            printf("%*.*s\n",a-i,a-2*i,asterisk);
        else
            printf("%*.*s\n",i+1,2*(i+1)-a,asterisk);
        i++;
    }
    free(asterisk);
    return 0;
}

答案 2 :(得分:0)

伙计们我发现了错误,我在该代码中做了什么。

#include <stdio.h>
void main()
{
int i, j, n;
printf("Enter Odd value for n : ");
scanf("%d", &n);
for(i=n/2+1; i>1; i--)
{
for(j=i; j<n; j++)
{
    printf(" ");
}
for(j=1; j<=(2*i-1); j++)
{
    printf("*");
}
printf("\n");
}


for(i=1; i<=n/2+1; i++)
{
for(j=i; j<n; j++)
{
    printf(" ");
}
for(j=1;j<=(2*i-1); j++)
{
    printf("*");
}
printf("\n");
}
}

谢谢!!!!!!!各位帮助你的人。