我对编码和通过哈佛大学的免费 CS50 课程学习非常陌生。问题集 1 很困难,我认为我通过以困难的方式做事而使其更具挑战性,即我试图为我的代码创建函数以适应创建函数的工作方式。任务是制作一个高度在 1 到 8 之间的左对齐金字塔。我创建了函数来从用户处获取高度并打印金字塔。问题在于金字塔是如何打印的。打印正确,但打印次数过多。因此,如果用户在提示输入高度时输入“3”,则应打印以下内容:
#
##
###
相反,它会打印该金字塔三次:
#
##
###
#
##
###
#
##
###
根据我的下面的代码解决此问题的解决方案是什么?
主要:
{
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);
}
}
}
功能:
{ int n; do { n = get_int("Height: "); } while (n < 1 || n > 8); return n; }
{ // 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);
}
}
内循环打印行。外循环重复该过程。赠品是
j
从未被使用过。如果 n 为 3,您将得到 3 行重复 3 次。