分支语句和循环语句

本文详细介绍了C语言中的控制语句,包括if单分支、if...else双分支和多分支结构,以及switch语句的使用。同时,讲解了while、for和do...while循环语句,强调了break和continue在循环中的作用。此外,还提到了缓冲区问题以及如何利用getchar()处理输入。
摘要由CSDN通过智能技术生成

目录

一、语句

二、分支语句(选择结构)

2.1if语句

2.2Switch语句

 三、循环语句

3.1while

3.1.1break

3.1.2continue

3.1.3缓冲区

3.2for

3.3do...while()


一、语句

C语言语句有5类:表达式语句(例如:1+5)、函数调用语句(printf("hehe\n"))、控制语句、复合语句、空语句。
主要介绍控制语句(c语言支持支持三种结构:顺序结构、选择结构、循环结构),C语言有九中控制语句,可分三类:

1.条件判断语句也叫分支语句:if语句、Switch语句;

2.循环执行语句:do whie语句、while语句、for语句;

3.转向语句:break语句、goto语句、continue语句、return语句。

二、分支语句(选择结构)

2.1if语句

if(表达式)         和    if(表达式)   和 多分支if(表达式)

    语句;                           语句1;                             语句1;

                                    else                                else if(表达式2)

                                          语句2;                           语句2;

                                                                           else

                                                                                   语句3;

if语句(满足if语句就执行,否则就不执行)

if else语句(满足if语句就不执行else语句,否则执行else语句)

if  ,else if  ,else多分支语句 (满足if语句,else if语句和else语句便不再执行,满足else if语句,else语句便不再执行,否则就执行else语句)

 注意:1.在if语句和else if语句和else语句后面默认只跟一条语句,若要控制多条语句,需要加{ }。

            2.在控制某个变量的范围时需注意写法,如图一:对a输入32,发现输出还是32,那是因为进入到if语句会先执行18<a,即18<32,此语句为真即为1(C语言中假为0,真为非0),1在和32比较还是为真,此时if语句为真,即执行打印a,而正确的写法是a>18 && a<30(逻辑与(&&)跟数学当中的并且差不多),如图二:

图一

图二

               3.在没有{ }的情况下,else语句只会跟最近的if语句进行匹配,如图一:对a输入30,进入第一个if语句执行打印a,接着进入第二个if语句不满足条件,但注意的是else语句也执行了,那是因为在无{}情况下else语句是跟最近的if语句匹配的,跟if和else的位置无关。正确的做法是加上{}如图二:

 图一

图二 

2.2Switch语句

 Switch语句常用于多分支的情况,一般都有break和default语句,break用来结束Switch语句,当没有break语句时,从满足case的情况下,其后面的语句都执行,default为其他情况,进入Switch语句中,当其他语句都不满足时或者其他条件满足时没有break情况下便执行default语句。

注意:break只能结束一层Switch语句。case语句和default语句没有顺序可言,但为了规范,还是注意书写顺序。

 三、循环语句

有while     for    do  while 。都离不开break,continue这两个语句

3.1while

3.1.1break

break语句能够终止循环,但break一次只能终止一个循环,当有嵌套的循环语句且break在嵌套语句里面时,便只能终止嵌套的循环语句,外层的循环语句需要再加一个break才能终止。

3.1.2continue

遇到continue时,continue后面的语句都不执行,直接进入下一次循环,即用来跳出本次循环,进行下一次循环。

3.1.3缓冲区

缓冲区:使用scanf库函数时,从键盘敲入的每一个值会记录在缓冲区,scanf接着再去读取缓冲区的值。如下图,输入一串数字确认密码,敲回车键\n,接着scanf先读取123456,但缓冲区中还有\n,第二个scanf便读取后面敲的回车键\n,结果才会得出确认失败。

怎么解决呢,引入getchar()函数,getchar从键盘读取一个字符,因此可以用getchar来单独读取后面的\n。补充:getchar的返回值为字符的ASCll码值,获取字符失败,则返回EOF--end of file 其值为-1,在输入界面按下ctrl+e会让scanf或getchar返回EOF

3.2for

break语句和continue语句在for循环当中的用法和在while的用法是一样的。

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

   循环语句;

表达式1:初始化部分。 表达式2:用来判断循环时候终止。 表达式3:用于循环条件的调整。

先执行表达式1(注意表达式1只执行一次),后2,再循环语句,然后3,接着2,循环语句,3,2,循环体,一直这样下去,直到不满足条件即表达式2为止。对比while循环和for循环,在形式上for循环风格更胜一筹。

注意1种形式:for(;;),初始化,判断条件,调整部分都省略的话,此时判断条件恒为真。就会死循环下去。当然还有for(;i=1;i++)省略初始化条件,for(i=1;i<10;)等类型的形式,但要注意慎用。

3.3do...while()

do

{

...

}while(表达式);此循环从do开始至少执行循环语句一次,接着进入while判断是否成立下一次执行的条件,break和continue的用法跟for和while也是一样的。

end~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值