前言:
那这作为我的第二篇博客,在此分享下关于任意行数菱形的打印。
首先说明一点,关于菱形我们不难发现,只有当总行数line 为奇数时才可打印菱形。当总行数为偶数时则在最中间会出现长度相同的两行,并非为一个相对完美的菱形。下面提供一种实现方法:
代码部分:
int main()
{
int line = 0;
scanf("%d", &line); //获取打印总行数;
int i = 0;
for (i = 0; i <= (line/2-1); i++) //打印上半部分,i 每+1 则打印一行;
{
int j = 0;
for (j = 0; j <= (line / 2 - 1 - i); j++) //j 用于控制此行打印两种内容的数量
{
printf(" ");
}
for (j = 0; j <= (i * 2); j++)
{
printf("X");
}
printf("\n");
}
if (line % 2 != 0) //若为偶数则不执行,不然会打印偶数加一行;
{
for (i = 0; i <= line - 1; i++) //中部
{
printf("X");
}
printf("\n");
}
for (i = (line / 2 - 1); i >= 0; i--) //下部;同上
{
int j = 0;
for (j = 0; j <= (line / 2 - i - 1); j++)
{
printf(" ");
}
for (j = 0; j <= (i * 2); j++)
{
printf("X");
}
printf("\n");
}
}
分析:
对于上述代码,我将菱形分为上、中、下三个区域打印。上部区域可以发现空格数为
(line / 2 - 1 - i),因为至少会有一个菱形故而”-1“ ,又因为每一行的空格数由上至下递减,便借助”i“ 来完成。下部空格与之同理。不难发现,每一行的”X“ 的数量为(2*i+1)个,最中间行数量与奇数本身相同,偶数没有中间行。
OK,that's all.
Bye.