代碼打印正確輸出次數過多(CS50)

我對通過哈佛大學的免費CS50課程進行編碼和學習非常陌生。問題集1一直很難,我認為我用艱難的方式做事會使它更具挑戰性,即我試圖為我的代碼創建函數,以適應創建函數的工作方式。任務是制作一個高度在1到8之間的left-aligned金字塔。我已經創建了從用戶那里獲取高度和打印金字塔的函數。問題在于金字塔是如何印刷的。它打印正確,但次數太多。因此,如果用戶在提示輸入高度時鍵入“3”,則應打印以下內容:

  #
 ##
###

相反,它會將這個金字塔打印三次:

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

根據我下面的代碼,解決方案是什么?

main:

{
    int n = get_height();

    for (int j = 0; j < n; j++)
    {
        for (int i = 0; i < n; i++)
        {
            print_row(n - i - 1, i + 1);
        }
    }
}

functions:

int get_height(void)
{
    int n;
    do
    {
        n = get_int("Height: ");
    }
    while (n < 1 || n > 8);
    return n;
}

void print_row(int spaces, int bricks)
{
    // Print spaces
    for (int j = 0; j < spaces; j++)
    {
        printf(" ");
    }
    // Print bricks
    for (int i = 0; i < bricks; i++)
    {
        printf("#");
    }
    printf("\n");
}
? 最佳回答:
for (int j = 0; j < n; j++)
    {
        for (int i = 0; i < n; i++)
        {
            print_row(n - i - 1, i + 1);
        }
    }

代碼的作用:

  • print_row()打印一行。
  • 內部循環打印n行。或者生成一個金字塔。
  • 外部循環執行n次。因此,外循環生成n個棱錐體(由于內循環生成單個棱錐體,n * 1 pyramid等于n pyramids)。

這就是你的代碼打印金字塔n次的方式。因為在生成一次棱錐體之后,您將重復該過程,直到生成n個棱錐體為止。

只需移除外環。

主站蜘蛛池模板: 一区视频免费观看| 毛片一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 日韩免费观看一区| 在线观看中文字幕一区| 精品一区二区三区免费毛片爱| 国产精品女同一区二区久久 | 中文字幕人妻第一区| 日韩综合无码一区二区| 一区二区三区电影在线观看| 国产精品亚洲专区一区| 精品国产一区在线观看| 成人在线观看一区| 国产精品成人一区无码| 国产精品视频一区| 日本在线视频一区二区三区| 天堂一区人妻无码| 麻豆国产在线不卡一区二区| 免费一本色道久久一区| 夜精品a一区二区三区| 无码视频一区二区三区| 天天躁日日躁狠狠躁一区| 国产成人av一区二区三区在线| 国产精品美女一区二区三区| 亚洲精品色播一区二区| 在线电影一区二区三区| 国产伦精品一区二区三区精品| 国产精品一区二区三区久久| 男人的天堂精品国产一区| 福利在线一区二区| 中文字幕永久一区二区三区在线观看 | 亚洲.国产.欧美一区二区三区| 亚洲国产系列一区二区三区| 亚洲熟女www一区二区三区| 狠狠做深爱婷婷久久综合一区| 免费在线视频一区| 亚洲日韩精品一区二区三区| 精品永久久福利一区二区| 亚洲国产欧美一区二区三区| 白丝爆浆18禁一区二区三区| 岛国精品一区免费视频在线观看|