2017-03-01 105 views
-3

我想打印兩個半座金字塔是這樣一個雙過半金字塔:打印用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; 
} 

,但它打印整個金字塔,我如何在中間實施一個空間?

回答

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

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

} 

修改第二環路如上

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

輸出:

#  # 
    ##  ## 
    ###  ### 
####  #### 
#####  ##### 
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"); 
} 

輸出示例:

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