如何打印此图案?
问题描述:
我想创建一个程序打印模式,如下图所示,如何打印此图案?
**********
**** ****
*** ***
** **
* *
我试图创建这个模式,但它不打印在第一行中间的明星。这是代码。
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;
}
该程序打印如下所示的图案。
***** *****
**** ****
*** ***
** **
* *
那么,你有什么建议?
答
你只需要删除一个空间:
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;
}
对于我今天遇到的第一个做功课并提供了一些代码的第一人,你会得到一个+1。 –
你需要在每一行上减少一个空间。你怎么能改变你的中间环路来做到这一点? – aschepler