目录
一、语句
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~