金字塔与空心金字塔的实现

题目:金字塔与空心金字塔的实现;

//     *               
//   ***                 
//  *****               
// *******             
//*********

通过观察我们发现:第1行1个*,4个空格 ,2行3个*,3个空格 ,3行5个*,2个空格 ,4行7个*,1个空格.根据*号和空格的出现次数,我们可以发现规律:* = 2*i -1,空格 = level - i;

金字塔代码:

#include <stdio.h>
int main()
{
	int i,j,k,level=8;
	for(i=1;i<=level;i++)
	{
		for(j=1;j<=level-i;j++)
		{
			printf(" ");
		}
		for(k=1;k<=2*i-1;k++)
		{
			printf("*");
		}
		printf("\n");每次内循环一行后,换行
	}
	return 0;
}

代码效果:

空心金字塔:

//空心金字塔 
//    *              第1行1个*,4个空格 
//   * *               2行2个*,3个空格 
//  *   *              3行2个*,2个空格 
// *     *             4行2个*,1个空格 
//*********           第五行没有空格

程序分析:我们前面第一个for循环不用改变,在第二个for循环里面加一个判断语句,我们由空心金子塔可以看出,每层的第一个和最后一个有*,其他地方都是空格,当然最后一层除外,这时候我们加个if-else语句,判断一下该位置是否是第一个或者该层的最后一个,如果是输出*,不是输出空格

代码实现:

#include <stdio.h>
int main()
{
	int level=9,i,j,k;//i表示层数 
	for(i=1;i<=level;i++)
	{
		for(k=1;k<=level-i;k++)
		{
			printf(" ");
		 } 
		for(j=1;j<=2*i-1;j++)
		{
			if(j==1||j==2*i-1||i==level)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}	
		}
		printf("\n");
	}
	return 0;
}

代码效果:

扫描二维码关注公众号,回复: 15603359 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_64131583/article/details/122973091