2015-09-21 45 views
0

我想製作一個這樣的星形圖案。星形圖案邏輯

* 
    * * * 
* * * * * 
    * * * 
    * 

我正在使用此代碼。

for (int i=1; i<=3; i++) { 
     for (int j=1; j<=3-i; j++) { 
      printf(" "); 
     } 
     for (int k=1; k<=2*i-1; k++) { 
      printf("x"); 
     } 
     printf("\n"); 
    } 

這會給

 * 
    * * * 
* * * * * 

我怎麼會在遞減順序進行迭代。

when I am using 
for (int i=3; i>=0; i--) { 
     for (int j=1; j<=3-i; j++) { 
      printf(" "); 
     } 
     for (int k=1; k<=2*i-1; k++) { 
      printf("x"); 
     } 
     printf("\n"); 
    } 

xxxxx 
xxx 
    x 

我們如何合併它?

+0

使用'我 - '而不是'我++' –

+0

使用'> ='而不是'<=' –

+0

可能重複的[是否有可能做循環向後嗎?](http://stackoverflow.com/questi ons/3263207/is-it-it-it-do-for-loop-backward) –

回答

4

這裏的另一個邏輯

int x=11; 
int y=x/2; 
int z=1; 

BOOL b1=true; 
BOOL b2= true; 
for(int i=0;i<x;i++) 
{ 
    for(int j=0;j<y;j++) 
    { 
     printf(" "); 
    } 
    for(int k=0;k<z;k++) 
    { 
     printf("*"); 
    } 
    if(y==0) b1=false; 
    if(z==x) b2=false; 

    y=b1?y-1:y+1; 
    z=b2?z+2:z-2; 
    printf("\n"); 
} 
+0

THNKS ROHIT ... –

3

嘗試用下面的邏輯,

 for (int i=1; i<=3; i++) { 
     for (int j=1; j<=3-i; j++) { 
      printf(" "); 
     } 
     for (int k=1; k<=2*i-1; k++) { 
      printf("*"); 
     } 
     printf("\n"); 
    } 

    for (int i =2; i>=0; i--) { 
     for (int j=1; j<=3-i; j++) { 
      printf(" "); 
     } 
     for (int k=1; k<=2*i-1; k++) { 
      printf("*"); 
     } 
     printf("\n"); 
    } 

輸出如下:

* 
*** 
***** 
*** 
    *