问答详情
源自:4-13 使用for循环打印9×9乘法表

有点小问题不是很理解

for(i=9; i>=1; i++)

for(j=1; j<=1; j--)

这两个for语句分别是怎么运行的?  可以解释一下吗   i和j分别代表什么呢

提问者:super珊__ 2015-11-14 20:45

个回答

  • 顾玌
    2015-11-15 17:19:54
    已采纳

    for(i=9;i>=1;i--)   //i的初值为9,判断是否满足i>=1,满足即运行内部的程序,i++是内部程序执行完后做的
        {
           for(j=1;j<=i;j++)  /*可以先看成第一个for的内部程序,然后再把它当做一个for循环,单个的for循环你会吧*/
              {
                  result=i*j; //i=9,j=1,得出相应的result
                 printf("%d*%d=%d\t",i ,j,result); //输出9*1=9,j++,j=2,j<=i,条件满足,继续执行第二个for
              }
            printf("\n"); //第二个for的循环条件不满足即j>i时,循环结束,执行第一个for循环的换行命令
        }

    第二个for循环嵌在第一个for循环里面,要第二个for循环执行好了,才能够i--,然后继续执行,这个时候i=8,for循环条件通过,执行第二个for循环,第二个for循环执行跳出以后,再执行i--,这样循环往复的执行。

    第一次i=9

    j=1时输出    9*1=9

    j=2时输出    9*2=18

    j=3时输出    9*3=27

    j=4时输出    9*4=36

    j=5时输出    9*5=45

    j=6时输出    9*6=54

    j=7时输出    9*7=63

    j=8时输出    9*8=72

    j=9时输出    9*9=81

    当j=10时循环条件不满足,第二for循环结束,执行回车换行,i--

    第二次 i=8

    和上面的类似不过当j=9时循环条件j<=i不满足,循环结束,回车换行,i--

    下面就是一样的道理,知道i=0不满足i>=1的循环条件,循环结束。

    好啦,差不多就这样,希望没有把你绕糊涂

  • 顾玌
    2015-11-15 09:35:52

    for(i=9;i>=1;i--)
        for(j=1;j<=i;j++)

    觉得是这样的,第二个for套在第一个for里面,先执行第一个for,i=9;然后执行第二个for循环,第二个for循环条件不满足即j>i时跳出循环执行i--,此时i=8满足i>=1这个循环条件,再去执行第二个for循环,一直这样循环往复,直到i=0,无法满足循环条件时循环结束。你可以把第二个for当成第一个for的执行程序。就像for(i=0;i<10;i++){x=x+1;}一样的程序,第二个for就是{ }内的程序。

  • 顾玌
    2015-11-14 21:09:11

    i的初始值为9,判断条件是i>.=1,执行完程序后i=i+1,不满足循环条件时跳出for循环,不过我觉得你写错了吧,这样下去一定是无限制循环了。下面那个也一样