C语言是一种结构化的程序设计语言,它有顺序结构、选择结构、循环结构。
我们可以用使if、switch是西安分支结构,使用for、while、do while实现循环结构。
1.分支结构:
1.if语句
if(表达式)
语句;
如果表达式为真(非0),则语句执行;若表达式不成立(为0),则语句不执行。
2.else
if (表达式)
语句1;
else
语句2;
如果if中的语句不执行,就会执行else的语句。.
3.else if
if(表达式)
语句1;
else if(表达式)
语句2;
else
语句3;
4.嵌套if
在if分支语句中,可进行嵌套,形成多重if语句,以解决较为复杂的问题。
5.悬空else问题
如果有多个else和if,可以记住这样一条规则,else总是与最接近的if相匹配。
2.关系操作符
关系运算符主要有下面六个:
<小于运算符
>=大于等于运算符
<=小于等于运算符
==相等运算符
!=不相等运算符
关系表达式通常返回0或1,以表示真假。
注意:相等运算符==与赋值运算符=是两个不一样的运算符,不要混淆。看下面的代码:
if(a=3)
...
这样写程序就会运行错误(但不会报错),因为=3是赋值。可以将3写在==的左边,防止写成=(因为这样的话程序会报错)。
另外需要注意的是,多个关系运算符不可以连用。
3.条件操作符
条件操作符也叫三目运算符,需要有三个操作数。
exp1 ? exp2 : exp3
如果exp1为真,则exp2计算,反之exp3计算。计算的是整个表达式的结果。
4.逻辑操作符
!取反运算符:改变单个表达式的真假
&&:与运算符,并且意思(两侧的表达式都为真,则为真,否则为假)
||:或运算符,或者的意思(至少一个表达式为真,则为真,全假则假)
5.短路运算
C语言逻辑运算的一个特点是,他总是先对左侧的表达式求值,再对右边的表达式求值,顺序一定。但如果左边的表达式满足逻辑运算符的条件,就不再右边的表达式求值,这种情况我们称为“短路”。
6.switch语句
除了if语句
以外,C语言还提供了switch语句来实现分支结构。
switch较为特殊,可以用于判断条件有很多个结果的情况,算是else if 的更医用可读性更好的形式。
7.break和continue
break语句,用于跳出当前所在循环,break语句后的语句不再进行,但break语句不可跳出外部循环。
continue语句,当执行continue时,结束本次循环,不再执行本次循环后的语句,立马开始下一次语句。
8.default语句
在switch分支结构中,我们可能遇到一种情况,即switch语句后的值无法匹配case语句,这时我们可以选择不做处理,当然我们也可以选择使用default语句。
switch语句中case和default的顺序没有硬性要求,不过我们通常选择将default放在最后。
9.循环结构
1.while循环
C语言提供了3种循环语句,while就是其中一种:
while(表达式)
语句;
while循环的运行流程如下图:
2.for循环
for循环在三种循环中使用最多:
for(表达式1;表达式2;表达式3)
语句;
for循环中,表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
for循环的执行流程:
3.while循环和for循环的对比
4.do while循环
在循环语句中,do while 使用最少:
do
语句;
while(表达式);
do while区别于其他两种循环,它先直接直接进入循环体,然后再执行while后的判断语句,若表达式为真,再执行下一次,若表达式为假,不再继续循环,因此do while 循环至少进行一次。
do while 循环流程如下图所示:
10.goto语句
goto语句可以实现在同一个函数内跳转到标志处。(注意是在同一个函数!)
goto语句如果使用不当,就会使程序运行混乱,但goto语句也不是一无是处,如果我们想跳出多层循环,此时使用break语句较为麻烦,我们可以使用goto语句来完成这一操作。