Linux7.27学习笔记(流程控制)

流程控制

流程控制的结构可以分为顺序结构,选择结构和循环结构
(任何程序都可以通过这三种结构组合而成。)

选择(分支)结构:

选择是在比较后进行的,比较为选择提供了依据。
而在c语言中:通过关系运算和逻辑运算构造选择判断的依据。

关系运算

关系运算是运算的一种,其产生的表达式有对应的数据值和对应的数据类型。
表达式的类型:整形
其表达式的值:当判断为真时,其数值为整形的1;判断为假时,数值为0
关系运算符:> ,<,>=,<=,==,!=

逻辑运算

逻辑运算符&&(与),||(或),!(非)
运算优先级:非运算(优先级为2)>>与运算(优先级为11) > 或运算(优先级是12)

与运算:
规则:一假则假
格式:(表达式1) && (表达式2)
特性:1.运算顺序:从左往右运算
	  2.短路特性:当从左往右运算时整体表达式中已经有一个关系判断为假了,则计算机不会再计算后面的表达式。

或运算
规则:一真则真
格式:(表达式1) || (表达式2)
特性:1.运算顺序:从左往右运算
	  2.短路特性:当从左往右运算时整体表达式中已经有一个关系判断为假了,则计算机不会再计算后面的表达式。

非运算:
规则:真假转换
格式:!(表达式1)

补充知识:
c语言如何判断一个值的真假:凡是数值是0则为假(包括0,‘\0’, NULL),凡是数值不为0(包括-1,‘a’,‘\t’),则为真。


选择语句:

if语句
1.处理单个情况。
if(表达式1)
{
	语句;
}

语义:若表达式为真,则执行语句;若表达式为假,则if语句结束,继续向下执行之后的语句。
if1

如果if()后不加{},if的语句只包括if下一行。


2.处理两个情况。
if(表达式1)
{
	语句1}
else
{
	语句2}

语义:若表达式为真,则执行语句1;若表达式为假,则执行语句2;之后if语句结束

if2


3.处理三个情况。
if(表达式1)
{
	语句1}
else if(表达式2{
	语句2}
................(表示多个else if的省略)
else if(表达式n)
{
	语句n;
}
else
{
	语句n+1}

语义:若表达式为真,则执行语句1;若表达式为假,则往下判断表达式2;为真则执行表达式2条件下的语句,为假则继续往下判断表达式3…直到匹配到满足条件的if语句。如若连表达式n都没有判断到,则直接执行表达式n+1.并结束if整体语句
在这里插入图片描述

高内聚低耦合的if语句写法
在这里插入图片描述


补充? :运算符(优先级为13):

优先级

其本质与if()else语句相同,但是其更加简洁,是以一种运算符参加到表达式之中。

格式: (表达式1?(表达式2: (表达式3

语义:对表达式1进行判断,若判断结果为真,则取表达式2;若判断结果为假。则取表达式2的效果。

判断表达式
表达式2
表达式3

switch结构
格式:
switch(表达式)
{
	case (常量表达式1):
	语句1;
	break;
	
	case(常量表达式2:
	语句2;
	break;
	
	......
	
	case(常量表达式n):
	语句n;
	breakdefault:
		语句n+1}

语义:根据表达式的值和下方定义的常量表达式的值相匹配,匹配到哪个表达式,程序就跳到那个表达式,并执行对应的语句,然后经过break语句结束switch程序。如果未匹配到相应的常量表达式,则程序会执行default中的语句并结束。

语义流程图见下:
switch

注意事项:
1.第一次匹配到case语句但没有break语句,则对应case下的所有代码都会被执行一次直到执行到switch中符号},程序才会结束。
见例

······································································
switch(grade)
{
	case 'A': printf("85~100");
	case 'B': printf("70~84");
	case 'C': printf("60~69");                                                                                 
	case 'D': printf("<60");
	default: printf("errow");
}
·······································································

输出如下:
break未加例子


2.switch(表达式)中的表达式可以是整形,字符,但不能是浮点型。
3.case(常量表达式)中的常量表达式只能包含常量,不能存在变量。
4.default不一定必须放在最后,其可以放在任意位置。
5.可以根据标签将该语句改成一个选择结构,将执行语句设置一个标签,如果能匹配这个标签,则可以执行对应的语句,如果匹配不上则将所有语句执行一遍。


【补充】标签:

格式:case (标签名):

其效果如给书上某一页贴个书签,配合goto使用可以跳到的对应的位置。


循环结构:

构成循环语句的要素:
1.循环的初始条件
2.执行语句。
3.结束条件
4.使循环趋近结束的操作或语句


goto语句

goto语句严格上来说是跳转语句,而不是循环语句,但是我们可以根据他的跳转功能来实现循环。

---------------------------------------------------------------------
格式:	
	loop:
		printf("hhhhhhhhh %d",d);
		d++goto loop;
-----------------------------------------------------------------------

语义:将loop下两行的语句取了一个标签,当程序执行到goto loop时,此时程序将会跳转到loop标签并再次向下执行程序。
一般不使用goto语句,因为c语言是模块化语言,而goto的使用会破坏模块,可能会造成程序的错误。


while语句:

-------------------------------------------------------------------
while(表达式)
{
	语句;
}
-------------------------------------------------------------------

语义:当括号中的表达式成立时,则执行语句,一直到表达式不再成立。则停止while循环。
while
易错:
while(表达式)后面没有分号,如果加上分号如下

while(表达式);

编译时程序不会 报错,但是程序会陷入一直循环。
因为while和if一样可以不带{},其代表只将while下仅一行的语句进行循环,上述例子中while将前得到空语句当作时循环体,并且没有时循环趋近结束的操作,所以循环一直无法结束。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值