C - 以不同的排列方式打印星形图案

时间:2012-10-01 14:41:54

标签: c

我的作业需要使用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

3 个答案:

答案 0 :(得分:6)

此循环无法执行任何操作:

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

它表示“从i = 5开始,而i <= 1;请i--”。

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

你应该做的是扭转这个条件:

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

这样,您将从i = 5开始循环,并在i--时执行i >= 1

for循环的一般思维规则:

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

相当于

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

答案 1 :(得分:2)

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

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

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

你应该这样做:

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

答案 2 :(得分:1)

停止条件下循环中的

错误。 使用

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

而不是:

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