所谓for语句的嵌套就是多层for循环的使用,。
举个二维数组赋值的例子,
int
a[3][4];
//定义一个3行4列的二维数组。
int
i;
//用来控制行
int
j;
//用来控制列
int
tmp=1;
for(i=0;i<3;i++)。
//该循环就是第一层循环,用来控制行号。
for(j=0;i<4;j++)。
//该循环就是第二层循环,用来控制列号。
a[i][j]=tmp++;
//到这里就实现了二维数组的赋值操作。
用尽量简单的语句来给你解释,如有不理解可以再讨论:。
1.for循环的结构为
For
变量的初始值
To
变量的终止值
[变量的变化的步长(可有,也可省略,若省略默认步长为+1)]。
<循环体>
Next
变量值
2.了解了for循环的结构下面来看for循环的执行顺序:。
首先判断变量的值是否在变量的初始值与终止值之间,如果在则执行循环体中的语句,当循环体中的语句都执行完了之后然后再执行Next。
变量值这一句,这一句就是变量值安照变量的变化的步长改变它的值。
好了一次执行过程完毕了,它之所以称之为循环过程,是因为它是一个连续重复执行相同任务的过程,就是执行完一次过程之后,判断变量值是否在变量的初始值与终止值之间,如果在则继续执行循环体中的语句,如果不再了则For循环结构整体运行完毕,继续运行后面的语句(如果还有的话).。
3.了解了For循环语句执行的顺序,那么理解for循环的嵌套执行过程就不难了,for循环嵌套的实质实际上就是循环体中的语句又是一个循环体而已,因此按照for。
循环执行的顺序来分析,先判断最外边一层循环体的变量值是否在变量的初始值与终止值之间,如果在则执行循环体中的语句,即执行内部的for循环,此时程序进入到内部for循环中,此时暂时与外部没有任何联系了,成为一个单独的整体,从而内部for循环的执行过程也是一个for循环过程,也是先判断这个循环体的变量值是否在变量的初始值与终止值之间,如果在则执行他的循环体中的语句,如果不再了,则这个for运行结束,此时也就是最外层for循环的循环体运行完一次,此时再判断,再执行,如果变量值不在范围内了,就不执行了,两个for循环运行完毕.。
好了,解释完了,如有问题可以继续讨论。
循环的过程是先执行第一个大循环for(i=0;i<3;i++),此句中先给i赋值0,在判断条件i<3是否成立赋值后的i=0了,所以条件成立,成立则做下面一条语句,就是for(j=0;j<4;j++),同样这个循环还是先赋值j=0,在进行判断j<4是否成立,成立就再做下一句。
此时scanf语句后面已经没有语句了,所以程序就会跳上去到第二个循环中,即for(j=0;j<4;j++)这句话中,可能你会问为什么不是第一句。
(因为在循环嵌套中只有循环体执行完成所以的任务后才执行下面的语句,就是for(j=0;j<4;j++)。
要全部执行完毕才能执行后面的语句。即j<4条件为假时跳出)跳到for(j=0;j<4;j++)这个循环体以后。就会自动加一,就是执行j++(注:在这个for里面的j=0不再执行),这个赋值过程只在开始时执行。所以。
这个循环要执行到条件不满足时停止,即最后j的值要>=4.。
这样
这个循环就结束了。结束后又跳到了第一句。因为第二个for是包含在第一个for。
里的。只有第一个for
里包含的语句全部执行完后第一个for就再一次执行i++,i。
变成了2,判断条件i<3成立,就再执行下一句,所以下面的for(j=0;j<4;j++)又要再一次执行。执行完后就在回到第一个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跳出.
还有不懂再问
哈哈哈。你知道Excel表格吗?Excel表格中行和列知道吗?行用数字表示,列用字母表示。
如下
双for循环外层就是控制1-6的行,里面的for循环就是控制每行中的A-H。而每个单元格应该是个平面坐标系统,比如说 (1,A)就表示图中当前选中的第一个单元格,那么 (6,H)就表示右下角最后一个单元格。以上一共有6行*8列单元格。用js程序表示如下:
for(var row =0;row<6;row++){。
for(var col=0;col<8;col++){。
// 此处就可以拿到单元格。
console.log(row,col);。
}
举例一段代码:
main()
{
int i,j; 。
printf(i j\n); 。
for(i=0;i <2;i++) 。
for(j=0;j <3;j++) 。
printf(%d %d\n,i,j);。
1.执行第一个for,i=0,执行第二个for,j=0 1 2满足条件(j=0;j<3);。
2.执行第一个for(i++),i=1,执行第二个for,j=0 1 2满足条件(j=0;j<3);。
3.执行i++后i=2不满足i<2,结束...。
所以运行结果为:
i j
0 0
0 1
0 2
1 0
1 1
1 2