2017-04-23 61 views
1

我想創建一個程序打印模式,如下圖所示,如何打印此圖案?

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

我試圖創建這個模式,但它不打印在第一行中間的明星。這是代碼。

int main() 
{ 
int i,j,k,l; 

char c='*'; 

for(i=1;i<=5;i++) 
{ 
    for(j=5;j>=i;j--) 
    { 
     printf("%c",c); 
    } 
    for(k=1;k<=i;k++) 
    { 
     printf(" "); 
    } 
    for(l=5;l>=i;l--) 
    { 
     printf("%c",c); 
    } 
    printf("\n"); 
} 

getch(); 

return 0; 
} 

該程序打印如下所示的圖案。

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

那麼,你有什麼建議?

+1

對於我今天遇到的第一個做功課並提供了一些代碼的第一人,你會得到一個+1。 –

+1

你需要在每一行上減少一個空間。你怎麼能改變你的中間環路來做到這一點? – aschepler

回答

0

你只需要刪除一個空間:

for(k=1;k<i;k++) // changing the <= to < 
1

中心循環應該是for(k=1;k<i;k++)<而不是<=)。

否則,每條線在中間都有一個額外的空間。

1

爲了避免多餘的空間,只是改變:

for(k=1;k<=i;k++) 

到:

for(k=1;k<i;k++) 
0

試試這個,

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
int i,j,k,l; 

char c='*'; 

for(i=1;i<=5;i++) 
{ 
    for(j=5;j>=i;j--) 
    { 
     printf("%c",c); 
    } 
    for(k=1;k<i;k++) 
    { 
     printf(" "); 
    } 
    for(l=5;l>=i;l--) 
    { 
     printf("%c",c); 
    } 
    printf("\n"); 
} 

getch(); 

return 0; 
} 

輸出:

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

這種代碼也顯示相同的輸出:)如果任何人都可以,如果嘗試這種想:)

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
int i,j,k=0; 


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

getch(); 

return 0; 
} 
1

精度%.precision字段可用於打印字符的具體數量星號允許將一個變量用作精度。

#include <stdio.h> 

int main (void) 
{ 
    char stars[10] = "*********"; 
    char spaces[10] = "   "; 
    int i = 0; 

    for (i = 0; i < 5; i++) { 
     printf ("%.*s%.*s%.*s\n", 5 - i, stars, i * 2, spaces, 5 - i, stars); 
    } 
    return 0; 
}