分支语句(选择结构)
if
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式结果为真,则语句执行。在C语言中,0为假,非0为真。
悬空else
#include <stdio.h>
int main()
{
int a=0;
int b=2;
if(a==1)
if(b==2)
printf("2");
else printf("0");
return 0;
}//代码中的else即为悬空else,虽然从代码格式上看应与外if匹配,但else匹配规则是就近原则,与相邻较近的if进行匹配
switch语句
switch语句也是一种分支语句
switch(整型表达式)
{
语句项;//是一些case语句
case 整型常量表达式:
语句;
}
在switch中的break;
在switch语句中,没法直接实现分支,搭配break使用才能实现真正的分支。若没有break,代码将会依次执行所有switch中的语句。
break语句的实际效果是把语句列表划分成不同的部分
default子句
写在任何一个case标签可以出现的位置。
当switch表达式的值与所有case标签都不匹配时,default子句后的语句就会执行。
所以每一个switch语句中只能出现一条default子句。但是它可以出现在语句列表中的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。
循环语句
while循环
语句结构
while(表达式)
循环语句;
//while语句中的break和continue
#include <stdio.h>
int main(){
int i=1;
while(i<=10){
if(i==5)
break;
printf("%d",i);
i++;
}
return 0;
}//输出为1 2 3 4
break在while中的作用:
退出当前循环,并永久终止循环,若多层循环嵌套,只会跳出当前这一层循环
#include <stdio.h>
int main(){
int i=1;
while(i<=10){
if(i==5)
continue;
printf("%d",i);
i++;
}
return 0;
}//输出为1 2 3 4 6 7 8 9 10
continue在while循环中的作用
coutinue是用于终止当前循环中的本次循环,也就是本次循环中Continue之后的代码不会执行,而是直接跳转到while的判断语句,进行下次循环。
for循环
语句结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1 表达式1为初始化部分,用于初始化循环变量的。 表达式2 表达式2为条件判断部分,用于判断循环时候终止。 表达式3 表达式3为调整部分,用于循环条件的调整。
//break在for循环中
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ",i);
}
return 0; }
//continue在for循环中
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0; }
注意:
1.不可在for循环体内修改循环变量,防止for循环失去控制。
2.建议for语句的循环控制变量的取值采取“前闭后开区间”写法。
for循环变种
#include <stdio.h>
int main()
{
//变种1
for(;;)
{
printf("hehe\n");
}
//变种2
int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
printf("hehe\n");
}
return 0; }
do…while()循环
语法结构
do
循环语句;
while(表达式);
特点:循环至少执行一次,使用场景有限,大部分都可以用for循环替代。
do…while循环中的break和coutinue
//break
#include <stido.h>
int main()
{
do
{
if(5 == i)
break;
printf("%d\n", i);
}while(i<10);
return 0;
}
//continue
#include <stdio.h>
int main()
{
int i = 10;
do
{
if(5 == i)
continue;
printf("%d\n", i);
}while(i<10);
return 0; }
goto语句
C语言中提供了可以使用的goto语句和标记跳转语句,与汇编语言中的跳转语句有类似之处。
goto语句一般用于多层循环嵌套中,break无法直接从最内层循环退出到指定某上层循环中。因此需要goto进行跳转。
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)
// 处理错误情况