2015-09-21 44 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"); 
    } 

输出如下:

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