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