在C中打印双半金字塔

时间:2017-03-01 11:31:18

标签: c

我想打印两个看起来像这样的半金字塔:

http://i.imgur.com/yze8MlI.png

到目前为止,我的代码看起来像这样

#include <stdio.h>

int main(void) {
    int row, star, space, n;
    printf("Enter row number:");
    scanf("%d", &n);
    for (row = 1; row <= n; row++) {
        for (space = n - 1; space >= row; space--){
            printf(" ");
        }
        for (star = 1; star <= row; star++) {
            printf("##");
        }
        printf("\n");
    }
    return 0;
}

但它打印整个金字塔,我如何在中间实现一个空间?

3 个答案:

答案 0 :(得分:1)

#include <stdio.h>

int main(void) {
    int height=5;
    const char* bricks = "###############"
    for(int i=1; i<height+1; ++i)
    {
        printf("%*.*s      %.*s\n", height,i,bricks, i,bricks);
    }
    return 0;
}

IDEOne Link

输出:

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

答案 1 :(得分:0)

for(star=1;star<=row*2;star++){

        printf("#");
    if(star == row)
    printf(" ");

 }

按上述方式修改第二个循环

答案 2 :(得分:0)

以下代码易于理解,而可让您完全控制

您也可以更改高度(行数)和半个金字塔的大小(例如 - 4)。然后它将*打印为图像中的砖块,spaces作为空格,##作为它们之间的空间。

#include <stdio.h>

int main(void)
{
    int row,col,space,n1=4, n2=4;

    for(row=1;row<=n1;row++){

    for(space=n2-row;space>=0;space--)
        printf(" ");

    for(col=1;col<=row;col++)
        printf("*");

    printf("##");

    for(col=1;col<=row;col++)
        printf("*");      

    for(space=n2-row;space>=0;space--)
        printf(" ");

    }

    printf("\n");
}

示例输出:

    *##*    
   **##**   
  ***##***  
 ****##****