我正在解决 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");
}
它很好地绘制了第一个金字塔并放置了两个空格,但它绘制的不是金字塔,而是类似矩形的东西。我在互联网上搜索答案,但所有这些都只是解决整个问题,这破坏了学习过程,所以你能给我一些关于这个的提示吗?我非常感谢您提供的任何帮助。
如果我正确地阅读了你的问题,你想在终端上生成一个金字塔(或等腰三角形),如下例所示(仅供参考,我只有一个空格)。
Height: 8
# #
## ##
### ###
#### ####
##### #####
###### ######
####### #######
######## ########
如果是这样的话,我相信你把事情复杂化了一点。实际上,您只想以对称方式重复您创建的图案。为此,您只需要重复用于生成图案左半部分的相同打印循环。如果您需要更多提示,请告诉我。
顺便说一句,我相信你可以删除“while”语句。
while(height < 1 || height > 8);
就目前而言,如果输入的值小于 1 或大于 8,则 while 循环将变成无限循环。
希望有帮助。
哇,这真的很有趣