CS50 Pset 1 马里奥更多

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

我正在解决 Mario 在 CS50 Pset 1 中更舒服的问题,我确实喜欢其中的大部分内容,这是我的代码:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int height, i2, i;
    do
    {
    height = get_int("Height: ");
    }
    while(height < 1 || height > 8);
    for(i = 0; i < height; i++)
    {
        printf("\n");
        for(int o = 0; o < height - i - 1; o++)
        {
            printf(" ");
        }
        for(int j = 0; j <= i; j++)
        {
            printf("#");
        }
        printf("  ");
        for(i2 = 0; i2 < height; i2++)
        {
            //printf("\n");
        for(int j2 = 0; j2 <= i2; j2++)
            {
            printf("#");

    }
}
        }
    printf("\n");
}

它很好地绘制了第一个金字塔并放置了两个空格,但它绘制的不是金字塔,而是类似矩形的东西。我在互联网上搜索答案,但所有这些都只是解决整个问题,这破坏了学习过程,所以你能给我一些关于这个的提示吗?我非常感谢您提供的任何帮助。

c cs50
2个回答
0
投票

如果我正确地阅读了你的问题,你想在终端上生成一个金字塔(或等腰三角形),如下例所示(仅供参考,我只有一个空格)。

Height: 8

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

如果是这样的话,我相信你把事情复杂化了一点。实际上,您只想以对称方式重复您创建的图案。为此,您只需要重复用于生成图案左半部分的相同打印循环。如果您需要更多提示,请告诉我。

顺便说一句,我相信你可以删除“while”语句。

while(height < 1 || height > 8);

就目前而言,如果输入的值小于 1 或大于 8,则 while 循环将变成无限循环。

希望有帮助。


0
投票

哇,这真的很有趣

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