如何解决这种特殊的嵌套for循环运动?

时间:2012-05-05 19:02:05

标签: c recursion for-loop procedural-programming repeat

我已经学习了一段时间的C编程,我偶然发现了这个我似乎无法解决的练习:

  • 编写导致显示以下输出的循环嵌套:

    0
    01
    012
    0123
    01234
    012345
    01234
    0123
    012
    01
    0
    

到现在为止,我已经设法进入第六排,但我无法完成练习。 这是我编写的代码,用于获得此问题的一半解决方案:

#include <stdio.h>

int
main(void)
{

int i, j;

for(i = 1; i <= 6; ++i) {
for(j = 0; j < i; ++j)

    printf("%d", j);
    printf("\n");

 }

return(0);

}

答案有一些研究努力,很清楚;对于研究同一主题的人来说可能是有用的,所以它无缘无故被低估了。

5 个答案:

答案 0 :(得分:1)

问题中有一条线索:“写出嵌套循环”。数数,然后倒计时。

答案 1 :(得分:1)

由于这是一个练习,我只会暗示一个解决方案,以便了解你真的应该自己做。

  1. for循环可以反过来。
  2. 您可以拥有多个嵌套循环。

答案 2 :(得分:1)

您实际上可以使用单个嵌套循环执行此操作:

#include <stdio.h>

int getLength(int i) {
    /* Since this is homework, I'll leave this for you to complete. */
    if (i < ?) return ?;
    else return ?;
}

int main(void) {
    for(int i = 0; i < 11; ++i) {
        int length = getLength(i);
        for(int j = 0; j < length; ++j) {
             printf("%d", j);
        }
        printf("\n");
    }

    return 0;
}

答案 3 :(得分:0)

for(int i=0;i<=10;i++)
{
    if(i<=5)
    {
        for(int k=0;k<=i;k++)

        printf("%d",k);
    }
    else if(i>5)
    {
        for(int j=0;j<=(10-i);j++)
            printf("%d",j);
    }
    printf("\n");
}

我希望这会有所帮助

这是默认答案

答案 4 :(得分:0)

我认为用户应该告诉打印哪个号码。所以我的代码有点复杂。

包括

包括

int main(void) {

   int rows;
   int counter;
   int backward;
   int forward;

printf("Till which number you want to print??");
scanf("%d",&rows);
for(counter=0;counter<=rows;counter++)
    {for(forward=0;forward<=counter;forward++)
        printf("%d",forward);
            printf("\n");
        }

for(counter=rows;counter>=0;counter--)
            {for(backward=0;backward<=counter;backward++)
        printf("%d",backward);
                printf("\n");    
        }

getch();
return 0;

}

谢谢你!