关于分支与循环的一些理解

众所周知,C语言是一种结构化的语言,可见结构对于C语言的重要性,同时我们使用结构也足以解决生活中常见的大多数问题.

C语言中结构可分为3类

1.顺序结构,顾名思义就是按顺序自上而下执行

2.选择结构(分支),就是根据条件来决定执行什么样的语句

3.循环结构,就是在指定的条件下重复执行一定的语句,直到满足一定的条件后跳出循环

下面我将浅浅介绍一下我对分支和循环的一些理解

分支

可分为if分支和switch分支

if类型

if 单分支

if(条件)

{语句}

说明:()里的条件只要满足是真(非0),如果为真(非0),就会执行语句,如果为假(0),就不会执行语句,条件可以是一个表达式,一个数值 ,甚至可以是函数

例如下面这两个 一个打印了i,一个没有打印

if-else双分支

if(条件)

{语句}

else

{语句}

说明:如果满足()里的条件,就执行if语句,不满足的话都执行else语句,对于if-else双分支来说是二选一(要么...要么...),也就是说如果不执行if语句,就会执行else里面的语句条件,如果执行了if语句,就不会执行else语句

if-else if-else多分支

if(条件1)

{语句1}

else if(条件2)

{语句2}

else if(条件3)

{语句3}

......

else if(条件n)

{语句n}

else

{语句n+1}

说明:满足什么条件就执行其对应的语句,如果()里的条件都不满足,那么就执行else语句,同双分支一样选一执行,一旦有哪个语句被执行了,那么其他语句就不会被执行

分支的嵌套

对于分支语句来说,其执行的语句也可以是分支语句

这个判断a,b,c三个数哪个数是最大值就用到了分支的嵌套,理论上来说,分支可以不断嵌套,但如果不断嵌套,就会对代码的可读性和可维护性造成很坏的影响,所以分支的嵌套最好不要超过3层,如果超过了三层,就要考虑其他方法了

其次需要注意的一个点就是else和if的匹配问题,在多重嵌套中,else总是和在它之前出现的、尚未匹配的且离它最近的if相匹配,一是就近,二是未匹配,为什么要强调未匹配呢?因为一个if配一个else,一旦配对,就不会再匹配了

上面的匹配规则很复杂,简化一下就是

1.无花括号,else和上面离它最近的if匹配

2.有花括号,else和花括号内上面离它最近的if语句匹配

最后就是如果是多分支,else必须在所有else if的下面

switch类型

switch相对没有那么复杂

switch(整型)

case 常量1:     语句1;break;

case 常量2:     语句2;break;

.......

case 常量n       语句n;break;

default              语句n+1;break;

说明:()里面必须是个整型,例如char类型,int类型或者是一个整型表达式,返回值是int类型的函数等

下面是case后跟一个要比较的值和一个冒号,然后是执行语句和break;

至于这个default,可以把它类比为if语句中的else

这个break是必不可少的,因为break的功能是跳出;如果遇到了break,就不会再执行switch的其他语句,相当于给了switch一个出口,不会从某个case语句进去后执行到底,为什么default后面也要加break呢?这是为了方便扩展,如果后面我想在switch语句中加些其他选项,直接在default下面补充case就好了,比较方便,这与if语句中的else不同,default可以出现在switch中的任何位置

接着就介绍循环结构

循环结构

循环结构可以分为while循环,for循环,和do...while循环三大类

下面我将介绍一下三大循环

while循环

初始化表达式

while(条件)

{循环语句}

for循环

for(初始化;条件表达式;调整)

`do...while循环

do

{

语句

}while(条件表达式);

注意这个while后面要加;

三循环各自的用处

对于这三个循环,其用处并不相同,下面我将介绍一下三个循环各自的用处

对于while循环,其适合用于不知道循环次数的时候

对于for循环,其初始化,条件表达式和调整都在一起,显得更紧凑易读,同时更适应于已知循环次数的,例如对一个范围内的数进行判断

对于do...while循环,其区别于前两者就是不需要判断,先执行了再说,然后再根据条件表达式决定是否继续循环执行语句,例如在做一些小游戏的时候我们会用到do...while循环

循环的嵌套

同分支语句一样,循环语句也可以进行嵌套

对于这个程序来说,外层循环i是控制行的,内层循环k是控制列的

同样对于循环的嵌套,最好不要超过3层

循环的3个配套关键字

break

break作用,跳出当前循环,继续执行后面的语句

注意:break一次只能跳出一层循环,如果内层循环通过break跳出后,还会继续判断执行外层循环,所以对于嵌套循环,一定要注意break所在位置和跳出的是哪层循环

当我不知道循环次数时,我就可以写一个死循环,如果满足条件,那我就break跳出循环

while(1)

{

执行语句

if(条件表达式)          

break;

}

通过不断执行语句,直至满足条件表达式结束这个循环

continue

continue作用:跳出当前正在执行的循环,继续执行下一次循环

注意:continue只是跳过这次循环,而不是结束这次循环

我们可以看到*只打印了9个,这是因为i==2时跳过了循环,不会执行printf("*"),但是并没有跳出整个循环

结语

分支循环在C语言的程序设计中占据着很重要的地位,今天只是浅浅介绍了一下分支循环的基础语法和一些注意事项,更多的还要在做题中慢慢感悟,如循环嵌套,分支嵌套,循环套分支,分支套循环等等,希望我的分享能给你带来一些启发和帮助.

  • 63
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值