Mario

要解决的问题

在任天堂 Super Mario Brothers 第 1-1 关的开头附近,Mario 必须跳过相邻的砖块金字塔,如下图所示。

screenshot of Mario jumping over adjacent pyramids

在名为 mario-more 的文件夹中的 mario.c 文件中,用 C 语言实现一个程序来重建那些金字塔,使用井号(#)表示砖块,如下图所示:

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

并且让用户来决定金字塔应该有多高,先提示他们输入一个介于 1 到 8(含)之间的正整数 int

示例

以下是当用户被提示时输入 8 后程序可能的运行效果:

$ ./mario
Height: 8
       #  #
      ##  ##
     ###  ###
    ####  ####
   #####  #####
  ######  ######
 #######  #######
########  ########

以下是当用户被提示时输入 4 后程序可能的运行效果:

$ ./mario
Height: 4
   #  #
  ##  ##
 ###  ###
####  ####

以下是当用户被提示时输入 2 后程序可能的运行效果:

$ ./mario
Height: 2
 #  #
##  ##

以下是当用户被提示时输入 1 后程序可能的运行效果:

$ ./mario
Height: 1
#  #

如果用户在被提示时没有输入 1 到 8 之间(含)的正整数,程序应重新提示用户直到他们配合:

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
   #  #
  ##  ##
 ###  ###
####  ####

注意,相邻金字塔之间”间隙”的宽度等于两个井号的宽度,与金字塔高度无关。

讲解视频

如何测试你的代码

你的代码在以下输入情况下是否按预期工作:

  • -1(或其他负数)?
  • 0
  • 18
  • 9 或其他正数?
  • 字母或单词?
  • 只按 Enter 键,不输入任何内容?

你也可以执行下面的命令,使用 check50 来评估代码的正确性。但请务必自己编译并测试它!

check50 cs50/problems/2026/x/mario/more

执行下面的命令,使用 style50.

style50 mario.c

如何提交

在终端中执行以下命令提交你的作业,并按提示完成操作。

submit50 cs50/problems/2026/x/mario/more