题目描述
画图形,是我们需要研究的一个重要课程。菱形好似练的差不多了啊。那么,什么东西,能够有些新意呢?弄个漂亮点的图形吧,空心六边形进入了我们的视线。那么我们就打印一个正六边型吧。根据输入的边长,输出对应大小的正六边型。
输入
只有一个正整数n(1 < n <= 20),代表正六边形的边长。
输出
是一个边长为n的正多边形。
样例输入
5
样例输出
***** * * * * * * * * * * * * * * *****
代码如下:
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i < n ; i++)//打印第一行
{
printf(" ");//①
}
for (int i = 1; i <= n; i++)
{
printf("*");//②
}
printf("\n");//换第二行
for (int i = 1; i < n ; i++)//打印上半部分和中间部分的行数
{
for (int j = 1; j <= n - 1 - i; j++)
{
printf(" ");//①
}
printf("*");//②
for (int j = 1; j <= n + (i - 1) * 2; j++)//这个怎么推出来的,看我代码下面的解释
{
printf(" ");//③
}
printf("*");//④
printf("\n");//打完一行换一行
}
for (int i = 1; i < n - 1; i++)//打印下半部分
{
for (int j = 1; j <= i; j++)
{
printf(" ");//①
}
printf("*");//②
for (int j = 1; j <= n * 3 - i * 2 - 4; j++)
{
printf(" ");//③
}
printf("*");//④
printf("\n");
}
for (int i = 1; i < n; i++)//打印最后一行
{
printf(" ");//①
}
for (int i = 1; i <= n; i++)
{
printf("*");//②
}
return 0;
}
解释在这里: