for(i=9; i>=1; i++)
for(j=1; j<=1; j--)
这两个for语句分别是怎么运行的? 可以解释一下吗 i和j分别代表什么呢
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的循环条件,循环结束。
好啦,差不多就这样,希望没有把你绕糊涂
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就是{ }内的程序。
i的初始值为9,判断条件是i>.=1,执行完程序后i=i+1,不满足循环条件时跳出for循环,不过我觉得你写错了吧,这样下去一定是无限制循环了。下面那个也一样