嗨,我很新,并且正在尝试通过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/