初学C语言之分支与循环

1.关系操作符

        C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称为“关系运算符”。

主要有这六个:(1)< ⼩于运算符;(2)>大于运算符;(3) >= ⼤于等于运算符;(4)<= ⼩于等于运算符;(5) == 相等运算符;(6)!= 不相等运算符。

关系表达式中,0表示假,1表示真;而在C语言中,0表示假,非0表示真(注意区别)。

注意:(1)相等运算符(==)和赋值运算符(=),大多数人在刚开始写代码的时候,在判断相等时,   容易漏掉一个等号(如下图),虽然可以运行,但会出现与所想要的结果不一致。

为了防止这种情况的发生,我们可以将常量放在等号的右边,这样一旦我们漏写等号,编译器就会报错。                                                                     

(2)多个关系运算符不宜连用。

                             

如上图,我们是要保证变量b在a和c之间。连续使用两个小于号,虽然不会报错,但通常事与愿违。因为关系操作符会按照从左到右计算,所以实际上是先判断a<b,在将其结果与C进行比较。

这就是为什么结果和我们所预想的有出入。

如果我们想判断变量b是否在a到c之间,正确的写法如:       

2.条件操作符

条件操作数又叫三目操作符,需要三个操作数,形式如下:

条件操作符的计算逻辑是:如果表达式1的结果为真,则计算表达式2的结果,其结果是整个表达式的结果;如果表达式1的结果为假,则计算表达式3的结果,其结果是整合表达式的结果。

例如:找两个数中的较大值:

使用条件操作符后:

3.逻辑操作符

(1)!:逻辑取反运算符。

作用:改变单个表达式的真假。

例如,定义一个变量为a,如果a为真,则!a为假;如果a为假,则!a为真。

(2)&&:与运算符。

与运算符就是并且的意思,是一个双目操作符。

用法:a&&b,&&两侧表达式都为真,整个表达式的结果才为真;只要有一侧为假,整个表达式的结果就为假。

例如,把年龄在0到18岁之间的人称为未成年

必须同时满足大于等于0岁,小于等于18岁,才会被称为未成年。

(3)||:或运算符。

或运算符就是或者的意思,是一个双目操作符。

用法:a||b,||两侧表达式只要有一个为真,整个表达式的结果就为真;两侧都为假,整个表达式的结果才为假。

例如:输入一个月份,判断是不是夏季;

只要满足一个就成立。

(4)例题:闰年的判断

条件:(1)能被400整除;(2)能被4整除且不能被100整除。

(5)短路

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

4.if语句

(1)语法  :

                        

如果表达是为真,则执行语句1;如果表达式为假,则执行语句2。

(2)分支中包含多条语句

if和else语句默认都只控制一条语句,如果需要控制多条语句,则需要加上{ }。

例如, 

  

 这个例子,我们的原意是年龄在18岁以上输出成年,≤18岁输出未成年和不能早恋,要好好学习。

可是我们不难发现,不管我们输入的年龄是多少,都会输出不能早恋,好好学习,这与我们的想法是不相符的。这就是分支中包含多条控制语句,当语句超过一条时,需要加上{ },才能正确执行语句。上面的例子,正确情况如下:

 (3)嵌套if

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

 上述例子中,蓝色部分就是嵌套在前面else语句中,是一个嵌套if语句。

在解决实际问题中,嵌套if语句可以帮助我们解决更复杂的逻辑问题。

(4)悬空else的问题。

总结一点,也就是我们需要记住的就是else总是和离它最近的if搭配。

例如:

 这个代码的结果是什么?很多初学者,会这样想,a=0,≠1所以因该输出999;但事实上,当你去运行代码时,它什么也不输出。如下图:

这就是悬空else问题。因为在写代码时,将else和第一个if对齐,这就会让我们以为else和第一个匹配,当a≠1时,就会执行else语句,输出999。但事实上,else总和离它最近的if进行匹配,所以后面的if语句是嵌套在第一个if语句中,当第一个if语句不成立时,后面的语句都不在执行,最终什么也不输出。

 如果我们可以加上{ },这样就可以方便我们理解。如果我们真的是想要else和第一个if进行匹配,我们可以这样做,如下图:

由以上几个例子可以看出{ }的重要性,所以我们在使用if语句解决实际问题时,要合理运用{ }。

5.switch语句

(1)语法:

switch语句是一种特殊的if else语句,使用逻辑是,根据表达式的值执行相应的case语句,如果找不到相应的case语句,就执行default语句。

需要特别注意:switch后的表达式必须是整型表达式;

                         case后的表达式必须是整型常量表达式。

例如:输入一个整数,计算除以三之后的余数。

在使用switch语句是要注意,case与后面的数中间有空格;每个case语句后都有break,用于跳出switch语句。

(2)switch语句中的break:

上述例子如果没有break会怎样呢?

 我们可以看到,25的余数本来是一,但现在却多输出了一行余数是2,为什么会出现这种情况呢?

这里就可以凸显出break的重要作用了。25%3的余数是一,按照正常情况会输出余数是1,但是因为没有在其后面加break,导致无法跳出循环,所以会执行后面case语句中的代码,直到switch语句结束才会停止。

因此,在switch语句中break的作用很重要,但也不是所有的case后面都要加break,这就要根据具体问题来决定。

例如,输入1到5五个数字,1,2,3代表中奖,4,5代表未中奖。

 这个例子中,不是每个case后面都有break,但结果是正确的,这就告诉我们,在不同问题中,使用switch语句时,要根据题目要求,合理运用break。

(3)switch语句中的default

当我们在使用switch语句时,如果表达式的结果,既不满足case1,也不满足case2,这时候我们就需要加上default。

例如,上面的例子,1,2,3是中奖,4,5是未中奖,那么我们如果输入的不是1到5呢,这时我们就可以借用default来帮助我们。

合理利用default,会使我们的代码更好看,可读性更高。

注意:通常我们是把default放在switch语句的最后,但case和default没有顺序要求,只要符合实际情况即可。

6.while循环

(1)语法

while循环的语法和if语句的语法相似。

区别是:if的表达式如果成立,后面的语句只执行一次;

              while循环的表达是如果成立,后面的语句就会一直执行。

(2)执行流程:

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。

(3)练习

用while循环,打印一到十的值:

(4)while循环中的break和continue

(1) break的作用:永久的中止循环。

例如:

例如上面的例子,打印一到十,如果我们在i=5的时候执行break,那么后面的数字将不再打印,循环中止。

(2)continue的作用:跳过本次循环中continue后面的代码,继续进行下一次判断。

例如,上面的例子把break换成continue,它就会跳过continue后面的i++,所以i就会一直等于5,造成死循环。

7.for循环

(1)语法

表达式1:用于循环变量初始化;

表达式2:用于循环结束条件的判断;

表达式3:用于循环变量的调整。

(2)执行流程

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

(3)练习

用for循环打印一到十:

(4)while循环和for循环的不同

 从上述例题可以看出while循环,初始化,判断,调整,相对分散,而for循环相对集中,便于维护,所以for循环的使用率更广一些。

(5)for循环中的break和continue

1.break:和while循环中的作用一样。

例如:

2.continue:跳过continue后面的代码,继续执行判断部分。

例如上面的例子,

与while不同的是,for循环只跳过了5,没有造成死循环,这就是for循环结构特殊的原因,for循环的调整部分在判断部分的后面,而while循环的调整部分在continue后面,这就是导致二者结果不一样的原因,这也是我们在不同循环中使用continue所要注意的。

8.do...while循环

(1)语法

while和for循环是先判断,后执行循环体;

do...while循环是先执行循环题,后判断;

(2)执行流程

 在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。

(3)练习

用do...while循环打印1到10:

(4)do...while循环中的break和continue几乎和while循环的一模一样。

9.总结

以上就是,我对C语言分支与循环的看法和见解,希望对大家有帮助,如果有不足,还请指出,我们在学习C语言的路上一起努力,创作不易,希望路过的人可以留下你的小红心。

谢谢观看!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值