#include<stdio.h>
int main()
{
int i,j,k,l, a1, an, d, n, sn, iN, hN;
while(1)
{
//输入N
printf("\r\nPlease input N:");
scanf("%d", &iN);
//小于1退出
if(iN < 1)
break;
//确定边界范围
hN = (iN+1) / 2;
a1 = 1, d = 2;
an=a1, sn=a1, n=0;
while( sn + an + d <= hN )
{
an+=d;
sn+=an;
n++;
}
printf("maxN = %d\r\n", sn*2-1);
//输出前半部分
for(i=0,j=an; i<=n; i++, j-=d)
{
l = (an-j)/2;
for(k=0; k<l; k++)
printf(" ");
for(k=0; k<j; k++)
printf("*");
for(k=0; k<l; k++)
printf(" ");
printf("\r\n");
}
//输出后半部分
for(i=0,j=a1+d; i<n; i++, j+=d)
{
l = (an-j)/2;
for(k=0; k<l; k++)
printf(" ");
for(k=0; k<j; k++)
printf("*");
for(k=0; k<l; k++)
printf(" ");
printf("\r\n");
}
}
return 0;
}
Please input N:100
maxN = 97
*************
***********
*********
*******
*****
***
*
***
*****
*******
*********
***********
*************