C简单的算法错误

时间:2014-03-28 02:23:47

标签: c

我试图在C中解决你从左侧创建(半)金字塔的问题,到目前为止我已经完成了这个问题

  int height;

do
{
    printf("give the height of the pyramid \n");
    height = GetInt();

}
while(height <= 0  || height > 23 );

for(int i = 2; i < height+2 ; i++)
{
    printf("\n");

    int spacenum = height - i;

    //this is for space
    for(int k = 0; k < spacenum; k++)
    {
        printf(" ");
    }


    //this is for  hex
    for(int k = 0; k < i; k++)
    {
        printf("#");
    }


}

getint方法来自一个自定义库,它的作用类似于scanf

所以如果我给出一个论点,就说8

它看起来像这样:

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

我希望它看起来像这样:

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

我该怎么办? 有什么东西有更好的方式吗?用不同的代码做这样的事情?我的意思是不同的方法

1 个答案:

答案 0 :(得分:0)

你的病情

for(int k = 0; k < spacenum; k++)

导致问题,应该是

for(int k = 0; k <= spacenum; k++)

尝试

int height;

do
{
    printf("give the height of the pyramid \n");
    height = GetInt();

}
while(height <= 0  || height > 23 );

for(int i = 2; i < height+2 ; i++)
{
    printf("\n");

    int spacenum = height - i;

    //this is for space
    for (int k = 0; k <= spacenum; k++) {
    {
        printf(" ");
    }


    //this is for  hex
    for(int k = 0; k < i; k++)
    {
        printf("#");
    }


}