如何诊断我的 CS50 代码的问题?

问题描述 投票:0回答:2

我正在学习 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");
    }
}    

我做了第一个金字塔,看起来像这样:

      #
      ##
      ###
      ####
      #####

我知道如何做相反的事情,因为要拥有正确的金字塔,我需要将这些 # 替换为空格,然后看起来像:

  *****
   ****
    ***
     **
      *

所以我知道我需要将这两者混合起来,然后才能得到正确的金字塔,但是当我混合它们时,它不起作用。

  ****#
  ***##
  **###
  *####
  #####

Here is the output of my code

c logic
2个回答
0
投票

我认为你应该尝试放置另一个内部循环来打印#


0
投票

您的代码首先打印一些

*
,然后打印一个
#
;然后,在打印一行中的第二个
#
之前,它会再次打印一些
*
。这是因为
*
的循环嵌套在
#
的循环内。

© www.soinside.com 2019 - 2024. All rights reserved.