【问题标题】:Implementing a staircase within a C program [duplicate]在C程序中实现楼梯[重复]
【发布时间】:2021-12-18 05:59:19
【问题描述】:

我刚开始使用 C 编程,在实现一个提供“高度”数量的楼梯的程序时遇到了一些困难。

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

int main(void)

{
  int height;

    do
    {
        height = get_int("Height: ");
    }
    while(height > 8 || height == 0 || height < 0);

  int width = 0;
  int length = height;

  while(width < height)
  {
    printf(" ");
    printf("@");
    for(width = 0; width < height; width++)
      {
        printf("\n");
      }

  }
}

Height 的第一行可以正常工作,但我在实际编写楼梯时遇到了困难。我想要这样或类似的东西。

Height: 3
@
 @
  @

如果我将来遇到这样的问题,我只想学习如何实现这样的东西。如果有人可以进一步帮助我,我将不胜感激!

【问题讨论】:

  • 停止破坏你自己的问题。你已经这样做了两次了。

标签: c cs50


【解决方案1】:

这行得通:

#include <stdio.h>

int main() {
    // gets height input - replace with your get_int method
    int height;
    printf("Height: ");
    scanf("%i",&height);
    // loop over all the steps: 0 - height
    for (int i = 0; i < height; i++) {
        // add a space i number of times (where i is our current step number and so equal to width)
        // notice that if we take top left as (0,0), we go 1 down and 1 right each time = current step
        for (int j = 0; j < i; j++) {
            printf(" ");
        }
        // finally, after the spaces add the character and newline
        printf("@\n");
    }
    return 0;
}

【讨论】:

  • 只是好奇'scanf'函数是做什么的,'%d'是什么意思
  • 它只是抓取输入。声明一个变量,然后将其地址传递给函数。这会读取标准输入并将其值传递到给定地址(在本例中为高度)的变量中。 %d 只是说明数据类型(十进制)。我现在将其更改为 %i 整数
【解决方案2】:
#include <stdio.h>

int main(void)
{
    int height = 5;
    for(int i=0; i<height; printf("%*s\n", ++i, "@"));
}

输出:

Success #stdin #stdout 0s 5572KB
@
 @
  @
   @
    @

【讨论】:

  • 这是一个家庭作业问题......最好不要只为 OP 解决它,而是指导他们。
  • @einpoklum 这不是一个真正的家庭作业问题,但如果您想了解更多信息,更像是一个额外的问题。我不会复制它,只是想知道它是如何完成的。所以别担心:)
  • @abelenky 只是好奇,“%s\n”是做什么的。我知道 \n 是写一个新行,但是 %s 呢。
  • @Hyakkimaru:您应该阅读有关 printf() actually does 的内容。您正在以退化的形式使用它,实际上可以用 puts() 调用替换您对它的使用。
【解决方案3】:

我在这里看到三个问题:

  1. 您打印的是换行符 (\n) 而不是空格 ( )。
  2. 为什么要打印单个空格字符?
  3. 您在空格之前(应该是什么)打印"@"
  4. 在空格和@ 之后打印一个换行符。

另外...楼梯的宽度总是等于它的高度;只是你正在打印的行在前进……这有点令人困惑。

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 2018-01-21
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多