关于分支与循环的理解

我们都知道,c语言中分支与循环是相互统一,相互配合的,如果二者能有效的结合使用,那么对于我们程序的生成效率和语法规范来说是有着重大帮助的!!!

分支语句

分支语句包括if和switch语句,循环语句包括while,do while以及for语句,当然还有break continue以及goto语句的辅佐!

分支的理解:

if语句

if(条件表达式)
{
 执行的语句;
}

表示如果条件表达式成立,就执行括号内的语句,否则不执行。

一定要注意c语言中“非0表示真”,“0表示假”!

还有与if配套的else,表示如果if语句不执行就执行else里的语句,这里else是不需要条件的。if和else可以通过级联和嵌套来使用,就像套娃一样可以将不同的条件列举出来,帮助我们更好的处理复杂的条件判断逻辑!

对于if语句的括号问题要注意,if和else默认控制一条语句,因此如果想实现多条语句的控制,一定要加括号。

else

else
{
 执行的语句;
}

if型嵌套

第一种嵌套我称之为“if型嵌套”:

if()

{        

        if()

       {

             ..............

       }

        else

       {

       }

}

你可以接着嵌套!

if else级联

第二种我称之为“else型嵌套”,也是if else级联
有两种写法

if()

{      

}  

else

{

        if()

        {

             ..............

        }

        else

        {

        }

}

你可以在第一种基础上改一下变成:

if()

{

   ......

}

else if()

{

    ......
}

else if()

{

    ......

}

我感觉这样写最好!哈哈

为了程序的美观括号记得对齐

else悬空问题

最后一个关于else悬空问题:

else总会跟着最近的if来,

int a;

int b;

if(a == 0)

             if(b == 1)

                printf("hehe\n");

else

printf("fine\n");

虽然else和上面的if对齐了但是他是b==1那个if的else,相当于我说的"if型嵌套"。而且这个代码让人看着真的不舒服!!!!!

switch-case

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式,有的情况下switch确实好用(比如输出工作日和节假日的代码)

switch (expression)

{

case value1:

.....;

break;



case value2:

.....;

break;



default:

.....;

break;

}

这是switch的语法结构。switch 后的 expression 必须是整型表达式(比如 b%3==1) ,同时case 后的值,必须是整形常量表达式(比如整型数据1).

特别注意case 和后边的数字之间必须有空格 , 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。break其实比较灵活,可以根据实际效果来进行调整!

default的作用是expression的值无法匹配case那么就会执行default,一般default应该要有个break。

额外补充一点:case和default不用考虑先后顺序,因为执行过程中会自动匹配(编译器还没傻到这种程度,哈哈开个玩笑!)。

对了,if else语句其实可以保证代码的连贯性,比如在打印菱形的时候,上半部分的菱形语句与下半部分的菱形语句是并列的,如果没有if和else的参与,代码执行就有点顿一下的感觉。

作为机器人工程专业的学生,我也了解过一些自动控制类的知识,不过我只是简单地初步理解。某些计算机专业的同学可能不太知道这一点,举个例子,比如我想让机械臂转90°角,如果不注意代码的连贯性,可能导致第一个代码直接一步到位转了90°,而第二个代码反应有点慢(比如先转60°再转30°),这两种的实际效果完全不一样,第二种的误差更大,不利于实际操作。

ok,接下来是循环的理解:

循环

while循环

while 语句的语法结构和 if 语句⾮常相似。

while(表达式)

语句;

与if一样,while里面的循环体也可以加大括号,”循环体“这是循环语句的专有名称(其实就是复合语句或者代码块)。

for循环

for(表达式1; 表达式2; 表达式3)

语句;

也可以加上大括号使得循环体里更丰富。

表达式1里是初始化变量,表达式2是循环是否执行的判断条件;表达式3是每次循环结束后所要做的操作。

执行的顺序:

比如for(int a = 0; a<=8; a++)

语句;

第一次循环首先执行表达式a = 0,之后判断条件,一般第一次都会执行,这里a小于8,执行完后a++。第二次循环a等于1时判断条件a是否小于等于8,a这里确实小于8,所以执行语句,执行完最后别忘了a++此时a为2,以此类推。除了初始化值被执行一次外,之后循环基本上都是表达式2、表达式3、语句在循环。

如果条件显然,表达式1 2 3都可以省略不写,但是两个分号不能空,因为我们要维护for循环的语法格式!

do while循环

这个循环比较特殊,不管条件成不成立,都先执行一次然后判断条件来决定后续循环体是否执行。所以do while循环至少做一次!

do

{

语句;

} while(表达式);

这是基本语法格式,一定不能忘了while后的分号!

ok,我再总结一下本人关于这三个循环的理解!

首先是while和for循环,代码较多的时候 while 循环的三个部分就⽐较分散,而for循环不会有这个缺点,所以从形式上 for 循环要更优⼀些。

其次while循环可以实现不规则的计算,而for循环容易实现有规律计算,因此可以看自己的需要。

do while侧重于至少执行一次这个特点,可以有很多创新,比如猜数字游戏,我不管游戏是否能成功执行,我需要先打印一个简易的菜单,这个时候就要用do while循环实现这个目的。

总之,以上三种循环各有利弊,有时可以相互配合使用,效果会更好!

break、continue、goto语句。

break是当前跳出循环,只能跳一次,之后就不再执行这个被跳出的循环了!

而continue是跳过这个条件下,continue后面的语句,重新进行下一个循环(是同一循环)条件的判断,举个例子,打印从1到100的奇数,我可以用continue来跳出所有偶数的情况,最终只输出奇数。

因此break比较彻底,而continue留有余地!

goto语句就太暴力了,goto 语句可以实现在同⼀个函数 内跳转到设置好的标号处。

举个例子:

        printf("girl\n");

goto next:

        printf("boy\n");

next:

        printf("跳过了boy的打印\n");

是不是很暴力!不过一般不轻易使用goto语句,除非你想跳出多重嵌套循环,因为你就算用break语句跳循环,每一次也只能跳出一个,无法彻底跳出所有循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值