我想创建一个程序来打印一个模式,如下所示,
**********
**** ****
*** ***
** **
* *
我尝试过制作这种模式,但它并没有在第一行的中间打印星星。这是代码。
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;
}
此程序打印下面显示的模式。
***** *****
**** ****
*** ***
** **
* *
那么,你的建议是什么?
答案 0 :(得分:1)
中心循环应为for(k=1;k<i;k++)
(<
代替<=
。)
否则,每一行中间都有一个额外的空间。
答案 1 :(得分:1)
为了避免冗余空间,只需更改:
for(k=1;k<=i;k++)
为:
for(k=1;k<i;k++)
答案 2 :(得分: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;
}
答案 3 :(得分:0)
您只需删除一个空格:
for(k=1;k<i;k++) // changing the <= to <
答案 4 :(得分: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;
}