首先我们知道:c语言是结构化的编程语言,这里的结构指的是顺序结构、选择结构、循环结构,
我们可以使用if,switch语句实现分支结构,使用for,while,do while实现循环结构。
目录:
1. if语句
2. 关系操作符
3. 逻辑操作符:&&,II,!
4. switch语句
5. while循环
6. for循环
7. break和continue语句
8. goto语句
1.if语句
1.1 if
if语句的语法形式:
- if(表达式)
- 语句
若表达式结果为真,则执行语句,反之不执行
1.2 else
if中的语句既有成立的时候,当然也有不成立的时候。
这时就需要if···else···语句了,其语法形式:
- if(表达式)
- 语句1
- else
- 语句2
这几行代码用if···else语句判断了一个数是奇数还是偶数。
注意:if和else语句中都默认只控制一条语句。
如果当if后面的表达式成立时,需要执行多个语句,那么要在if后面用大括号将需要执行的语句括起来。
形式如下:
- if(表达式)
- {
- 语句1
- 语句2
- ·····
- }
- else
- {
- 语句3
- 语句4
- ·····
- }
1.3 嵌套if
在if else语句中,else可以和另一个if语句连用,构成多重判断。
注意:当有多个if和else,else始终与最接近的上一个if匹配。
如果不对if和else后面的语句加上大括号,那么程序可能比较混乱,所以适当地加上大括号,会使逻辑更加清晰。
2.关系操作符
c语言中用于比较的表达式被称为"关系表达式",里面的运算符就被称为关系运算符。
主要有以下6种:
- >大于运算符
- <小于运算符
- >=大于等于运算符
- <=小于等于运算符
- ==相等运算符
- !=不相等运算符
注意:关系表达式的结果通常会返回0或1,0表示假,1(所有的非0数)表示真。
注意:在c语言中 ==与=是不一样的运算符。==用于判断左右是否相等,=用于赋值。
知道了以上几种运算符,还有一个值得注意的是多个关系运算符不宜连用
比如
- i<j<k
对于这个式子执行情况是:先判断i<j的真假,真返回1,假返回0,再判断这个返回值是否<k:
- (i<j)<k
举个例子:如果程序写成 -2<-1<0,那么会先判断-2<-1为真,返回1,再判断1<0为错,返回0。由此可见这个式子在程序中是错的,所以关系运算符不宜连用
3.逻辑操作符
逻辑操作符用于构建更复杂的表达式,主要有
- !:逻辑取反运算符(改变单个表达式的真假)
- &&:与运算符(在两个表达式之间,表示并且)
- ||:或运算符(在两个表达式之间,表示或者)
对于关系运算符不宜连用的情况,我们可以使用与运算符来表示:
- i<j&&j<k
3.1 短路
C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为 “短路”。
如:
- if (month>3&&month<5)
当左边的表达式month>3结果是0时,就不会判断右边的表达式了。
- if (month=1||month=2)
当左边的表达式month=1结果是1时,就不会判断右边的表达式了。
4.switch语句
switch语句和if语句都能实现分支结构
switch 语句是一种特殊形式的if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。
其语法形式:
- switch (表达式)
- {
- case 值1:
- 语句1
- break;
- case 值2:
- 语句2
- break;
- }
注意:1.switch后面的表达式必须为整形表达式
2.case与后面的值之前要用空格隔开,且后面的值,必须为整形常量表达式
3.每一个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句
4.1switch语句中的break
只有在 switch 语句中使用 break 才能在跳出 switch 语句,如果某一个 case 语句的后边没有 break语句,代码会继续向下执行,有可能执行其他case语句中的代码,直到遇到 break 语句或者 switch 语句结束。
4.2switch语句中的default
在使用 switch 语句的时候,我们经常可能遇到一种情况,比如switch 后的表达式中的值无法匹配代码中的case 语句的时候,这时候要不就不做处理,要不就得在switch 语句中加入default 子句。
如 判断一周里哪一天是工作日还是休息日:
5.while循环
while的语法形式:
- while (表达式)
- 语句;
当表达式结果为真时,就循环执行下面的语句,当需要执行多个语句时,用大括号将这些语句括起来。
6.for循环
for循环是三种循环语句中使用最多的,其语法形式:
- for (表达式1;表达式2;表达式3)
- 语句
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
打印1到10的值:
7.break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了 break 和 continue 两个关键字,就是应用到循环中的。
break的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
continue 的作用是跳过本次循环 continue 后边的代码,在for 循环和while 循环中有所差异的。
for和while循环中continue的差异在于:
- 在 for 循环中 continue 的作用是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。
- while循环中,使用continue会跳过本次循环中continue后的代码,如果循环变量的调整在continue后面,就会被跳过,程序就会出现意料之外的结果。
8.goto语句
使用goto语句时需要设置一个跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。
语法形式:
- again:
- 语句;
- goto again
goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,建议是能不用尽量不去使用;但是goto 语句也不是一无是处,在多层for循环的代码中,如果想快速跳出,使用一个break只能跳出一次循环而使用 goto 就非常的方便了。