网站首页 > 基础教程 正文
相信点开这篇文章的读者,应该是学习了C语言或者C++。
在大家初学C语言时,都知道C语言有32个关键词,9种控制语句,今天我们就来学习一下9种控制语句中的嵌套for循环。
学习嵌套for循环,那么首先我们需要知道的是,在2层的for循环中,假设我们定义循环变量i和j,那么我们通常我们认为,循环次数就应该是i*j次。让我们来看一个例子:
加群466572167,有学习资料
在这个简单的for循环中,很明显我们通过i变量和j变量来控制打印*号的个数。其中内层循环j的值从0开始到5结束,循环次数为6次。简而言之,就是循环打印6个*号。然后跳出内层循环之后换行,回到外层for循环。同理,外层循环的循环次数也应该为6次。所以在这段程序中,(连续打印6个*号之后换行)这件事情一共做了6次。
上面的情况是属于,循环变量i和j各司其职的情况,那么如果i和j之间如果有关系的情况呢?我们在来看几个常见的题目。
题1.请使用*号打印出以下形状(请注意每一行的*号个数):
加群466572167,有学习资料
(1) (2) (3) (4)
细心的各位会发现,这个题目,跟大家学习中遇到的等腰三角形的情况并不完全一样,其中:(1)的*号个数为1,2,3,4,5,6;(2)的*号个数为1,3,5,7,9,11;(3)的*号个数为2,4,6,8,10,12;(4)的*号个数为1,2,3,5,7,9;那么我们一个一个来看:
(1)*号个数为1,2,3,4,5,6;
加群466572167,有学习资料
这个题目很简单。我们知道i控制打印的行数,j控制打印的列数,且都从0开始控制,那么第0行打印1个,第1行打印2个,第2行打印3个,以此类推,j的循环次数总是要比i大1(注意这里是j的循环次数而不是j)。所以在内层循环中让j<i+1就可以了。
(2)*号个数为1,3,5,7,9,11;
加群466572167,有学习资料
这个题目跟大家的等腰三角形就差不多了。我甚至猜测很多人都会去强行记忆其中的2*i+1这个关系(被猜中的各位请面壁5分钟)。这里我们先来看另一题。
有如下一个*号组成的图形和一段实现该程序的代码,请在____上填空。
加群466572167,有学习资料
答案应该是-2*i+138。这个答案并不是每一位同学都能得到,所以,学习编程,不仅要知其然还要知其所以然。
我们先回到(2)这个题目中,外层for循环中i控制行数为6行没有问题,那么在内层for循环中,j控制的循环次数分别为:1,3,5,7,9,11。由此得到如下关系:
i的值: 0 1 2 3 4 5
j的循环次数: 1 3 5 7 9 11
仔细观察不难发现,这与高中数学所讲的等差数列是一模一样的。那么等差数列中有一个通项公式:
加群466572167,有学习资料
其中d是等差数列的等差。那么这个时候就相当于:
加群466572167,有学习资料
而i就相当于下标,我们把这些数字带入公式中来看一下:
加群466572167,有学习资料
2*i+1是不是我们需要的答案呢?
我们回到刚才的填空题,需要注意的是,j的循环次数是1、3、5、7、9、11,但是j的初始值是139,而且j在不断的自减。所以对应关系应该是:
i的值: 0 1 2 3 4 5
j的循环次数: 1 3 5 7 9 11
j要大于的值:138 136 134 132 130 128
同样的代入公式:
加群466572167,有学习资料
是不是得到了我们想要的答案呢?
(3)*号个数为2,4,6,8,10,12;
有了上面的讲解,我相信下面的就会更加简单了。
加群466572167,有学习资料
(4)*号个数为1,2,3,5,7,9;
这个题目出现了不是等差数列的情况,也没有问题,我们只需要把123跟579分开,就变成了两个等差数列,大家都想到了吗?
加群466572167,有学习资料
好!说到这里,那等腰三角形其实就是打印空格与*号的组合。
加群466572167,有学习资料
更多的图形,交给大家自己去尝试,可以加小编的群466572167,有学习资料,可以交流学习,包括在后面的排序算法中的for循环跟这也是一个道理,希望能帮助到大家。小编就暂且说到这,这些都是自己的总结,希望可以帮到大家。
猜你喜欢
- 2024-10-19 C语言中的`for`关键字是一种循环控制结构
- 2024-10-19 写给所有人的编程思维-循环篇(for循环)
- 2024-10-19 在PLC编程中,循环语句FOR和WHILE怎么选?
- 2024-10-19 C语言for循环基本流程 c语言for循环程序
- 2024-10-19 C++20尝鲜:基于范围for c++ 范围for
- 2024-10-19 BAT批处理命令之for bat文件中for用法
- 2024-10-19 C语言for循环解析 c语言中for循环
- 2024-10-19 Java Web实战篇:增强for循环实现原理及for循环实战性能优化
- 2024-10-19 1分钟教你学会for循环 for循环教程
- 2024-10-19 C++阶乘:一个数的阶乘和一个范围的阶乘之和
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)