如何打印此图案?

问题描述:

我想创建一个程序打印模式,如下图所示,如何打印此图案?

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

我试图创建这个模式,但它不打印在第一行中间的明星。这是代码。

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

你只需要删除一个空间:

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

中心循环应该是for(k=1;k<i;k++)<而不是<=)。

否则,每条线在中间都有一个额外的空间。

为了避免多余的空间,只是改变:

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

到:

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

试试这个,

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

精度%.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; 
}