分支和循环内容很多,因此分为上下两讲。本讲呢,主要是对分支和循环上讲做一个系统的介绍。可以根据目录知晓大概内容。
前言:C语言其实是一种结构化的程序设计语言,其基本结构分为顺序结构,选择结构,循环结构。顺序结构其实就是一条路走到尽头;选择结构相当于分岔路口,比如switch语句,if语句;循环结构则是转圈,比如while,do...while,for。
一切技术源于生活,C语言也不例外。生活中很多事其实都可以抽象成这三种基本结构或者它们的组合。程序员就是一位艺术家。
1.if语句
1.1 if语句的基本语法形式
if(表达式)
执行语句;
表达式成立则结果为真,表达式不成立,则结果为假。C语言中一般用0表示假,一切非零表示真。
例子:判断某个数是否是奇数
1.2 else语句
如上述例子,一个整数不是奇数就是偶数咯,else则引出了奇数的对立情况。语法形式如下:
if(表达式)
语句1;
else
语句2;
例子:判断成年(如果年龄大于等于18,打印输出“是成年人”,否则打印输出“不是成年人”)
1.3分支中包含多条语句
默认if...else 语句只能控制一条语句,若想控制多条语句,则使用大括号代码块
上图中所示代码表示IQ值大于115时,智商高于常人,我们称他为天才,大神。而输入41时,却也输出了大神,说明这一条语句是不受if语句控制的。
要想if来控制多条语句,就使用代码块。
此时,输入IQ小于115时,什么也没有输出。
1.4嵌套if
即多种判断结果。拿IQ值举例。
进阶练习:各个年龄阶段的称呼
上图是没有大括号的样子 ,下图是加入大括号的样子
建议还是加入大括号的好,逻辑清晰,容易看懂,而且也会避免一些问题。养成好的代码习惯是非常重要的。
1.5 悬空else问题
上面提到加上大括号有助于养成好的代码习惯。即使一条语句也要加入大括号也是为了避免一些不必要的麻烦。什么样的麻烦呢?列位看官,请看代码!
看官,请问它的打印输出结果是什么?hehe?还是haha?很有可能你是判断发现a不等于1,然后执行else语句输出haha。但实际上它什么也不输出!
再来一记!下面的代码输出结果又是什么?
您可能会判断a不等于1,则执行下一个if,发现b确实是2,于是打印输出hehe。结果有是错的!原因很简单,代码风格要良好!
其实以上两个代码是一样的,第二个if和else语句组成一个结构,再和第一个if语句组成一个嵌套结构。首先判断a不等于1,则不再执行后面的代码了。
为了看的更加明白,我们可以适当加入大括号。如下:
由此可见,严谨的代码风格对于程序员来说是多么重要!
2.关系操作符
关系表达式中的运算符主要就是关系操作符,主要有以下几种:
> 大于操作符
<小于操作符
>=大于等于操作符
<=小于等于操作符
==判断相等操作符,注意和赋值运算符“ = ”区分
!=判断不相等操作符
关系表达式的值通常都是返回1表示真,返回0表示假。
当“ == ”和“ = ”混淆的时候容易出现error。如下代码:“ a = 3 ”就是一个赋值表达式,恒为真。
解决办法就是:操作数写在"=="左边,表达式写在==右边,也就是将变量写在左边。如果误将==写成=,编译器就会报错!
还有一个需要注意的事:多个关系运算符不宜连用!比如if(18 <= age <= 28)应该写成if(age >= 18 && age <= 28)。&&表示并且。用它连接的两个表达式必须要同时为真,整个表达式才为真,if语句才会执行。
3. 条件操作符
条件操作符即三目操作符,需要三个操作数。格式: 表达式1?表达式2:表达式3
计算方法是 如果表达式1成立,计算表达式2;如果表达式1不成立,计算表达式3。
举个例子:判断两个数中的较大数
4. 逻辑操作符:&& || !
4.1 逻辑运算符
! 表示逻辑取反操作符,它可以把假的变成真的,把真的变成假的。
&& 与运算符,表示并且,上面简单提到过了的,&&两边的表达式为真,整个表达式的结果才为真,否则结果为假。
|| 或运算符 ,表示或者,||两边的表达式结果全为假,整个表达式结果才为假。
以上三个运算符都是双目操作符,只需要两个操作数。
对编程的学习是一个实践的过程。因此,来看一个例子巩固一下
运行结果:
4.2 短路
这是C语言逻辑运算符的一个特点:从左往右对表达式依次计算。当左边的表达式满足后就不再对后面的表达式进行计算时,这种现象称为短路。
上图中的代码,month = 1时,if(month == 1 || month == 2 || month == 12)第一个表达式为真,后面的表达式就都没有计算了,这就是短路。还有一种短路:
这个代码就是满足左边的条件就看右边。如果左边不满足,那么整个表达式就不满足了。
简言之,短路有两种情况:A. a && b 中,左边的表达式不满足,就不再计算右边的表达式。B. a || b 中,左边的表达式满足了,即不再计算右边的表达式了。
5. switch语句
switch语句是if......else.......语句的一种表达方式,它也可以实现分支。
5.1 if语句和switch语句
例子巩固:
5.2 switch语句中的break
由图可知,break是用来跳出switch语句的,如果没有break,case将会继续往下执行。switch语句是入口,break语句是出口。
5.3 switch语句中的default
default用于表示case没有的情况。在switch语句中case和default没有顺序要求。
竟然都看到这儿了,点个赞支持一下呗!