#include <stdio.h>
int main(int argc, char *argv[])
{
int num = 0, sheng = 0,n = 0, line = 0, i = 0, j = 0;
char p;
if (scanf("%d %c", &num, &p)){};//直接写scanf会有警告,所以这样写
if (num <= 0 || num >1000)//正整数
{
return 1;
}
while (1)
{
sheng = num + 1 - 2 *n*n;//沙漏点的总数是2*n*n-1
line = 2 * n - 1;
if (sheng < 0)
{
line-=2;
break;
}
else if (sheng == 0)
{
break;
}
n++;
}
for (i = 0; i < line / 2; i++)//前半段
{
for (j = 0; j < i; j++)
{
printf(" ");
}
for (j = 0; j < line - 2*i; j++)
{
printf("%c", p);
}
printf("\n");
}
for(; i < line;i++)//后半段
{
for (j = 0;j < line-i-1; j++)
{
printf(" ");
}
for(j = 0;j <=2*i - line + 1; j++)
{
printf("%c", p);
}
printf("\n");
}
sheng = num + 1 - (line+1)*(line+1)/2;
printf("%d\n",sheng);//为零也要显示
return 0;
}
PAT-乙级-打印沙漏c语言
最新推荐文章于 2022-10-30 16:26:28 发布