当前课程知识点:C语言程序设计(上) > 循环结构的程序设计(二) > 4.5 循环的嵌套 > 4.5.1 循环的嵌套——九九乘法表
大家好
我们这一周 还继续学习
循环程序的
循环结构的程序设计
前面我们已经讨论过了
构建循环的几个语句
while do while for
那么 我们举的应用例子
都是线性的问题
比如说一个数列
生成了一个数 两个数 一串的数
那么解决的是一串的
周而复始循环的问题
那么这周 我们继续讨论的是
循环的嵌套
那么 因为有嵌套
那么我们把break再来讨论
还有专门为循环设置的
continue这个语句
那么最后 我们会给大家比较多的应用
实例来说这些嵌套的循环
不嵌套的循环的一个实际应用
那么 首先我们看
什么是嵌套呢
嵌套是说
我们在一个循环里边
在嵌了一层循环
在嵌了一层循环
可以有两层 三层 n多层
那我们把这个叫做循环的嵌套
这是什么样的问题呢 给大家看一个例子
大家看见这个例子里边
不是一个线性的问题
它是一个面 一个平面
这个图案大家很熟悉 乘法九九表
有一行 两行 九行构成
那么 每一行上都是
一列 两列 n多列
那在这里边 大家看
为什么用循环来解决这个问题呢
是因为它每个数都有同一个规律
什么样的规律呢
比如说我们随便拿出来35这个数
大家看 35这个数它的行
是在第七行上
如果我们用
把这个第一行 第二行 到第九行
用i来表达这个变量
循环变量的话
那这个变量就是从一循环到九
那么当前我们说的35在第七行上
那么这个35在哪个列上呢
我们看 在第五列上
那这个35是怎么出来的呢
是行乘以列出来的35
那对每个数都有这样的特性
什么样的特性呢
行号乘上列号
就是你现在要打印的这个数
也就是说i*j
就是你这循环体里边要做的事情
而这件事情在循环体里的
那个体里边呢
我们看 打一行 打一行
那这个是循环了九次
从1到9
在这个每一行里边
我们不是打做一个数
不像我们前边生成数列的时候
就生成是一个数
而我们现在是什么呢
在每一行里边是
打一个数 打一个数 再打一个数
每一行打多少个数呢
我们看一下这块
是不是很有规律的
第一行打了一个
第二行打了两个 第三行打三个
那第i行打了i个
那最后一行一定是打了九个
那也就说我这个循环呢
对每一行上的循环呢
总是从第一个数开始
那么从第一个数开始
打一个 打一个 再打一个
一直打到多少呢 第i个
你是第几行就打到第几个
那么这块
我们是不是可以说
它的思路是什么样子呢
就说这里边的行控制
是小于等于1
<=9 >=1的
是从1开始到九循环
那么内循环里边呢
是什么样的一个规律呢
大家有没有看出来内循环里边
是不是一定也是>=1
但是<=谁
<=9吗
肯定不是了
小于等于行号
<=跟i有关的一个数
那就是<=i
打到第i行的时候
你的最大值就是打的i就可以了
不用打到9
不是一个常量 而是一个变量
这个变量 是谁
是外循环的循环控制变量i
是外循环的循环控制变量i
那这里边我们说
基本思路是不是这样
行号为i
列号呢我们用j表达
那每个位置上
就是在这里边
每一个位置上打的东西是同样的
都是行乘以列
所以打印谁呢
打印i*j
那么 各行上打多少个呢
总是从第一个打到第i个
那这样我们看一下这个程序
应该怎么写呢
我们来看一下打印九九表的这个例子
大家看这个程序里边前面都有了
核心句子是在这
打印谁呢
每一行的每一列上要打i*j
我们这块前边给了这么长串的东西是格式
说两个百分号d
从中间一个* 是说
现在要做j*i=
然后呢一个参数
这个参数是i*j的乘积
要打印这个
那一共把它打印多少行呢
当i和j相等的时候你就换行
不相等的时候呢
就不做这一句了
这个换行应该是在这样
当它相等的时候就换行
这是我们核心的内循环里要做的事
那现在看我们刚才说的
外循环for
应该是怎么样呢
现在这已经用了i了
外循环是i 内循环是j
所以我们外循环变量是i
i从1开始到谁呢
外循环变量<=9的话
终值 循环的终值是9
然后呢 i增量
这是外循环
是打一行
而这里边呢
这件事情是打了一个数
不是打了一行
那我们还要让它打一行
打一行在给个for
然后
内循环控制变量是j j=1
然后
j的表达式呢
是<=谁呢
等于我们刚才说的
第i行打i点 它的终值是i
j++
这是构建起来的 这是内循环
内循环
内循环
每循环一次完成了一行
然后外循环呢 完成了这么多行的打
九行的打印 我们运行一下看
打出来是这样
看上去是这样
那如果我们不想要前面这个等式了呢
这块要改什么
不想要前边的 我们刚才看见的
运行出来的
这个很
前面这个等式 我们只要一个结论的话
那是改什么呢 循环不用改
只改格式就可以了 不要它
然后前面这两个不要了
我们看运行出来的结果
就是我们看到的这个样子
可是 咱给的例子
前面还有一个
打一 打一个前面的 打一个
台头
1 2 3 4 5 6 7 8 9
如果要加那个的话应该在哪加呢
是不在这个地方
而那个地方加的是什么呢
是1—9
是不是我们也可以
用一个单层循环来做这件事情
比如说我这也把i用一下
i从1开始
然后
中间i++
在这里边做什么呢
也做一个printf
printf里边
这里边 我们现在需要打什么东西呢
打的是一个数字
打的是i的值 %d
那这个数字呢
就是i这个计数器
是不这样就可以了
不用换行 在同一行上
然后 我们还
前边呢还有一个是说
一行横线 我们先不管横线
如果打这个的话
那这一块的格式给多宽呢
咱底下给的是-4
那我前面也给
给这 给-4的格式
看看 运行一下
这块哪里不对了呢
分号落下了
可是刚才编译器没有告诉你那落下了
我们看这为什么多出来一个1呢
1是在哪呢
应该在 大家看是在哪
是在我们跳出循环以后
那个1为什么跟上面的这个行
我们再看一遍
这个1怎么跟1.....9搁在一起了呢
回去看一下什么原因呢
是我们这个for做完了以后
没有换行
那我们把换行这件事情
让它跳出这个循环以后
做一次换行
这就过来了 这是那个乘法九九表
这是表头
如果下边 我们还想打一条横线的话
你可以打一个字符串
你也可以把那个减号循环9次
如果你想把减号循环9次
怎么加呢 大家可以加在这试一下
那这里边最关键的
我们考虑外循环循环控制变量i
这是表头 这个循环是打了一个表头
而这个 是外循环
这个循环控制变量是i
内循环的循环控制变量是j
但是 这里边有一个j的终值是谁呢
是外循环的循环控制变量
这大概是循环嵌套里边最常用的
一种方式 是说什么呢
内循环的终值
会跟外循环的控制变量有关联
是一个有关的表达式
我们下面再看几个图形的打印的题
就会对这一点更有体会
就是说 内循环的循环的终值
会跟外循环的循环控制变量有关系
这个题就这样
大家下去可以还试一下别的格式
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html