分支与循环

一.if语句

 

if语句注意的点有:默认if语句后面只能跟一条语句,后面if,else多的时候 ,if else的匹配遵循就近原则,else就会和最近的if匹配。如上图的else就会与if(b==2)匹配。

注意捏,if语句()里面为判断真假条件,假则不能接着向下进行,例如(0),则为假,不能进行

所以代码风格很重要,适当的在if后面使用{}可以使代码的逻辑更加清楚。


二.switch语句

基本框架如图 ,但要注意:1.switch(整型表达式),里面的表达式不能用浮点型,只能用整型2.case后面必须是整型常量表达式        3.default语句可前可后      4.在最后一个 case 语句的后面加上一条 break语句(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)  5.每个switch语句中只能出现一条default子句   6.在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 


三.while语句


 

 大概组成如图所示,下来介绍break,continue在while语句中的作用

 在此处当a的值等于15时,执行break。在循环中只要遇到break,就停止后期的所有的循环,直接终止循环,相当于直接跳出while的大括号

所以break在while循环中的作用是终止永久循环

此处有个编程好习惯:用15==a来代替a==15,这样少打个=会有提示

 在此处当a>15后就一直在如图中循环,不进入下一步,所以continue的作用为终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断


getchar   putchar  是一对

scanf和getchar是输入,printf和putchar是输出
getchar,putchar是单一针对字符型
scanf,printf输入输出各种类型都得。

putchar(getchar)都是只输入(输出)一个单个字符,如果输入(输出)的是字符串,函数也只读取头一个字符,如果下面还有getchar(putchar)函数则接着上个getchar(putchar)函数读到输入缓冲区 

 

输入是文件结束符EOF时,即windows下为组合键ctrl+z ,getchar才会停止执行,不再接收

下面来个情景模拟,深入理解getchar用法

为什么会没输入Y或N就运行结束,直接就确认失败了呢?

 在输入缓存区中,scanf取走abcdef,碰到\n时停止。但是输入缓存区还剩下\n,下面的getchar检测到输出缓存区还有数则直接取走,所以此时ch=‘\n’,直接确认失败

 当你在scanf下面加入一个getchar,此时的getchar就有一个清理键盘缓冲区的作用,拿走缓冲区里面的数据,从而不会影响到下面getchar的接收

使用scanf要注意,scanf在输入缓冲区遇到空格也会停止截取数据 !!

还有一个getchar,putchar的相关代码

这是一串只打印数字字符,跳过其他字符的代码,可以看到数字的后面在闪烁,并未停止,说明仍在循环。


三.for语句

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

表达式1为初始化部分,表达式2为条件判断部分,表达式3为调整部分。

相对于其他语句来说,for循环的风格更胜一筹,更加的简便清晰,for循环使用的频率也最高。

break和continue在for里面的作用和while里面的作用大致相同,但是也有一些轻微的变化

 如上两图,第一图为while语句,a==5以后就一直在判断条件上循环,陷入死循环。

第二图为for语句,a==5以后就跳过了下面的5的打印,回到调整部分a++,再接着到判断部分继续

当for嵌套起来时,for中for:

 进行了3*3*3=27次循环,每个for循环的次数相乘即为总循环次数,for嵌套里面的进行完就往外一层接着进行。

for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致出现问题,来看 下面这种情况:

分析:J中循环,进行了三次,然后j=3,出到外面i循环,然后i++,i=1,接着进入J循环,但是此时j并没有初始化,j还是3,就不会进行打印。

还要学会使用多余变量来控制循环:

 通过x,控制循环在2次。

习惯建议:

1.采用前闭后开写法,for(i=0;i<=9;i++)和for(i=0;i<10;i++)效果是一样的,但是前闭后开更清楚直观,例如展现了会循环几次。

2.不可在for 循环体内修改循环变量,防止 for 循环失去控制。


四.do while语句

do while语句和别的语句不同,是先执行再判断 ,且至少循环一次,因为使用的场景有限,所以不是经常使用

break和continue在do while中的作用和在其他语句的作用一样

如上,一样的跳出循环 。

 do while语句少用就对了


五.goto语句

如图goto语句直接跳到紧跟其后的步骤again处 ,从而实现循环。goto语句一般情况下,很少用,因为goto语句可控性低,风险大。

其主要作用:是终止程序在某些深度嵌套的结构的处理过程。

例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

 如图,直接跳出多层for嵌套

很多时候,使用循环的实现方式替换goto语句,理论上实践上goto语句也是没有多大必要的

 分支循环完结撒花

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cristiano777.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值