Mario - CS50x 2026
待解决的问题
在任天堂(Nintendo)的 Super Mario Brothers 第一关(World 1-1)开始处,Mario 必须跳过相邻的砖块金字塔,如下图所示。

在一个名为 mario-more 的文件夹中创建一个名为 mario.c 的文件,用 C 语言实现一个程序来重现这个金字塔,并使用井号(#)代表砖块,如下所示:
# #
## ##
### ###
#### ####
让我们允许用户决定金字塔的高度,首先提示他们输入一个 1 到 8 之间(含 1 和 8)的正整数(int)。
示例
如果用户在提示时输入 8,程序的运行效果如下:
$ ./mario
Height: 8
# #
## ##
### ###
#### ####
##### #####
###### ######
####### #######
######## ########
如果用户在提示时输入 4,程序的运行效果如下:
$ ./mario
Height: 4
# #
## ##
### ###
#### ####
如果用户在提示时输入 2,程序的运行效果如下:
$ ./mario
Height: 2
# #
## ##
如果用户在提示时输入 1,程序的运行效果如下:
$ ./mario
Height: 1
# #
如果用户在提示时没有输入 1 到 8 之间(含 1 和 8)的正整数,程序应该重新提示用户,直到其输入符合要求:
$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
# #
## ##
### ###
#### ####
请注意,无论金字塔的高度如何,相邻金字塔之间的“间隙”宽度始终等于两个井号的宽度。
演练
如何测试你的代码
当你输入以下内容时,你的代码是否按预期工作:
-1(或其他负数)?0?1到8?9或其他正数?- 字母或单词?
- 完全没有输入,只按回车键?
你也可以执行以下命令,使用 check50 来评估代码的正确性。但请务必先自行编译并测试!
check50 cs50/problems/2026/x/mario/more
执行以下命令,使用 style50 来评估代码的风格。
style50 mario.c
如何提交
在你的终端中,执行以下命令来提交你的作品,并根据提示进行操作。
submit50 cs50/problems/2026/x/mario/more