此时scanf语句后面已经没有语句了,所以程序就会跳上去到第二个循环中,即for(j=0j<4j++)这句话中,可能你会问为什么不是第一句
(因为在循环嵌套中只有循环体执行完成所以的任务后才执行下面的语句,就是for(j=0j<4j++)
要全部执行完毕才能执行后面的语句。即j<4条件为假时跳出)跳到for(j=0j<4j++)这个循环体以后。就会自动加一,就是执行j++(注:在这个for里面的j=0不再执行),这个赋值过程只在开始时执行。所以
j
这个循环要执行到条件不满足时停止,即最后j的值要>=4.。
这样
j
这个循环就结束了。结束后又跳到了第一句。因为第二个for是包含在第一个for
里的。只有第一个for
里包含的语句全部执行完后第一个for就再一次执行i++,i
变成了2,判断条件i<3成立,就再执行下一句,所以下面的for(j=0j<4j++)又要再一次执行。执行完后就在回到第一个for执行。
原理:
i=0,j
执行4次,给a[0][0],a[0][1],a[0][2],a[0][3]赋值
i=1,j
执行4次,给a[1][0],a[1][1],a[1][2],a[1][3]赋值
i=2,j
执行4次,给a[2][0],a[2][1],a[2][2],a[2][3]赋值
i=3跳出.
还有不懂再问
当两个或多个循环语句嵌套时,执行顺序按照一下步骤:
1、先判断最外层循环条件,若满足条件则进入第一层循环体。
2、进入第一层循环体后再次遇到循环语句进行第二层循环条件判断,若符合判断条件,进入第二层循环体。
3、若有更多层的循环体嵌套,依照上述方法依次判断是否进入循环体。
4、由内而外执行循环体操作,若只有两层循环体,则先执行内层循环体操作。
5、执行完第一次内循环体操作后,进行内循环体变量累加,再次执行内循环体操作,直到不满足进入内循环体条件。
6、执行外循环体操作。
7、在第一次外循环体操作完成后,回到步骤1,判断是否满足进入外循环体条件,若符合,再次依次执行上述步骤,直到不满足进入外循环体条件。
8、彻底退出嵌套循环操作。
扩展资料:
for循环是编程语言中一种开界的循环语句,而循环语句由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。C语言中的for循环如下
1、语句最简形式为:for( )
2、一般形式为:
for(单次表达式条件表达式末尾循环体)
{
中间循环体;
}
参考资料:百度百科-for循环语句
要弄懂这个问题首先要明确for语句的括号里面的东西都是什么意思:for(j
=
i
+
1
j
<
10
j++
)
第一个分号前的j
=
j
+
1这句的意思是初始化循环变量j。那啥叫循环变量呢?就是跟循环相关的变量,给定一个循环变量,再规定它的初始值和结束值,再规定好它每次循环增加(或减少)多少,那么你就可以控制这个循环会循环多少次了。
第一个分号和第二个分号之间的j
<
10这句的意思是规定了j的结束值。
最后一个分号之后的j++这句的意思是j每次增加1。
然后要弄懂for语句究竟是怎么执行的:
首先,执行第一句:j
=
i
+
1。打个比方,i现在是3,那么j
=
3
+
1,即j现在是4。(初始化循环变量)
然后,执行第二句:j
<
10。这个语句的作用是判断循环变量是否超过了结束值10,如果超过了就跳出这个循环,否则就接着执行下面的语句。现在j是4,所以不会结束这个循环。(判断循环变量)
然后,程序进入循环体,也就是每次循环都要干嘛,这才算真正进入了循环。(执行循环体)
最后,当运行完循环体中的语句后,执行j++。这句的作用是把循环变量j增加1,这样j就变成5了,如果没有这一句的话,那么j永远都是4,永远都小于10,,那么程序永远都不会跳出这个循环,这就变成死循环了。(改变循环变量)
好了,现在来回答你的问题:
当然不是你所说的那样,请注意/*2的那条for语句,里面循环变量j的初始化值是i+1,也就意味着这层循环究竟要循环多少次与i有关,而i是外层循环的循环变量,外层的循环每次都会i++,所以j每次的初始化值都不同,是1,2,3,4,5,6,7,8,9,10。所以相应地,内层循环每次循环的次数都不一样,是10-1=9,10-2=8,7,6,5,4,3,2,1,0。你可以把自己当做编译器按照for循环的执行顺序走一遍。
就是这样,你也可以在编程软件中单步调试看看。