在之前的第一篇语句中我们提到了控制语句,它分为分支语句,循环语句和跳转语句,那么这篇文章就以此展开学习。
一.顺序语句
就是你的代码从上到下一行一行执行,像我们前面两篇文章写的代码都是顺序语句。
二.分支语句
(1)什么是分支语句
也可以叫做选择语句,字面意思,就是叫电脑判断然后去选择执行哪一个代码。一般我们用if语句和switch语句。
(2)if语句
①基本形式
if (表达式)
语句
②代码演示
计算机判断如果为真(表达式成立)则执行if后面的语句,如果为假(表达式不成立),则if后面的语句不执行,我们用下面的代码来对比一下,相信你一看就能理解。


(3)if...else...
看了上面的代码,我们不禁产生了一个疑惑,那我要是想输出a不能被5整除该怎么办,这里我们就引入了else。
①基本形式
if(表达式)
语句1
else
语句2
②代码演示


③花括号的使用
if...else...只能控制一条语句,从下面的代码中我们可以看到“小孩不能进网吧”无论你的年龄是多少,他都会打印出来。


那么,我们要是想要打印出来第二条语句该怎么办?答案是使用花括号


④if的嵌套
比如我们要做一个小练习,0-8岁的是小孩,9到18岁的是青少年,18岁以上的是成年人,这时我们的if...else...最多判断两个,第三个我们怎么判断呢,答案是用if的嵌套,你只需要在花括号里面再加上if...else...就行



你看完这个代码,可能觉得这个代码有点繁琐,那么可以将它简化一下,也就是把花括号去掉,然后把第二个if写到第一个if后面,然后两个else对齐,如下图所示:

⑤else的就近选择
我们从下面这个代码一眼看出它打印的结果应该是456,但是结果是空的,这是因为else默认找离它最近的if,所以这个else跟的是第二个if,由于第一个if根本不满足,那么它后面的根本执行不了,所以输出为空。

要是想让这个else跟的是第一个if,其实也很简单,加上花括号就行了。

(4)关系操作符
①什么是关系操作符
关系操作符用来表达比较的符号,例如:>,<,==(是否等于),!=(不等于),>=(大于等于),<=(小于等于)。
②需要注意的点
我们在一个表达式里面要用到两个及以上关系操作符时,用&&连接。
举个例子:假如说我们要写这样一个程序,判断你输入的数如果在0-10之间就输出它在0-10之间,如果不在,就输出它不在0-10之间。

这是我们正确的代码,假如你想当然的把a >= 0 && a<=10换成0<=a<=10,会发生什么,我们来看下面代码的运行。

在这个代码中,执行的结果明显不符合我们的预期,这是因为计算机是这样执行的,拿咱们输入的33举例,33首先它是大于0的所以结果为真,(也就是1,上一篇文章我们提到过的bool类型中说到过,0表示假,非0表示真,我们计算机一般默认1),此时再拿1和10比较结果也是真,所以最后就得到了这样的结果。因此,我们在使用两个及以上关系操作符时,一定要记得用&&连接。
(5)条件操作符
①基本形式
表达式1 ?表达式2 :表达式3
这种形式的就叫做条件操作符,由于他有三个操作数,所以也可以叫做三目操作符。该操作符的意思是我的表达式1成立时,执行表达式2,否则执行表达式3,它在一些情况下,可以代替我们的if...else...,下面我们用一个例子来感受一下。(比较两个整数的值,并输出较大的那个数)
②代码演示
我们先用if..else来示例一下:

再用条件操作符来示例:

对比两段代码,我们很明显就可以看到条件操作符的优势。
(6)逻辑操作符
用来执行逻辑判断的符号。分为!(取反),&&(并且),||(或者)。
①!
我们用下面两段代码的对比来理解一下


我们先看右边的代码,a的值是0为假,那么!a就为真,所以它的输出结果就是“c语言太棒了”。再看右边的代码,a的值为真,那么!a的值就为假,所以输出结果为“python太棒了”。
②&&
这个操作符是与的意思,要条件全部满足才能够成立。我们在条件操作符那里提到过就不多解释了。
③||
这个操作符是或的意思,表示只要满足一个表达式就成立。
比如下面这个例子,我们要判断某一个数是不是0-2以内的整数。


(7)switch语句
我们前面提到过,分支语句可以通过if和switch实现,下来我们着重讲解一下switch语句 。
①基本形式
switch(表达式)
{
case 常量1:
语句1;
break;
case 常量1:
语句2;
break;
…………
default:
语句n;
break;
}
代码演示
假如我们要写一个代码判断一个整数的余数分别是什么,就可以用switch语句

②对break和default的解释
其中,break表示终止当前循环,default表示所有case都不满足时执行它,我们用一串代码来演示一下


通过左边这个代码我们明显产生了一个疑问,为什么我输入了10本来最终我的余数是2,为什么却打印出了我的余数是2和3,这是因为你没有break,我们来刨析一下这段代码是怎么运行的余数为2时就进入了case 2那么在没有break的情况下它后面的语句都会执行。
再来看右边这个代码,输入11时,case 0,1,2都不满足,所以最后就执行default输出了余数是3。
小插曲
为了方便我们代码的简介,我以后的代码就取消了return 0(C99以后编译器都会自动补全return 0),另外,main函数后面跟的花括号我就直接放到main函数后面了(编译器识别的时候不会管你的缩进的)。
三.循环语句
(1)什么是循环语句
就是字面意思,根据你给计算机的条件一次又一次的判断,直到不符合条件为止。循环语句里面有3种语句,分别为while语句,for语句,do while语句,下面我们来逐一了解。
(2)while语句
①基本形式
while(表达式){
语句;
}
②代码演示

在分析这段代码之前,我们首先要知道while循环要经过初始化,判断和调整三个环节。这段代码是按顺序打印1到100,我们来看看它是怎么运行的,首先int a=1;是初始化,然后a <= 100是判断,最后的a++是调整。你初始化a的值是1,然后判断1符合条件,最后经过调整环节a变成了2,再次判断调整循环往复。
(3)for语句
①基本形式
for(表达式1;表达式2;表达式3){
语句1;
…………
}
②代码演示
我们前面用while循环演示了从1打印到100,现在我们用for循环试试:

可以明显看到,相对于while循环,我们的for循环简介了不少,这是因为我们for循环把while循环的初始化,判断,调整三步和到了一行代码中去。下来,我们看看它是如何运行的,a等于0进入了for循环,首先被初始化成为了1,接着判断它是不是小于等于100,满足,输出a,最后对a进行调整,也就是a++,这时候a的值就变成了2,然后循环往复。
(4)do while语句(先执行后判断)
①基本形式
do{
语句1;
…………
}
while(表达式);
②代码演示
在屏幕 上打印 1-100

这个代码是这样运行的,a的值为1,先从do开始,直接打印1,然后执行a++,a的值变为2。最后判断发现满足,再次来到do进行下一次循环。
(5)break和continue
①什么是break和continue
break:终止循环
continue:跳出当前循环
②代码演示
比如我们想要在屏幕上打印1-5,但是遇到3就立马停下,就可以使用break。

那么我们要是想要过滤掉3,就可以使用continue。


先看左边的代码我们明明使用了comtinue,为什么却没有达到我们预期的效果。下来我们分析一下,当你的a等于3时,会跳过后面两条语句,这样你的a值一直都是3,所以它陷入了死循环。再来看右边的正确代码,把a++放到continue的上面,这样它就不会被迫跳出了,你的a值才会发生改变。
注:Ⅰ.上述是用了while语句来示范,对于for和do while语句同样适用
Ⅱ.千万不要和我们前面的swich混淆了,switch只能用break,不能用continue。
(5)循环的嵌套
就是把while,for,do while三种语句像套娃一样一个套一个。
四.跳转语句
跳转语句就是字面意思,就是直接跳到我需要的位置,中间直接忽略。常用goto表示。
基本形式:
goto 标签名;
………………
标签:
语句1;
………………
代码演示:

五.结语
下一篇文章将进入数组的学习。
1129





