目录
一、选择结构(分支结构)
选择结构(分支结构):代码会被分成多个部分,程序会根据特定条件(某个表达式的运算结果)来判断到底执行哪一部分。
if 语句
在C语言中,使用if和else关键字对条件进行判断,并根据判断结果执行不同的语句。
格式:
if (判断条件) {
语句块1
} else {
语句块2
}
执行过程:如果判断条件成立,那么执行语句块1,否则执行语句块2
判断条件中不是必须要包含关系运算符,它可以是赋值表达式,甚至也可以是一个变量。
语句块(Statement Block),就是由{ }包围的一个或多个语句的集合。如果语句块中只有一个语句,也可以省略{ },在 } 之后不需要再加分号 ,当然加上也没错。
单独使用 if 语句的格式:
if (判断条件) {
语句块
}
执行过程:如果判断条件成立就执行语句块,而不满足条件时就直接跳过。
多个if else语句格式:
if (判断条件1) {
语句块1
} else if (判断条件2) {
语句块2
} else {
语句块3
}
执行过程:从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。即一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行。
switch 语句
switch语句:用来代替简单的、拥有多个分支的 if else 语句
格式:
switch ( 表达式 ) {
case 整型数值1 : 语句1; break;
case 整型数值1 : 语句1; break;
...
default : 语句n;
}
执行过程:首先计算“表达式”的值,然后和case后面的数值进行比较,当和某个数值相等时就会执行后面所有的语句。如果都不相等就执行 default 后的语句。
当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。为了只执行某个分支,必须要在每个分支最后添加 break (当 break 关键字用于 switch 语句时,会终止执行整个 switch而执行整个 switch 语句后面的代码)。由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break ; 语句。
case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量,可以是整型或字符型。
default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
条件运算符
可以认为条件运算符是一种简写的 if else,完全可以用 if else 来替换。
格式:
表达式1? 表达式2: 表达式3
条件运算符是C语言中唯一的一个三目运算符。
执行过程为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。
条件表达式通常用于赋值语句之中。
条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(a>b) ? a : b; 可以去掉括号写为 max=a>b ? a : b;
条件运算符的结合方向是自右至左。 a>b ? a : c>d ? c : d;应理解为:a>b ? a : ( c>d ? c : d );
二、循环结构
循环结构:程序会重新执行同一段代码,直到条件不再满足,或者遇到强行跳出语句(break 关键字)。
循环条件为真时进入循环
for循环
for 循环是最常用的循环,功能强大,使用灵活,完全可以取代其他循环。
格式:
for (表达式1; 表达式2; 表达式3) {
语句块
}
表达式1:通常是初始化语句,也可以是其他语句。只在第一次循环时执行。
表达式2:循环条件,一般是关系表达式或逻辑表达式,也可是数值或字符,只要其值非零就执行循环体。
表达式3:很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。
三个表达式都是可选项,都可以省略(但分号 ; 必须保留)。表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。
执行过程:
while循环
格式:
while (循环条件) {
循环体
}
执行过程:先计算循环条件表达式的值,当值为真(非0)时, 执行循环体,执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。
整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。
while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。
do-while循环格式:
do{
循环体
} while (循环条件);
相比于其他循环,do-while 循环至少要执行一次循环体。
while(循环条件); 后的分号不能省略。
goto 语句
goto 语句也能构成循环结构。不过由于 goto 语句很容易造成代码混乱,维护和阅读困难,饱受诟病,不被推荐,而且 goto 循环完全可以被其他循环取代,所以后来的很多编程语言都取消了 goto 语句,goto 语句在实际开发中很难见到。
跳出循环
break语句 :当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
continue 语句:跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用。