分支和循环

文章目录:

一、

1.1  关系操作符

1.2 条件操作符:

1.3 逻辑操作符:

1.4 if语句:

         1.5  else语句:

1.6  if,else的多层嵌套:

二、

2.1 switch循环

2.1.1 switch循环中的break:

2.1.2 switch语句中的default:

2.2 for循环:

2.3 while循环:

2.4 do-while循环:

2.4.1 do-while循环中的break和continue:

2.4.2 for循环中的break和continue:

2.3  goto语句:


一、

1.1  关系操作符

         在C语言中用于比较的表达式,称为 “关系表达式“,里面使用的运算符就称为“关系运算符”。以下6个为常用运算符。
1. a==b               == -> 相等运算符

2. a<=b               <  ->  小于等于运算符

3. a>=b               >  ->  大于等于运算符

4. a!=b               != -> 不相等运算符

5. a>b                >  ->  大于运算符

6. a<b                <  ->  小于运算符
  关系表达式通常返回 0 或 1 ,表示真假。 在 C语言中, 0表示假,所有非零值表示真。
  注意: 相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。有时候,可能会不小               心写出问题 ,它可以运行,但很容易出现意料之外的结果。

    在图中,‘=’表示对元素赋值,‘==’表示判断左右两边元素是否相等。为了防止出现这种错误,有的人喜欢将变量写在等号的右边这样的话,如果把 ‘==’ 误写成 ‘ = ’,编译器就会报错。

if(0==a)

另⼀个需要注意的是:多个关系运算符不宜连用。

a>b>c      连续使⽤两个大于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果,
           即不是保证变量 b 的值在 a 和 c 之间。因为关系运算符是从左到右计算,
 所以实际执⾏:
              (a>b)>c
 
     上述中:a > b 返回 0 或 1 ,所以最终是 0 或 1 与变量 c 进行比较。因此如果想要判断变量 b
     的值是否在 a 和 c 之间,应该使用下面的写法。
a>b&&b>c

        这里“&&”操作符表示与,等价于英语中的and。这里我们可举一个例子:判断价格

        这是因为,我们先拿10和price中存放的5比较,表达式5<10为假, 10<price的结果是0,再          拿0和20比较,0<20为真,所以打印了买得起。那么代码该如何写呢?请看下图:


 


1.2 条件操作符:

条件操作符又叫三目操作符。需要三个操作数。

exp1?exp2:exp3

注意:无论真假,计算的结果是整个表达式->(exp2或exp3)的结果。

1.3 逻辑操作符:

1. ! 逻辑取反运算符(改变单个表达式的真假)。

2. ||  或运算符,或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

3. &&  与运算符,并且的意思(两侧的表达式都为真,则为真,否则为假)。


1.4 if语句:

if(表达式)
语句

 表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行  。在C语言中,0为   假,非0为真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句 执行。

例子:比较两个数的大小 

1.5  else语句:

   else语句需要跟if语句搭配使用。当if语句中的表达式为假时,跳出if语句 ,执行else语句中的表达式。

 If
{
 语句;
}

 else
{
 语句;
}
  默认在 if 和 else 语句中都只控制一条语句。比如:

 上面的代码,你会发现输入的值不管是>2 还是<2,"存在a" 都会打印在屏幕上。
 这是因为 if 语句只能控制一条语句,就是 printf("%d",a); if语句为真,打印a。为假,不打印。对于 printf("存在a"); 是独立存在的。
 如果我们要if语句同时控制2条语句,怎么办呢?那就要使用 {} 将代码括起来, else后面也可以跟上大括号

1.6  if,else的多层嵌套:

注意:else 只跟离自己最近的上一级 if 结合。


二、

2.1 switch循环:

  switch 语句是一种特殊形式的 if...else 语句,用于判断条件有多个结果的情况。它把多重
  的 else if 改成更简单、可读性更好的形式。
switch(a)
{
  case?:
    ||
    ||等
default:?
}
根据表达式 a 不同的值,执行相应的 case 分支。如果找不到对应的值, 就执行 default 分支。

  注意:

    1. switch 后的 a 必须是整型表达式
   2. case后的值,必须是整形常量表达式
  如此以来,我们就可以用switch来表达星期了,如下图:
上述的代码中,我们要注意的点有:
1. case 和后边的数字之间必须有空格
2. 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。

2.1.1 switch循环中的break:

 可能我们有些人会好奇,如果把break去掉会发生什么?这里我们就不卖关子了!
  switch 语句也是有分支效果的,只有在 switch 语句中使用 break 才能跳出 switch 语 句。
  如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执行。
 有可能会执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。所以在   switch 语句中 break 语句是非常重要的。

2.1.2 switch语句中的default:

 在使用switch 语句的时候,我们经常可能遇到一种情况,比如 switch 后的表达式中的值无法匹
 配代码中的 case 语句时,这时候就得在 switch 语句中加入 default 子句。
 switch 后边的 a 的结果不是 case语句中的结果时,就会执行 default 子句。
注意:  在switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实
            际需求就行。


2.2 for循环:

for 循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)
{

语句;
语句;
语句;

}
  表达式1 用于循环变量的初始化
 表达式2 用于循环结束条件的判断
 表达式3 用于循环变量的调整
首先执行表达式1 初始化循环变量,接下来就是执行表达式2 的判断部分。
表达式2的结果如果 ==0,则循环结束;表达式2的结果如果 !=0 则执行循环语句,循环语句执行完后,再去执行表达式。
表达式3调整循环变量,然后再去表达式2的地方执行判断, 表达式20的结果是否为0,决定循环是否继 续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循 环,直到结束。

2.3 while循环:

while(表达式)
{
  语句;
}

对于if表达式,只打印一次 a 。 对于while语句,因为等式成立,死循环打印 h 。

2.4 do-while循环:

do
{
   语句;

}while(表达式)

 在 do while 循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的
 结果是!=0,则继续循环语句; 判断表达式的结果==0,则循环结束。
 所以在 do while 语句中循环体至少执行一次,这是 do while 循环中比较特殊的地方。
例如:打印数字 1-5

2.4.1 do-while循环中的break和continue:

break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行continue 的作用是跳过本次循环 continue 后边的代码。

例如:


2.4.2 for循环中的break和continue:

    在for循环中break和continue的作用与在while循环中的作用一样。



注意:

do while循环中的break和continue 的作用和 while 循环中几乎一模一样,这里就不再详细述说

2.3  goto语句:

 C语言提供了一种非常特别的语法,就是 goto 语句, goto 语句可以实现在同一个函数
 内跳转到设置好的标号处。
例如:
这里jiuhuui跳过对"hehe"的打印。同理,goto语句也可以改变位置。 下图就是死循环打印
 goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,进而会打乱程序的执行流程,所以 能不用尽量不去使用goto语句;但是 goto 语句在多层循环的代码中,可以快速跳出,这无疑 就非常的方便了。

总结:

以上就是今天要讲的内容,希望大家多多点赞支持转发,本文耗费了小编大量时间,如有问题,请@作者纠正错误。

  • 35
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值