打印菱形
要考虑打印一个菱形,我们首先将菱形分为上下两个三角形,先打印上三角,再打印下三角。
对于上三角形,假设最多一行有13个*,那么我们可以定义一个left(L)=right(R)=最中间位置(6)。
对于上三角形,我们首先要打印7行,因此确定一个for循环:
for (int i = 0; i < 7; i++);//打印 7行
对于每一行我们需要打印13个字符:
for (int j=0;j<13;j++);//从第一个字符打印到第十三个字符
而L和F是我们判断打印*还是空格的一个范围:
if (j >= L && j <= R)
{
printf("*");
}
else
{
printf(" ");
}
每一行打印完,L都需要向左移一位,R需要向右移一位
打印上三角形:
int main() //打印上三角形
{
int L = 6;
int R = 6;
for (int i = 0; i < 7; i++)
{
for (int j=0;j<13;j++)
{
if (j >= L && j <= R)
{
printf("*");
}
else
{
printf(" ");
}
}
L--;
R++;
printf("\n");
}//L=-1 R=13上
上三角形打印完毕,L会变成-1,R会变成13,越界了,因此我们首先需要执行一次L++,R--,此时L=0,R=12,再来打印下三角形。
对于下三角形,我们只需要打印6行,且第一行便会在i=1处开始打印*,
因此首先需要执行L++,R--,此时L=1,R=11
L++;
R--;
for (int i = 0 ; i < 6; i++)
{
L++;
R--;
for (int j = 0; j < 13; j++)
{
if (j >= L && j <= R)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
打印完整菱形:
int main() //打印菱形
{
int L = 6;
int R = 6;
for (int i = 0; i < 7; i++)
{
for (int j=0;j<13;j++)
{
if (j >= L && j <= R)
{
printf("*");
}
else
{
printf(" ");
}
}
L--;
R++;
printf("\n");
}//L=-1 R=13
L++;
R--;
for (int i = 0 ; i < 6; i++)
{
L++;
R--;
for (int j = 0; j < 13; j++)
{
if (j >= L && j <= R)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}