在屏幕上输出以下图案:

      *

     ***

    *****

   *******

  *********

 ***********

*************

 ***********

  *********

   *******

    *****

     ***

      *

观察每行的变化规律,找到算法。

代码如下:

#include<stdio.h>
int main()
{
	int i,j,k;
	for(i=0;i<7;i++)/*i为行,先输出前7行*/
	{
		for(j=0;j<6-i;j++)/*输出*前空格*/
		{
			printf(" ");
		}
		for(k=6-i;k<i+7;k++)/*输出每行的*(观察每行的变化规律)*/
		{
			printf("*");		
		}
		printf("\n");		
	}
	for(i=7;i<13;i++)/*输出后6行*/
	{
		for(j=0;j<i-6;j++)
		{
			printf(" ");
		}
		for(k=i-7;k<18-i;k++)
		{
			printf("*");
			
		}
		printf("\n");		
	}
		
	return 0;
}

此法不能动态输出菱形图像,只局限与此图像,进行改进后代码如下:

#include<stdio.h>
int main()
{
	int line,i,j,k;
	scanf("%d",&line);
	for(i=0;i<line;i++)
	{
		for(j=0;j<line-i-1;j++)
		{
			printf(" ");
		}
		for(k=0;k<2*i+1;k++)
		{
			printf("*");
			
		}
		printf("\n");		
	}
	for(i=line;i<2*line;i++)
	{
		for(j=0;j<i+1-line;j++)
		{
			printf(" ");
		}
		for(k=0;k<2*line-2*(i-(line-1))-1;k++)
		{
			printf("*");
			
		}
		printf("\n");		
	}
		
	return 0;
}