C++程序 打印“G”字形图案
在本文中,我们将学习如何使用星号和空格打印出“G”字形图案。给定一个数字n,我们将编写一个程序在n行或n行上打印出“G”字形图案。
例子:
输入:7
输出:
***
*
*
* ***
* *
* *
***
输入:9
输出:
*****
*
*
*
* ***
* *
* *
* *
*****
在本程序中,我们使用了迭代行的简单逻辑来创建“G”字形图案。请看下面的图像,它将“G”字形图案表示为一个二维矩阵,其中mat[i][j] = ‘ij’:
“G”字形图案的图形表示
如果我们使用(行,列)矩阵分析这幅图画,圆圈表示“G”字形图案中星号的位置,我们将学习这些步骤。这里我们按列执行操作。因此,对于第一行的星号,我们设置了第一个if条件,其中行位置为0和(n-1)将不会得到星号,而所有其他行从1到 (n-1) 将得到星号。同样地,对于第二、第三和第四列,我们希望星号位于row = 0和row = (n-1)的位置。其他步骤都是不言自明的,并且可以从图表中的行列位置理解。
例子:
// C程序打印“G”图案
#include <stdio.h>
void pattern(int line)
{
int i, j;
for (i = 0; i < line; i++) {
for (j = 0; j < line; j++) {
if ((j == 1 && i != 0 && i != line - 1)
|| ((i == 0 || i == line - 1) && j > 1
&& j < line - 2)
|| (i == ((line - 1) / 2) && j > 2
&& j < line - 1)
|| (j == line - 2 && i != 0
&& i >= ((line - 1) / 2)
&& i != line - 1))
printf("*");
else
printf(" ");
}
printf("\n");
}
}
int main()
{
int line = 7;
pattern(line);
return 0;
}
输出
***
*
*
* ***
* *
* *
***
时间复杂度:O(n 2),其中n表示给定的输入。
辅助空间:O(1),不需要额外的空间,因此它是一个常数。