嗨,我很新,并且正在尝试通过hackerrank进行改进,我正在锻炼楼梯staircase excercise

但是我的输出与问题不同,因为我的楼梯似乎在结果的前面有多余的空间,从而使结果不正确。这是我的代码。

#include <stdio.h>

int main ()
{

int size = 0;

//input size of staircase
scanf("%d" , &size);


//create array to hold staircase
char list [size];
//iterate through and fill up array with spaces
for (int i = 0; i <size; ++i)
{
    list[i] = ' ';
}
//the iterate backwards -1 each time replacing each spcae with a '#' and printing each stair case starting from smallest at the top.
for (int i = size; i >0; i--)
{
    list[i] = '#';
    printf("%s\n", list);
}


return 0;
}


我对问题是什么感到困惑,为什么我的楼梯间距比预期的问题还要大?我一直在努力解决问题,确实非常需要任何帮助。

我的输出:

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


*编辑-感谢您的帮助,所有答案都很有帮助。

最佳答案

有几个错误:

1)您忘记在字符串的末尾放置一个空字符('\0')。做这个:

for (int i = 0; i <size; ++i)
{
    list[i] = ' ';
}
list[i] ='\0';


2)

for (int i = size; i >0; i--)
{
    list[i] = '#';
    printf("%s\n", list);
}


在这里,您尝试访问的字符串索引无效(当i = size时)。这样做:

for (int i = size-1; i > -1; i--)
{
    list[i] = '#';
    printf("%s\n", list);
}

关于c - HackerRank楼梯C困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44318058/

10-11 21:28