c语言入门-分支与循环

C语言是结构化的程序设计语言,分别是顺序结构、选择结构、循环结构,选择结构可以通过if和switch两种语法实现,循环结构可以通过for循环,while循环,do while 循环实现。

                                                         A.分支语句

1          if与else的使用

a.if语句

if就像它的汉语意思,如果。if的用法为if(表达式),如果表达式为真,则往下执行,如果为假,则不执行之后语句。如下面的判断奇偶代码

此处也可以用 if else这一对来写,如图:

else语句与if对应,即如果if条件不成立,直接执行else后的语句,并且不用进行判断。

b.分支中包含多条语句

 在c语言中,if else都默认只对一条语句起作用,如下图

可以看到,即使我输入14,不符合限定条件,但第二个printf依然打印了出来,为了解决这一问题,我们可以使用大括号,即{语句 }的形式,这样if判读就会对大括号里面的所有内容起作用。

c.嵌套if的使用

在if else语句里,只能有两种情况,但实际问题可能有三种乃至多种情况,此时,为了达成这一目标,可以使用else if,即else可以和另一个if连用,构成第二个乃至第n个判断,如下输出数字是0,正数,负数的代码:

上面代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。当然除了与else嵌套,if语句也可以进行嵌套,我们可以在上代码进行稍微修改,在判断a是正数基础上,对其奇偶性进行判断:

这样,就实现了嵌套的 if 语句。

d.悬空else

对于else,存在就近原则,即else会与最近的if进行匹配,如下代码:

这个代码什么也没有输出,因为else与if(b==2)对于,第一个if没有成立,下面的if else语句就不会执行。

2.switch语句

如果是if语句是一对一,那么swith可以看作多个if 语句的集合体,如下代码

这一代码是用来判读一个整数除三之后的余数,如果我们使用if语句,则至少要用if加else if加else三条语句来判断,相比之下,switch较为方便。

需要注意的是,switch中引入了break,break的作用是跳出一层循环体,如果你去掉break,就会发现,如果输入余数为0的数字。所有的输出结果都被打印了出来,而如果输入余数为2的结果,只输出余数2,那么我们就可以讲case语句理解为入口,即变量从哪个地方进来,并且对语句进行顺序执行。

既然if有else对应,那么switch中的case也应该有一个东西与其相对应,这就是我们的default,如下代码default实现了与else相似的功能,即如果case不满足条件,则直接执行default后面的语句。

                                    B循环语句

c语言中一共有三种循环即while,for,与do while。

a while循环

while循环和if语句有一定的相似之处,if的构成是

if(表达式)

语句;

如果表达式为真,语句执行。

而while他的构成也是这样

while(表达式)

语句;

如果while表达式一直为真,语句不断执行,下面是一个简易的对比

可以看到,if只执行了一次,而while循环在表达式为真的情况下,不断的执行,形成循环。

到了这里我们就可能有了一个疑问,能否在while表达式为真的情况下,跳出循环呢?

一个最简单粗暴的方法就是return 0;意味着这个程序结束了。这种方法肯定是与我们预期的大相径庭,c语言提供了另一个关键词即break,下面写一个例子

可以看到,i的值仍然满足while的条件,但却没有再执行i++的操作,break的作用就是退出当前这一层的循环。

既然说到break这一跳出循环,那有没有一个语句,使我在某个也是类似于break的跳出,但是这个跳出你可以理解为跳了但没有完全跳,他仍然需要进行while循环。这就要引出continue这一与break相对的关键词,我们可以把上面的break换成continue看看有什么样的效果

和上一张图相比,我们可以看到,程序在不断的执行,而没有终止,这使因为continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接 到循环的判断部分,进⾏下⼀次循环的判断,而在这串代码中,i一直等于5,continue不断的把代码的进程调至while循环的判断处,代码又往下走,又再次遇到continue,不断的重复,从而形成了死循环。

b for循环

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

这是for循环的一个实践,可以看到,满足条件的i值被一次打印了出来。for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。

c do while

while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环;⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

可以看到do while循环语句至少会执行一次。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值