【发布时间】:2014-10-05 22:10:58
【问题描述】:
我正在尝试编写一个制作星星图案的程序。最后一行真的把我绊倒了。我必须只使用 printf("*"); printf(" "); printf("\n"); 语句来编写代码。我想用 for 循环和 if 语句来完成这个。
它应该是这样的:
* - *前5个空格 * * - *前4个空格 * * * - *前3个空格 * * * * * * - * 前有 0 个空格这是我迄今为止尝试过的:
main()
{
int i, j, k;
i=1;
j=1;
for(i=4;i>=1;i--)
{
for(j=1;j<=4;j++)
{
if(j>=i || ((i+j)==5) && !(j==2) && !(j==3))
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
和
main()
{
int i, j, k;
for(i=4;i>=1;i--)
{
for(j=1;j<i;j++)
{
printf(" ");
}
for(k=4;k>=i;k--)
{
if((k>=i) ||((k>=i) && ((i+k)==5)))
{
printf("*");
}
}
printf("\n");
}
}
我认为我的第一种方法很遥远。但我认为我在第二个链接中有所了解。我正在尝试在第四行打印“*”和额外的 2 次。第二个链接编译器似乎忽略了 ||操作员。我应该如何更改我的 if 语句以使这种模式起作用?
【问题讨论】:
-
程序应该是静态的还是你想改变打印的行数?为什么它会从 5、4、3 下降到 0?
-
内联发布代码以保持 SO 独立于其他网站。
-
代码是静态的。我希望前 3 行遵循一个模式,而第四行是该模式的一个例外。我想我可以用 if 语句来完成。