📅  最后修改于: 2023-12-03 15:28:38.926000             🧑  作者: Mango
本题是2021年GATE CS考试的第一个设置的第三个问题。该问题主要考察了程序员对由条件语句和循环语句组成的程序的理解和编写能力。
编写一个程序,输入一个整数 n
,然后输出 n
行字符,每行中间有一个或多个空格,内部由字符 *
和 -
组成。
示例:
输入:
5
输出:
----*----
---***---
--*****--
-*******-
*********
根据题目描述,我们需要输出 n
行字符,其中第 i
行包含 n-i
个连字符 -
、2i-1
个星号 *
和 n-i
个连字符 -
。
接下来,我们考虑如何根据以上规律来构造程序。
在这里,我们可以使用两重循环来完成这个任务。
第一层循环用于遍历每一行,变量 i
的值从 1
到 n
。
第二层循环用于在每一行上输出字符,变量 j
的值从 1
到 2n-1
。
在第二层循环中,我们将输出字符列分为了 3 个部分,其中前 n-i
个位置输出连字符 -
,接下来的 2i-1
个位置输出星号 *
,最后的 n-i
个位置再次输出连字符 -
。
最后,通过按顺序打印每行的字符,我们就能够生成所需的输出字符串。
下面给出该问题的解决方案,使用了 Python 语言实现。
def print_pattern(n):
for i in range(1, n+1):
for j in range(1, 2*n):
if j <= n-i or j > n-i+2*i-1:
print("-", end="")
else:
print("*", end="")
print()
我们可以使用下面的代码运行示例。
n = 5
print_pattern(n)
运行结果:
----*----
---***---
--*****--
-*******-
*********