教育改变生活

标题: 【C语言】for循环嵌套应用示例 [打印本页]

作者: wander    时间: 2025-2-12 15:48
标题: 【C语言】for循环嵌套应用示例
与单个 for 循环相比,多个 for 循环的嵌套在逻辑上更复杂一点,但并不难懂。直接给大家写一个程序:

输出结果是:
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮

其实,多层 for 循环嵌套的执行过程与单个 for 循环的执行过程是一模一样的。多层 for 循环的嵌套只不过是将单个 for 循环大括号中的“语句”换成了 for 循环而已。

下面看看上面程序中两个 for 循环嵌套是怎么执行的。
1) 首先求解表达式 1,即给变量 i 赋初值,i=0;表达式 1 只执行这一次,下面都不会再执行了。

2) 然后求解表达式 2,即 0<4 成立,则执行 for 循环中的内嵌语句:

首先 “printf("问世间情是何物,直教生死相许\n")”,然后执行内部 for 循环,对这个 for 循环再次应用“单个 for 循环”的执行过程:3) 然后执行表达式 3,变量 i 自加 1,即变量 i 由 0 变为 1。

4) 然后再求解表达式 2……
……

就这样一直循环下去,直到外层循环结束,整个循环才结束。

总之,不管是单个 for 循环还是多个 for 循环的嵌套,它们的执行过程是一样的。只不过如果是“多个 for 循环的嵌套”,则其执行过程也是嵌套的。
for循环嵌套编程练习1) 求出 1!+2!+3!+…+n!的和。

对于这个程序前面用一个for编程也可以实现,但是逻辑性太强,现在再用for循环嵌套编程实现一下:

输出结果是:
请输入n的值:10
sum = 4037913

我们看到 n 的值仅为 10 结果就这么大,要再大点 long 类型肯定是存放不了的。此外,有人可能会纠结这样的问题,程序开头定义那么多变量,可是我写的时候怎么知道后面要用到哪些变量呢?其实,这些变量都不是刚开始写程序的时候就定义的,大多数情况下都是“若刚开始知道定义哪些变量那么就定义上,如果不知道那就不定义,等到后面需要用再回到前面进行定义”,这才是正常的逻辑。

2) 求出用 50元、20元 和 10元换算 100元有几种方式?

思路:用穷举法, 将所有可能的情况都列出来, 用 for 循环可以实现穷举
分析:100 元单用 50 换算, 最多需要两张;用 20 元换算, 最多需要五张;用 10 元换算最多需要十张

输出结果是:
0  0  10
0  1  8
0  2  6
0  3  4
0  4  2
0  5  0
1  0  5
1  1  3
1  2  1
2  0  0

3) “百钱买百鸡”是中国古代一个著名的枚举法题目。所谓枚举就是将所有可能的情况全部列出来的意思。for 循环嵌套是实现枚举的一种手段,上面的换算也是一种枚举。假设公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元 3 只,现在给你 100 元,要你买回 100 只鸡,求出公鸡、母鸡、小鸡分别为多少只。

输出结果是:
x = 0, y = 25, z = 75
x = 4, y = 18, z = 78
x = 8, y = 11, z = 81
x = 12, y = 4, z = 84





欢迎光临 教育改变生活 (http://bbs.goldoar.com/) Powered by Discuz! X3.2