#include<stdio.h>
void pxo(int n,int ih) //第一个输出*
{
int i,j,t,xi=0,ki=0,x=0,k=0; //xi用来计数i行*号个数,ki用来计数i行空格个数,x用来计数*号个数,k用来计数空格个数
t=(n-1)/2; //输出空格初始化
for(j=0;j<(n-1)/2;j++) //前(n-1)/2-1行
{
for(i=t--;i>0;i--)
{
printf(" ");
k++;
}
for(i=0;i<2*j+1;i++)
{
printf("*");
x++;
}
printf("\n");
}
t=(n-1)/2; //输出*号初始化
for(j=(n-1)/2;j<n;j++) //后(n-1)/2+1行
{
for(i=0;i<j-(n-1)/2;i++)
{
printf(" ");
k++;
}
for(i=1+2*(t--);i>0;i--)
{
printf("*");
x++;
}
printf("\n");
}
printf("numo(*)=%d,numo( )=%d\n",x,k); //输出*与空格的个数
if(ih<=(n-1)/2&&ih>0) //前(n-1)/2-1行
{
xi=2*ih-1;
ki=(n+1-xi)/2;
}
if(ih>(n-1)/2&&ih<n+1) //后(n-1)/2+1行
{
ki=ih-(n-1)/2-1;
xi=n-2*ki;
}
printf("numoi(*)=%d,numoi( )=%d\n",xi,ki); //输出每行*与空格的个数
}
void pxt(int n,int ih) //第二个输出
{
int i,j,t,xi=0,ki=0,x=0,k=0;
t=(n-1)/2; //输出空格初始化
for(j=0;j<(n-1)/2;j++) //前(n-1)/2-1行
{
for(i=t--;i>0;i--)
{
printf(" ");
k++;
}
printf("*");
x++;
if(j>0) //限制第一行
{
for(i=0;i<2*(j-1)+1;i++)
{
printf(" ");
k++;
}
printf("*");
x++;
}
printf("\n");
}
t=(n-1)/2-1; //输出*号初始化
for(j=(n-1)/2;j<n;j++) //后(n-1)/2+1行
{
for(i=0;i<j-(n-1)/2;i++)
{
printf(" ");
k++;
}
printf("*");
x++;
if(j<n-1) //限制最后一行
{
for(i=1+2*(t--);i>0;i--)
{
printf(" ");
k++;
}
printf("*");
x++;
}
printf("\n");
}
printf("numt(*)=%d,numt( )=%d\n",x,k);//输出*与空格的个数
if(ih>1&&ih<=(n-1)/2) //2到(n-1)/2行
{
ki=(n-1)/2+ih-2;
xi=2;
}
else if(ih<n&&ih>(n-1)/2) //(n-1)/2到n-1行
{
ki=n-2-(ih-(n-1)/2-1);
xi=2;
}
else if(ih==1||ih==n) //第一行与最后一行
{
ki=(n-1)/2;
xi=1;
}
printf("numti(*)=%d,numti( )=%d\n",xi,ki); //输出每行*与空格的个数
}
void main()
{
//int i,j,t,n,x=0,k=0;
int n,ih;
while(1)
{
printf("please enter n(odd number) line and number of *and of the line of i:\n");
scanf_s("%d%d",&n,&ih);//输入想要输出的行数
printf("test\n");
pxo(n,ih); //第一个输出*
pxt(n,ih); //第二个输出*
}
}