我正在学习 CS50 课程,我做了这个练习,其中我必须打印一个带有 # 的金字塔,在 C 语言中看起来像这样,使用用户选择的 1 到 8(包括)之间的高度:
#
##
###
####
#####
但是我的代码不起作用,我不想去 Chatgpt。
我渴望得到提示,这样我就可以自己解决问题。
这是我的代码:
int main(void)
{
// Recebe uma altura do usuário entre 1 e 8;
int h;
do
{
h = get_int("Altura: ");
}
while (h < 1 || h > 8);
// acrescenta uma quebra de linha até que atinja a altura
for (int i = 0; i < h; i++)
{
// acrescenta uma # de acordo com a quantidade de quebra de linha
for (int b = 0; b <= i; b++)
{
for (int j = h - 1; j > i; j--)
{
printf(" ");
}
printf("#");
}
printf("\n");
}
}
我做了第一个金字塔,看起来像这样:
#
##
###
####
#####
我知道如何做相反的事情,因为要拥有正确的金字塔,我需要将这些 # 替换为空格,然后看起来像:
*****
****
***
**
*
所以我知道我需要将这两者混合起来,然后才能得到正确的金字塔,但是当我混合它们时,它不起作用。
****#
***##
**###
*####
#####
我认为你应该尝试放置另一个内部循环来打印#
您的代码首先打印一些
*
,然后打印一个 #
;然后,在打印一行中的第二个#
之前,它会再次打印一些*
。这是因为 *
的循环嵌套在 #
的循环内。