当前课程知识点:高级语言程序设计 > 循环结构程序设计 > 4.5 何时需要用循环的嵌套 > 何时需要用循环的嵌套
大家好
前面学习了三种循环结构的语句
那么其实循环结构里面呢
它还涉及到循环的嵌套
那么循环的嵌套是什么样子呢
什么情况下会用到它呢
那么今天这一节课
我们就和大家一起来学习
什么时候需要用到循环的嵌套
这一节课我们用乘法口诀表
和大家一起来了解循环的嵌套
首先我们把这个乘法口诀表
它按照一个比较简单的形式
也就是一个方形的形式来输出
或者说矩形的形式来输出
那么后面我们再修改这个代码
按照三角形的形状输出
我们都知道乘法口诀表
它有9行
每一行有9列
这个时候就需要使用双重的循环
所谓双重的循环
就是外面有一层循环
内层也有个循环
那么外层的循环控制输出行
内层的循环输出列
是什么意思呢
就是说当我在外层的循环
输出一行的时候
这一行它有9个式子
那么这一行的9个式子
就相当于这1行的9列
所以在外层的输出一行的时候
我们在内层里面要把这一行的9列输出来
那么每1行的9列
这个样子该如何来实现呢
我们可以这样来做
就是我们首先
按一行一行的输出
我们先把外层的for
外层的循环搞清楚
那么在以行为主的这个形式循环输出
就可以写一个外层的循环控制语句
那么在循环控制语句里面
输出某一行的时候
大家都知道这1行有9列
那么在这1行里面的9个式子
输出的时候我们又要做循环
所以在以行为主序的这个外层的循环的时候
这个每1行里面再做这个内层的循环
也就是列循环
所以这个时候我们就用外层的for循环
来嵌套内层的for循环来实现
那么外层的控制
这个行的循环次数由整型变量i来控制
内层的循环次数
也就是控制某一行的这个列数
由整型变量j来控制
下面我们来看一下这个程序
这个程序其实写得非常的简洁
程序里面有一个主函数
在主函数里面
定义了i j两个变量
当然i j是这个for循环里面的控制变量
在循环的嵌套里面
我们写了两层for循环
这两层for循环我们怎么看呢
就是外层的这样一个for循环
变量i从1开始一直加到9
外层for循环
循环9次
所以这个i是表示
我们要做这个循环为主的
以行为主的循环
也就是说i等于1的时候
我们要输出第1行
i等于2的时候
我们要输出第2行
i等于3的时候输出第3行
所以i控制外层循环
我们再看当i等于某一个值
这个时候我们要进内层的for循环
比如说i等于1
那么内层的for循环呢
这个变量j从1开始
一直循环到9才结束
也就是说i等于1的时候
我输出的是第1行的9个式子
那么这第1行的9个式子
都要按照顺序来输出
这第1行的9个式子
怎么样输出呢
是以什么样的形式输出呢
其实我们都知道
乘法口诀表里面每一个式子
就是i乘以j等于一个值
这里的这个i
也就是第一行的每一个式子左边的这个数
i是一个乘数
它表示行号
右边的这个乘数j就表示列号
所以第一行的这个式子
它依次就是1×1=1
1×2=2
1×3=3
这样依次往后排列
到最后一个式子是1×9=9
按照这一个道理
里面的for循环执行完了
就要跳到外面的for循环里面
当外层的for循环i值等于2
就要输出第二行的式子
那么这第二行呢
它也是九个式子
第二行的式子依次是2×1=2
2×2=4
2×3=6
2×4=8等等
一直往后排列
排到最后一个式子是2×9=18
所以大家按照这样一种思路来看
我们这个嵌套的for循环
是可以把这样一个方形的
或者说这个矩形的乘法口诀表输出的
那么这个时候还要注意
在内层循环输出的时候
要用斜杠T水平制表符
来控制每个式子之间的间隔
因为式子与式子之间有一个间隔对齐
然后在每一行输出结束
我们要加一个换行符号
也就是一个\n
保证一行输出完了就要换行
所以呢这个printf \n
是这个外层的for循环里面的
并且它放在内层的for循环的外面
也就是说每一行输出完毕了就要换行
那么下一行呢
也是这个九个表达式
那么再循环输出再下一行
这个九个表达式
这就是我们看到一个矩形的九九乘法口诀表
那么大家知道
事实上乘法口诀表
它就是一个三角形的样式
对吧
所以现在我们这个三角形的乘法口诀表
怎么样实现呢
其实这个问题我们好解决
我们就把刚才的这个程序进行一些修改
得到我们想要的结果
我们这样来看
如果把它变成一个下三角形的乘法口诀表
那么这个下三角形的乘法口诀表
我们可以看一下每个表达式排列的这个规律
就是每一行输出到最后一个表达式
这个最后的表达式
它的行标和列标都是相同的
你比如第一行输出到最后是1×1=1
那么第二行从第一个表达式开始
输出到最后一个
那么第二行最后一个式子是2×2=4
那第三行输出到最后一个表达式是3×3=9
所以呢我们在这个嵌套的for语句里
一定要注意
就是这个内层的循环
开始的状态和刚才是相同的
但是结束的状态一定要注意
这个表达式右边的这一个元素是j
它一定要控制和i相等
它才能够表示这个内层的循环结束
那么外层的循环
外层的循环因为依然还是输出九行
所以外层的循环还是和前面一样的
所以我们的这个行
每一行的行标i从1一直循环到9
这是外层的循环
内层的for循环要注意
刚才说的内层的for循环这个j的值
从数值1开始
一直要循环到和i相等就结束
所以这个时候
我们可以把内层的for循环的这个j的终结值
改一下就可以了
所以这个程序修改之后
就得到了我们这个运行的这样一个结果
三角形的乘法口诀表
好除了下三角形的乘法口诀表
其实我们还有上三角形的乘法口诀表
那么这个上三角形的乘法口诀表
还是一样的
我们把前面的第一个程序拿过来
把其中的一些代码进行修改
也会得到上三角的口诀表
那么怎么改呢
我们来可以观察一下
还是来观察一下
这个上三角形乘法口诀表
它依然还是9行 对吧
我们按行主序来循环
所以这个外层的for循环
i还是从1开始一直到9
所以每次给i赋一个值
都代表着一行的输出
那么i等于某一个值
这一行怎么输出呢
这个时候我们就要注意到
内层的这个for循环
我们现在将内层的for循环进行修改
来看一下每一行输出的时候
这一行的表达式有什么特点
那么这一行有的行一开始就有表达式
但是有的行一开始没有表达式是空的
所以这个时候
我们要做这个输出水平制表符
水平制表符的个数
我们要控制一下
用j来控制
当j的初值等于1
j小于i的时候
输出水平制表符
也就是说一定要让j是小于i的情况下
才能够输出水平控制符
如果j大于等于i怎么样呢
j大于等于i的时候我们接下来往后看
这个内层的循环里面
接着写了一个for循环
j的值被i赋值
循环开始
开始输出这个表达式
这些表达式一直输出到什么时候
一直输出到这个表达式右边的这个乘数j等于9的时候
才把这一行的表达式输出完毕
所以输出一行之后
紧接着就要换行
嵌套for循环执行完
我们就得到这个上三角形的乘法口诀表
好这是我们通过一个乘法口诀表
这个矩形的乘法口诀表
下三角形的 上三角形的乘法口诀表
来给大家介绍了这样一个循环的嵌套
这一节课就到这里
谢谢大家
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用do-while语句实现循环
-4.4 用for语句实现循环
-- 用for语句实现循环
-4.4 用for语句实现循环--作业
-4.5 何时需要用循环的嵌套
-4.6 如何提前终止循环和提前结束本次循环
-习题--作业
-5.1 数组类型的引入
--数组类型的引入
-5.2 一维数组的定义和初始化
-5.3 一维数组的使用
--一维数组的使用
-5.4 二维数组的定义和初始化
-5.5 二维数组的使用
--二维数组的使用
-习题--作业
-6.1 什么是指针
--什么是指针
-6.2 指针类型及相关概念
-6.3 指针变量的定义、赋值与使用
-6.4 指针的运算
--指针的运算
-6.5 指针与一维数组
--指针与一维数组
-6.6 指针的指针
--指针的指针
-6.7 指针与二维数组
--指针与二维数组
-习题--作业
-7.1 为什么要自定义函数
-7.2 函数的定义
--函数的定义
-7.3 函数的调用
--函数的调用
-7.4 函数参数的传递
--函数参数的传递
-7.5 函数的嵌套调用和递归调用
-7.6 变量的作用域和存储类型
-习题--作业
-8.1 字符串的存储及输入输出
-8.2 系统字符串处理函数
-8.3 自定义字符串处理函数
-习题--作业
-9.1 结构体类型的定义
--结构体类型的定义
-9.2 结构体变量及指针变量的定义及使用
-9.3 结构体变量和指针变量作函数的参数
-9.4 结构体数组的定义和使用
-9.5 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业