1

我的作业需要使用 for 循环打印出星形图案,如下所示:

!!!!!
!!!!
!!!
!!
!

这是我的循环:

    int i, j;
    for(i=5;i<=1;i--)
    {
        for(j=1;j<=i;j++)
        {
            printf("!");
        }
        printf("\n");
    }

实际上我已经成功打印出如下模式:

! 
!! 
!!! 
!!!! 
!!!!!

通过以下循环:

    int i, j;
    for(i=1;i<=5;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("!");
        }
        printf("\n");
    }

现在我很困惑为什么不能打印模式 1,因为没有发现错误。当我继续运行程序时,输出窗口也会关闭。

我的 Xcode 是 Ver 4.4.1

4

3 回答 3

6

这个循环不能执行任何东西:

for(i=5;i<=1;i--)

它说“从 开始i = 5,然后i <= 1; 做i--”。

在第一次迭代中, i 已经 > 1,所以你的循环甚至没有进入。

你应该做的是扭转条件:

for (i = 5; i>= 1; i--)

这样,您将从 开始循环i = 5,然后执行i--while i >= 1

for循环的一般思考规则:

for (A; B; C)
{
    D;
}

相当于

A;
while (B)
{
    C;
    D;
}
于 2012-10-01T14:45:28.013 回答
2

在您的第一个代码示例中,您编写以下内容:

for(i=5;i<=1;i--)

永远不会进入这个 for 循环。在开始时i设置为 5。然后i<=1进行测试,它将返回false并跳过 for 循环。

你应该这样做:

for(i=5;i>=1;i--)
于 2012-10-01T14:46:38.753 回答
1

停止条件下的循环错误。采用

for(i=5;i>=1;i--)

代替:

for(i=5;i<=1;i--)

于 2012-10-01T14:59:51.217 回答