我對通過哈佛大學的免費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");
}
代碼的作用:
print_row()
打印一行。n
行。或者生成一個金字塔。n
次。因此,外循環生成n
個棱錐體(由于內循環生成單個棱錐體,n * 1 pyramid
等于n pyramids
)。這就是你的代碼打印金字塔
n
次的方式。因為在生成一次棱錐體之后,您將重復該過程,直到生成n
個棱錐體為止。只需移除外環。