我接受了采访,要求我编写一个沙漏星型程序。例如,如果用户指定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");
}


请帮我解决这个问题。

最佳答案

您只能使用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;
}

关于c - C语言中的HourGlass星型程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41911126/

10-09 01:25