怎样看懂循环语句中又内嵌循环

——初学者视角

 

经过一周的C#视频教学,让我印象最深就是for循环中又内嵌for循环,刚开始接触到这个新的流程循环语句,都很懵逼了,更何况是循环中内嵌另一个循环。经过不断地解读,终于是看懂了,现在我就将我的思路过程分享出来。

一、for循环

1.for的代码书写格式

for(表达式1;循环条件;表达式2)

{

循环体

}

2.for执行过程

(1)首先运行表达式1;

(2)其次判断循环条件是否为真,如果为真,则执行循环体,执行完后再运行表达式2,接着再判断循环条件……

(3)直到循环条件为假才会结束。

PS:不执行循环体的话,那么表达式2也不会执行

二、for中内嵌for循环

内嵌for循环语句其实就是外面for循环的循环体。

1.for内嵌for的代码书写格式

for(表达式1;循环条件a;表达式2)

{

for(表达式3;循环条件b;表达式4)

{

循环体

}

}

PS:这里注意for循环中声明的变量仅在整个for循环中有效,那么内嵌for循环中声明的变量,不能在外部for循环中使用。如果要使用,那么就需要在外部for中进行先声明变量,再在内嵌for中进行赋值。

2.for内嵌for的执行过程

(1)首先还是运行外部for的表达式1;

(2)其次判断循环条件a是否为真,如果为真,则执行内嵌for;

(3)这时执行内嵌for循环,先运行表达式3,再判断循环条件b是否为真,如果为真,则执行循环体,执行完后再运行表达式4,接着再判断循环条件b……如果为假,就结束内嵌for

(4)执行完内嵌for后再运行表达式2,接着再判断循环条件a是否为真,如果为真,则执行内嵌for循环,周而复始。如果为假,直接结束整个for内嵌for流程

三、for内嵌for示例

看了以上的理论知识字面上的理解,我们需要通过示例来进一步巩固,比较经典的案例就是交换排序

如:使用任意的排序算法对数组进行排序,排序后,重新输出数组内容

           

//声明int类型的nums数组
            int[] nums;
            //交换排序
            for (int i = 0; i < nums.Length - 1; i++)
            {
                //在 i-(nums.Length-1) 范围内,将该范围内最小的数字提到下标i的位置
                for (int j = i + 1; j < nums.Length; j++)
                {
                    //将nums[i] 和 nums[j]进行比较大小
                    if (nums[i] > nums[j])
                    {
                        //如果nums[i] > nums[j],那么进行赋值交换,实现了小的在前,大的在后,形成升序排序
                        int temp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = temp;
                    }
                }
            }
 
            //重新输出
            for (int i = 0; i < nums.Length; i++)
            {
                Console.Write(nums[i] + "  ");
            }

 

最后,希望大家能从我分享的一点经验中,收获更多,如果错误之处,希望大神们多多指点,谢谢