左左右学堂 · 课程目录

第15期 一节课讲明白c语言中的循环(上)

观看B站原视频 · 文稿与高清画面

helllo,小伙伴们,大家好。这里是左左右。这期视频我们讲c语言基础中的循环语句。首先,来写一下我们的main函数,之前函数那一期视频我们讲过。函数前面的数据类型要和返回值的数据类型保持一致。由于main函数前面有个int,这里在main函数的结尾给它返回一个整数0。

这就是main函数的一个标准的写法,以后大家都按这个去写。接着,定义一个字符串,还是我们熟悉的hello vscode。这里要求将这个字符串中的每一个字符单独打印出来。并把其对应的asc码值同时打印出来。这个字符串一共有12个字符,空格也属于一个字符。按我们之前学过的内容是不是要这要写?

视频画面 05:06.7
视频画面 05:06.7 · 1080P 原图 · 查看对应视频

点击运行,是不是没有问题?这样写看上去有点太冗长了,那有没有更简单的写法呢?答案是有的,这里就引入我们这期视频要讲解的主要内容了。就是我们在视频开头提到的c语言的循环语句。在讲c语言的循环语句前,先讲一下vscode是如何实现程序调试的?调试在我们c语言的编写过程中是十分重要的。

视频画面 01:32.4
视频画面 01:32.4 · 1080P 原图 · 查看对应视频

它可以看到我们程序每一步的执行过程。好的,我们来设置一下。首先,点击这个图标。点击运行和调试。接着,点击创建launch.json文件这里。然后,点GDB这个,接着点击GDB启动这个选项。这时文件就自动生成了。这里有两个地方需要改一下。第一个地方是program这里,这里要填入的是工作区路径,也就是我们创建的test.c文件所在的路径。

第二个就是下面这个路径,就是前面视频配置环境变量那个路径。后面加一个gdb.exe。这里把反斜杠都写成两个,起到一个转义的作用,不然会报错。调试需要配置的文件我们就写好了,我也会把写好的json文件放到我们的资料包。供大家来参考。回到.c文件接着来写我们的循环语句。

首先,定义一个整数i,初始值设为0。先用whlie循环来写,这里的i++和 i=i+1等价。while小括号里的条件只要满足,大括号里的代码就会一直循环执行下去。这就像我们听音乐时设置的单曲循环。歌曲从第一个句歌词开始播放,一直到最后一句歌词。播放完成后接着从第一句歌词开始播放。

视频画面 03:19.5
视频画面 03:19.5 · 1080P 原图 · 查看对应视频

一直循环下去,除非手动停止。只不过在c语言中不是一句句的歌词,而是一行行的代码。接着,我们在序号前面点击这个小红点,给程序添加一个断点。断点的意思就是程序执行到这里就停下来,进入调试模式。接着,点这个绿色的小三角。在调试界面可以看到我们前面定义的字符串str和整数i。这里显示的字符串成员数是13,前面我们数的不是12吗?

我们点开看一下,是不是发现最后一位是asc码值为0的结束符?是不是和我们前面讲的数组那一期视频对上了?接着,我们点击单步调试,程序就开始一步一步执行了。从中我们可以看出,当i等于12时,while里的条件就不满足了。就跳出while循环了。接着,我们讲一下break和continue这两个关键字。

先说break,while中遇到break就跳出循环了,而continue只是跳过当次循环后面的代码,从头开始执行。break这就像单曲循环听烦了,直接关掉了,而continue只是听了一半后面的不想听了,从头开始再听。这样说大家可能听的云里雾里的,我们看代码。现在如果我们只想输出hello中的每个字符和对应的asc码值。

视频画面 06:00.3
视频画面 06:00.3 · 1080P 原图 · 查看对应视频

这是只需要加个判断就可以了,当数组成员为空格时。用break关键字跳出while循环。点击运行,是不是结果和我们想的一样?如果我们不想输出字符串中‘o’该怎么办呢?这里只需将判断里的空格换成字符o,将break换成continue就可以了。点击运行,是不是出问题了,程序卡死了?

视频画面 06:53.8
视频画面 06:53.8 · 1080P 原图 · 查看对应视频

我们点击停止,来调试代码。调试过程中我们不难发现,当判断成立时,执行到continue后面的代码就被跳过了。i++不会被执行,while小括号里的条件一直不会被满足。就进入一个死循环了。为了能得到我们想要的输出结果,只能将i++放到continue的前面。由于第一次循环时i就等于1了 ,而数组元素的索引是从零开始的。

所以,打印时要打印i-1。运行一下,是不是没有问题?这里还有一点要注意,在c语言中整数0代表假,所有非零的整数代表真,我们熟悉的while(1)中1为真,表示条件一直满足。除非遇到break才会跳出,这在c语言中也叫死循环。这期视频要比前几期c语言基础稍有难度。大家一定要动手写代码,听视频和自己写完全是两回事。

在自己写的过程中遇到问题边改边调试,从中能学到很多。好的,今天的视频就到这里。您的点赞、收藏、和关注是我更新下去的最大动力。我们下期见。