计算机萌新的成长历程——初识C语言11

大家好,在上一篇中,我分享了关于选择语句的相关知识点,并通过测试以及查阅资料尝试着用if……else语句编写了比较三个数大小的代码,今天我将分享关于循环语句的相关知识点以及自己对于这些知识点的理解。

循环语句

循环也就是重复的意思,重复的去做一件事,这里我借助鹏哥视频中所举的例子:

计算机萌新的成长历程——初识C语言11_跳出循环

从这张流程图我们可以知道,在加入比特之后我开始买彩票,如果没有中彩票,我就老实学习,第二天,我发现我还是一只小菜鸟,然后我又去买彩票,又没中,我又去学习,就这样日复一日的重复着做买彩票和学习这两件事,突然有一天,我中了500万,直接走上人生巅峰,迎娶了白富美。或者,像往常一样,我还是没中,然后继续去学习,结果我变成了大牛,最终走向人生巅峰,迎娶了白富美。

那如果借助计算机,我们又应该如何将这个流程给表示出来呢?这里有下面三种方式:

1.while语句      2.for语句       3.do……while语句

这里我们简单介绍一下while语句:

代码语言:javascript
复制
//while语句结构
while(判断条件)//条件成立则继续循环,直到条件不成立
{
执行命令1;
}
不满足条件执行命令2;

这里我们把上述的内容稍微调整一下,加入比特后,我要学习敲代码,每天敲一行代码,等到我敲到20000行有效代码后,我就能收到好offer,我就能迎娶白富美。下面我们把这些内容转化成代码:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1//用来解决在VS编译器中对于scanf、strcpy、strlen、strcat……这些C语言提供的不安全的库函数报错的问题

#include <stdio.h>
#include<string.h>//这里在使用string相关的库函数如:strlen、strcpy、strcat...等函数时需要引用此头文件。
int main()
{
int line = 0;
printf("加入比特\n");
printf("我要敲代码\n");
while (line < 20000)
{
printf("敲一行代码:%d\n", line);
line++;
}
printf("好offer\n");
printf("迎娶白富美\n");
return 0;
}

下面我先展示一下如果while()后面多加了“;”运行会是什么结果:

计算机萌新的成长历程——初识C语言11_while语句_02

大家可以看到,这里程序只能运行前面练个指令,while之后的内容无法运行,所以大家一定要注意while后面不要加“;”,接下来我们看一下正常运行的结果如何:

计算机萌新的成长历程——初识C语言11_跳出循环_03

这里我们可以看到,它在19999就跳出循环了,这里我们就可以知道,while语句在进行一次循环后它会重新来判断条件,满足条件时继续走循环的内容,直到不满足条件,这里是当line=19999时它满足条件所以继续打印敲一行代码:19999,打印完后执行line++的命令,这时line变成了20000,然后他再去判断条件,这时,line已经不满足line<20000这个条件了,所以他就跳出循环,执行后面的命令,这里只需要把while(line<20000)改成while(line<=20000)或者while(line<20001)它都能打印到敲一行代码:20000然后再跳出循环,这里我就不做展示了,大家可以自己去试一下。

下面我们尝试着用for语句来编写一下,在编写前我们先来了解一下for语句:

代码语言:javascript
复制
//for语句结构
for(变量=开始值; 变量 <= 结束值; 变量=变量+步进值)
{
执行指令1;
}
结束循环后执行指令2;

代码如下:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

int main()
{
printf("加入比特\n");
for (int line = 0; line <= 20000; line++)
//int line = 0——定义变量,并将0赋值给变量
//line <= 20000——当line运行到20001时,循环结束
//line++——line从0开始执行,完成一次指令后,line+1
{
printf("我要敲代码:%d\n", line);
}
printf("好offer\n");
printf("迎娶白富美\n");
return 0;
}

运行结果如下:

计算机萌新的成长历程——初识C语言11_while语句_04

正常运行,这里我来说明一下自己对for语句的见解:

1.在for语句的括号总,我们有三个内容需要填入,第一个是变量,这里我自己试验过,定义变量时在括号外定义或者在括号内定义都是没问题的,代码如下:

代码语言:javascript
复制
int a = 0;
for(a;;)
或者
for(int a = 0;;)

2.第二个判断循环的条件,比如我要运行3次,那我可以表述为两种:

代码语言:javascript
复制
for(a ; a <=3 ;)
或者
for(a ; a < 4 ;)

3.第三个是变量的循环方式,目前我查询到的资料是i++和++i这两种,如果有其它的类型,以后我会再分享:

代码语言:javascript
复制
for(a ; a <= 3 ; a++)
或者
for(a ; a <= 3 ; ++a)

这里经过测试发现,两种写法打印出来的值相同,如下图所示:

计算机萌新的成长历程——初识C语言11_while语句_05
计算机萌新的成长历程——初识C语言11_while语句_06

这里我也搜索了相关资料——利用for循环深入理解i++和++i,有兴趣的朋友可以翻阅一下,这里给大家总结一下具体内容:

代码语言:javascript
复制
int i = 0;
//i++的执行流程——i=0—>i+1—>i'=i+1
//++i的执行流程——i=0+1—>i'=i—>i'

由此可以得出结论i++和++i它们只是在执行的过程不相同,但是结果是相同的,i++输入值为初始值,而++i输入值为初始值+1。有点绕,那我们再简单的理解为i++就好比人类的成长,从无行动能力—>会爬—>会走—>会跑—>会跳;而++i就好比哪吒,一出生就会走会跑会跳了。

最后我们再尝试着用do……while语句来编写一下,在编写前我们先了解一下do……while语句:

代码语言:javascript
复制
//do……while语句结构
do
{
执行指令1
}while(判断条件);
不满足条件时执行指令2

编写代码如下:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

int main()
{
int line = 0;
printf("加入比特\n");
do
{
printf("敲一行代码:%d\n", line);
line++;
} while (line <= 20000);
printf("好offer\n");
printf("迎娶白富美\n");
return 0;
}

接下来咱们运行一下看看:

计算机萌新的成长历程——初识C语言11_while语句_07

到这里我们可以看到,三种循环语句都可以来编写一个循环内容,只不过三种循环语句的编写方式有点差异:

1.循环的方式不同——while先判断条件,若满足—>执行命令—>判断条件……若不满足则跳出循环;for先指定对象,再判断对象是否满足条件,若满足—>执行命令—>判断条件……若不满足,跳出循环;do……while先执行命令,再判断条件,满足继续执行命令,不满足跳出循环

2.结构不同——

代码语言:javascript
复制
//while语句结构
while(判断条件)//条件成立则继续循环,直到条件不成立
{
执行命令1;
}
不满足条件执行命令2;
代码语言:javascript
复制
//for语句结构
for(变量=开始值; 变量 <= 结束值; 变量=变量+步进值)
{
执行指令1;
}
结束循环后执行指令2;
代码语言:javascript
复制
//do……while语句结构
do
{
执行指令1
}while(判断条件)
不满足条件时执行指令2

3.变量的递进方式位置不同——while的变量递进放在while后面的循环代码块内,for的变量递进放在条件括号内,do……while的变量递进放在do和while中间的循环代码块内。

最后我们来总结一下这三种循环语句:

1.while语句,在有以及定义的变量的前提先,先判断变量是否满足条件,若满足,则开始执行指令—>变量递进(变量递进的方式作为需要执行的命令放在代码块内)—>判断条件……这样停的重复这个过程,直到不满足条件为止;

2.for语句,可以直接在括号内定义变量,或指明以及被定义过的变量,判断变量是否满足条件,若满足,则开始执行指令—>变量递进(循环递进的方式作为前提条件放入括号内)—>判断条件……直到不满足条件为止;

3.do……while语句,先执行命令(变量递进放在需要执行命令的代码块内),再判断条件,若满足,则继续执行命令—>判断条件……直到不满足条件为止。

今天的循环语句内容分享就到这里,如果能够帮到各位朋友更好的理解这些语句,那这篇文章也就完成了它的任务,接下来随着学习的深入,我会继续分享自己在学习过程中的感受。感谢大家的翻阅,咱们下一篇见。