03. 分支和循环

03. 分支和循环

1. C语言是结构化语言

1.1 概述

  顺序结构:从上到下依次往下执行

  分支结构:依据条件判断的结果来决定执行哪一段代码。要是条件为真,就执行某一块代码;条件为假,则执
       行另一块代码,甚至不执行任何代码,可以用if,switch语句来实现分支结构

  循环结构:允许程序在满足特定条件时,反复执行某段代码块,直到条件不再满足或被强制终止
       可以用for,while,do while语句实现循环结构

1.2 代码执行思路

  分支结构,循环结构一般代码执行思路
  1. 变量初始化
  2. printf
  3. scanf
  4. if,switch分支或for,while,do while循环

2 if语句

2.1 概述

  在C语言条件表达式中的结果为:0(则假)或 非0(则真),为假时,语句不执行,为真则执行

if(条件表达式)
{
	语句;	
}

3. if…else语句

3.1 概述

  如果条件表达式为真,则执行语句1代码;否则执行语句2代码

  注意1:if后加上括号后内为真时,括号内都执行,为假时,则都不执行;不加括号,不管真假if语句后面第二条语句体开始都会执行
  注意2:悬空else总是跟最近if匹配,可以每次加上大括号标注即可避免搞错

if(条件表达式)
{
	语句1;	
}
else 
{
	语句2;
}

4. if…else if语句

4.1 概述

  让程序能够依据不同的条件来执行相应的操作,一旦某个条件为真,执行对应的代码块,然后跳过后续所有 else if 和 else 部分

if(表达式1)
{
	语句1;
}
else if(表达式2)
{
	语句2;
}
else if(表达式3)
{
	语句3;
}
...
else
{
	语句4;
}

5. 关系操作符

5.1 概述

  在C语言中用于比较的表达式称为:关系表达式(使用的运算符称为关系运算符),返回值:0或1(假或真),常用于if,switch中

  注意1:相等运算符 == 与赋值运算符 = 不要混淆,不然可能会出意外的结果
  注意2:多个关系运算符不宜连用,不然可能会出现意外结果

5.2 分类

  >,<,>=,<=,==,!=

6. 条件操作符

6.1 概述

  在C语言中也称三目运算符且是唯一(需要3个操作数),实现简单的条件判断,常用于替代简单的if-else语句

条件表达式?表达式1:表达式2;	

  1. 首先计算条件表达式的值
  2. 如果条件表达式为真(非零),则整个表达式的值为表达式1的值;如果条件表达式为假(零),则整个表达式的值为表达式2的值

7. 逻辑操作符

7.1 概述

  用于对表达式进行逻辑判断,返回值为布尔类型(真或假)

  逻辑与(&&):当且仅当两个操作数都为真时,结果才为真,否则结果为假
      注意:逻辑与短路求值特性,如果左边的表达式为假,那么右边的表达式就不会被计算

  逻辑或(||):只要两个操作数中有一个为真,结果就为真;只有当两个操作数都为假时,结果才为假
      注意:逻辑或短路求值特性,如果左边的表达式为真,那么右边的表达式就不会被计算

  逻辑非(!):该操作符用于对操作数的逻辑状态取反,若操作数为真,则结果为假;若操作数为假,则结果为真

7.2 优先级与结合性

  在 C 语言中,逻辑操作符的优先级是不同的。逻辑非(!)的优先级较高,逻辑与(&&)次之,逻辑或(||)最低
  它们的结合方向也有所不同,逻辑非(!)是右结合,而逻辑与(&&)和逻辑或(||)是左结合

8. switch语句

8.1 概述

  依据表达式的值来选择执行不同的代码分支,表达式结果类型必须是整数类型(如int,char等)或枚举类型,特殊形式的if-else

switch(5)
{
	case 1:
		语句1;
		break;
	case 2:
		语句2;
		break;
	case 5:
		语句3;
		break;
	...
	default:
		语句4;
		break;
}

  case 标签:每个case标签后面都跟着一个常量表达式(与后面数字之间加上空格),用于和switch表达式的值进行比较

  break 语句:一旦匹配到某个case标签,就会从该标签处开始执行代码,直到遇到break语句或者switch语句结束
        break语句的作用是终止当前的switch语句,防止执行后续case中的代码

  default:当switch表达式的值和所有case标签后的常量都不相符时,就会执行这个分支里的代码

  注意:case穿透问题,记得case中语句写完,带上break结束,不然会造成case穿透(往下继续执行代码直到break或defalut才停止)

9. while循环

9.1 概述

  在特定条件得到满足时,重复执行一段代码
  执行循环体之前,先对表达式求值,这个条件的结果必须是整数类型,如果为真则执行循环体,如果为假则跳过循环体执行后面代码

while(表达式)
{
	语句;
}

  循环体:它可以是一条语句,也可以是由花括号{}括起来的复合语句。只要条件始终为真,循环体就会不断地重复执行

  无限循环:要是条件一直为真,比如while (1),那么循环就会无休无止地进行下去
       除非在循环体内部使用break、return或者goto等语句来强制终止循环

9.2 应用场景

  不知道循环需要执行的具体次数,只知道循环终止的条件时,就可以使用while循环,比如
  从文件中读取数据,直到文件结束;或者等待用户输入特定的值等情况或实现条件等待,例如等待某个事件发生或者某个资源可用

  与do-while 的差异:while语句是先判断条件,然后再执行循环体;而do-while语句则是先执行一次循环体,之后再判断条件。
  也就是说,do-while语句的循环体至少会被执行一次

10. for循环

10.1 概述

  等待继续更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值