如何打印出一个菱形
思路
首先,菱形分为上下两个三角形,可以分别求出上下两个三角形,然后拼到一块儿。
上三角形的求法
由图可以看出,星号数是2*行号+1,空格数是6-行号
上三角形的代码实现
#include<stdio.h>
int main()
{
int line = 7;//先打印前7行
for (int i = 0;i < line;i++)//行号从0开始加到6
{
for (int k = 0;k < (line - 1) - i;k++)//先打印空格,空格数的规律是6-行号,行号是i
{
printf(" ");
}
for (int j = 0;j < 2 * i + 1;j++)//打印星号,星号数的规律是2*行号+1
{
printf("*");
}
printf("\n");
}
return 0;
}
上三角的效果图
下三角的求法
由上图可知,空格数就是行号+1,星号数就是6-行号*2-1
下三角的代码实现
#include<stdio.h>
int main()
{
int line = 7;//先打印前7行
for (int i = 0;i < line ;i++)
{
for (int k = 0;k < i + 1;k++)
{
printf(" ");
}
for (int j = 0;j < (line-1-i)*2 -1;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
下三角效果图
最后的代码实现
int main()
{
int line = 7;//先打印前7行
for (int i = 0;i < line;i++)//行号从0开始加到6
{
for (int k = 0;k < (line - 1) - i;k++)//先打印空格,空格数的规律是6-行号,行号是i
{
printf(" ");
}
for (int j = 0;j < 2 * i + 1;j++)//打印星号,星号数的规律是2*行号+1
{
printf("*");
}
printf("\n");
}
for (int i = 0;i < line ;i++)
{
for (int k = 0;k < i + 1;k++)
{
printf(" ");
}
for (int j = 0;j < (line-1-i)*2 -1;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
最终的效果图
总结
本题的重点是将菱形分为上下两部分来看,然后分别求上下两个三角形的规律,最后以代码的形式来实现.