View Code of Problem 53

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	int n=0;
	scanf("%d",&n);
	int k=0,i=0;
	for(k=1-n;k<=n-1;k++)//从最上层一直到最下层
	{
		//先判断上面4层
		//因为k=-4,k=-3,k=-2,k=-1,k=0
		//故可以写成i=n-abs(k)
		i=n-abs(k);//i为行数
		//因为j的循环等于k的绝对值,那么j从1开始,则j应该小于等于abs(k)
		//而i=n-abs(k),故n+1-(n-abs(k))等于j,即n+1-i
		for(int j=1;j<=n-i;j++)
		{
			printf(" ");
		}
		//每行打印的星星数等于2*(n-abs(k))-1
		for(int j=0;j<2*i-1;j++)
		{
			printf("*");
		}
		printf("\n");
	}
	printf("\n");
	//system("pause");

}

Double click to view unformatted code.


Back to problem 53