打印菱形星号组合

#include
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;j0;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&&ih0;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;j0;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-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);       //第二个输出*	
	}
}

打印菱形星号组合_第1张图片



你可能感兴趣的:(c语言)