题目:输出如图形状的心形
在这个图当中,我们可以将它分为三个部分来看。
- 心形上方的两个梯形(3行)
- 心形中间的矩形(3行)
- 心形下方的倒三角(8行)
- 第一部分,两个梯形
先看左半边,第一行有4个空格,6个星号,往下每行少两个空格,多四个星号,那么实现这一部分的代码就如下
for(i=0;i<3;i++)
{
for(j=0;j<5-2*i;j++)
{
printf(" ");
}
for(j=0;j<6+4*i;j++)
{
printf("*");
}
printf("\n");
}
效果如下
再看右半边,第一行离左边第一行有9个空格,往下依次每行少4个空格,星号和左边一样,那么在上面的代码基础上再添加代码如下
for(i=0;i<3;i++)
{
for(j=0;j<5-2*i;j++)
{
printf(" ");
}
for(j=0;j<6+4*i;j++)
{
printf("*");
}
for(j=0;j<9-4*i;j++)
{
printf(" ");
}
for(j=0;j<6+4*i;j++)
{
printf("*");
}
printf("\n");
}
效果如下
- 第二部分,矩形
三行,每行31个星号,这个简单
for(i = 0;i<3;i++)
{
for(j = 0;j<31;j++)
{
printf("*");
}
printf("\n");
}
- 第三部分,倒三角
第一行有一个空格,往下每行多两个空格,第一行有29个星号,往下每行少4个星号
for(i=0;i<8;i++)
{
for(j=0;j<2*i+1;j++)
{
printf(" ");
}
for(j=0;j<29-4*i;j++)
{
printf("*");
}
printf("\n");
}
完整代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j = 0;
//第一部分
for(i=0;i<3;i++)
{
for(j=0;j<5-2*i;j++)
{
printf(" ");
}
for(j=0;j<6+4*i;j++)
{
printf("*");
}
for(j=0;j<9-4*i;j++)
{
printf(" ");
}
for(j=0;j<6+4*i;j++)
{
printf("*");
}
printf("\n");
}
//第二部分
for(i = 0;i<3;i++){
for(j = 0;j<31;j++)
{
printf("*");
}
printf("\n");
}
//第三部分
for(i=0;i<8;i++)
{
for(j=0;j<2*i+1;j++)
{
printf(" ");
}
for(j=0;j<29-4*i;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
这个题注意每行的空格、星号的数量与行数的关系就简单解决了。