与编程初见

从9.14开学到现在接触了算是半年的c++,虽未旷课,但上课经常打瞌睡,吾乃学渣一个,谈谈自己对for的理解,有不足之处还请各路大神指点。

For循环从学的时候就感觉不是很理解,之后通过编小程序练习,对其理解才逐渐明朗一些。但是还是不太清晰(这个通过编程序是自己可以发现自己的薄弱)所以就上网搜了一下(我不是一个习惯上网搜东西的人)发现大家的见解真是丰富多彩、各有千秋。我就记住了两个:

1、双层for像时钟上的时针和分针,外层是时针,内层是分针,分针走一圈时针才走一格。这番见解真是形象啊!把分针看成内层for,分针走一圈相当于内for循环完毕。时针走一格相当于外for循环一次。让我很容易的明白了双层for的运行机制:每次外循环的开始都必须以内循环的彻底完成为条件,这句话也意味着内循环优先。

2、双层for乃是一个二维数组。不知是哪位高人的见解竟把双层for和二维数组联系起来了,妙也!每个双层for就像每个二维数组一样,运行内for即遍历数组的一行的每一列。运行外for就是遍历数组的每一行的过程。对呀,只能遍历完一行的每一列(内for循环完成)才能换到下一行(外for进行下一次循环),真好。

通过看大家的说法我才意识到搜索的意义。我之所以不好上网百度是因为我不喜欢遇到一个问题就上网百度结果,这样得到的结果虽然是看懂了但是思维的过程没有得到训练,因此遇到新问题很难做到举一反三(谨代表自己),所以我不习惯百度。但是经过这次,我发现不能太极端,既不能不百度也不能只百度,要有节制的运用网上资源。

废话少说,还是回到正题。说到对for的理解加深那是前10天左右。我做了一道蓝桥杯的题是一个abcde相乘的问题,用的是穷举法。那也是我用的最深的for,5层。之前对for的理解一直停留在单层和双层,做完这道题后发现把for的层数更加普遍化,一层二层三层五层,,,n层都是一样的运行机制。这道题对我来说最大的阻碍就是我刚开始老是把外层看做是最高位,内层逐渐像最低位靠拢。我就认定了最高位就一定在最外层的for,最低位一定在最内层的for。这种想法主要是之前我看过一个“水仙花数”的3层for的解决方法,在那里面就是用最外层的for作为百位,中层作为十位,内层作为个位,因此当初我没加思索就记住了这个3层for且认为这样的顺序是不能改变的。现在解决这个蓝桥杯的题就遇到了这个麻烦。我觉得不对,于是就把原来的水仙花程序按照不是最外层最高位的顺序修改了原来的程序,然后运行发现竟然也是可以的,这时我知道我对for的理解又深入了一点。并不是按照固定顺序排列的,之后我又想为什么呢?既然有多种方法为什么一定要这样排层与位的关系呢?想了一会我突然想到老师上课好像说过,内循环变化频率快于外循环,所以内循环尽量是长的多的循环,外循环尽量是小的短的循环,这主要考虑到程序时间的优越性。因此恍然大悟,因为个位变化频率最快。个位变化十次,十位变换一次,个位变化100次百位变话一次,。。。。。。。。

有理解不对之处,请各位斧正啊。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 13:10:43

与编程初见的相关文章

编程志其一 初见

一年之前(2016.7),笔者还作为应用物理系的本科生,一次机会让我再次接触到了编程的世界.而要说起一切的开端,则要追溯到我小时候. 在我很小的时候,我们家就有了电脑.我爸是机电专业的,懂不少电脑知识,同时他也很喜欢玩游戏,耳濡目染我也变得对计算机喜欢了起来. 三岁(1998.X)那年,我第一次玩上了电脑游戏,大概是一个叫做三角洲的游戏.游戏里需要控制四个人去完成任务,任务的途中有很多敌人,被敌人发现了就有危险.同时我们这边也有很多各式各样的武器.任务中的敌人有一些可以通过暗杀手段杀死,有一些则

【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. "很不错,掌声给自己". 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux

Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 协议和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实

The Swift Programming Language 中文版---Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 接口和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印"Hello, world".在 Swift 中,可以用

7.有人认为,“中文编程”是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么?

初见“银弹”这个词,还不是很确定它的意思,通过搜索,得知银弹这个词常被用做致命武器的代言词,被比喻为具有极端有效性的解决方法,作为杀手锏,最强杀招.王牌等的代称. 那么要回答“中文编程”是否是解决中国程序员编程效率的一个“银弹”这个问题,首先要了解目前阻碍中国程序员编程效率提高的桎梏是什么,然后才能根据“中文编程”是否能够冲破这些桎梏来判断它是否是“银弹”. 下面我来谈谈我认为的目前阻碍编程效率提高的三大桎梏,或说是对于提高编程效率极为重要的但却很难具备的三种能力. 1.编程人员要判断问题在什么

Java代理机制之初见(理解及实现)

都知道Java中的Spring,有一重要思想:AOP,也就是Java的动态代理机制.初见代理这个名词时,觉得生活中常有代理的这一说法. 那么,在Java中,代理又是什么呢?它又是如何实现的?实现后是干什么的? 其实啊,Java中的代理也就是生活中代理的意思,我认为,在Java中,代理就是帮助类实现一些修改的动作. 也就是说,用代理类来修改已经存在的类.那么,问题又来了,为何这样做呢?在存在的类上修改不就完事了吗? 首先,这种想法时错的,Java中,已经编译好的类不要随随便便的修改,容易造成整个工

不负初见

相识-欣喜又忧虑 上篇 在未真正接触到软件工程这门课之前,我以为的软件工程会让我们做出一个真正的软件.比如像淘宝,QQ之类的实用又炫酷的APP,这个想法令我对它无限憧憬.甚至想好了,如果做出来后一定要在家人面前显摆一遍.但同时又知道自己的水平不高,又害怕完成不了这个课程目标而忧心.就这样带着一面憧憬,一面胆怯的心情,我选了这门课程. 中篇 终于到了这门课的第一节,老师给我们讲述的又让我的欣喜加了几分,他告诉我们这门课的目标就是让我们更好的开发软件.我心里乐开了花,以为这门课程结束我们一定能够开发

异常笔记--java编程思想

开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出异常.抛出异常后发生的几件事: 1.在堆上创建异常对象. 2.当前的执行路径中止                                          3. 当前环境抛出异常对象的引用.                                         4. 异常处理机制接

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要