题目:金字塔与空心金字塔的实现;
// *
// ***
// *****
// *******
//*********
通过观察我们发现:第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;
}
代码效果: