PTA乙级题 1027. 打印沙漏(20)
把这个题看成两个小题,先打印上面再打印下面
#include<stdio.h>
int main()
{
int n,i,num,c=1,sum=1,d;
char ch;
scanf("%d %c",&num,&ch);
if (num>1)
{
for (i=0;sum<num;i++,c+=2)
sum+=2*(c+2);
if (num==sum)
n=i*2+1;
else
n=i*2-1;
sum-=2*c;
d=num-sum;
int x,a;
x=(n-1)/2;
for (i=0;i<x;i++,n-=2)
{
for (a=0;a<i;a++)
printf(" ");
for (a=0;a<n;a++)
printf("%c",ch);
printf("\n");
}
int b=1;
for (i=0;i<x+1;i++,b+=2)
{
for (a=0;a<x-i;a++)
printf(" ");
for (a=0;a<b;a++)
printf("%c",ch);
printf("\n");
}
if(sum!=num)
printf("%d",d);
}
else
printf("%c\n0",ch);
return 0;
}