C语言:分支语句(思路详解)

简介: C语言:分支语句(思路详解)

语句概念

语句(statement)是C程序的基本构建块。一条语句相当于一条完整的

计算机指令。在C中,大部分语句都以分号结尾。

在我们使用分支语句和循环语句当中,常常会用到花括号括起一条或者多条语句的称为复合语句。


了解完语句的概念,接下来就来了解下分支语句。

分支语句

if语句

定义:

if ( expression )

statement

如果对expression求值为(非0),则执行statement;否则,跳过statement。

举个例子


代码:

int age=0;
scanf("%d",&age);
if(age<18)
{
    printf("未成年\n");
}


这是C语言if语句的基本写法。

在代码程序中,会根据你的岁数判断是否小于18,如果是就执行括号中的语句。否则跳过该语句。


if else 语句

定义:

if ( expression )

statement1

else

statement2

如果expression为真(非0),则执行statement1;如果expression为假或0,则执行else后面的statement2。


还是以上面例子为为例:

代码:

int age=0;
scanf("%d",&age);
if(age<18)
{
    printf("未成年\n");
}
else
{
    printf("成年人\n");
}

如果年龄小于18,就执行if语句,否则就会执行else语句

else if 语句

else if是对if语句进行拓展,当我们有多条件进行选择时,可以用到else if进行选择,称为多分支语句

例子:

char type;
scanf("%c",&type);
if(type=='A')
{
    printf("A型血\n");
}
else if(type=='B')
{
    printf("B型血\n");
}
else if(type=='O')
{
    printf("O型血\n");
}
else
{
    printf("AB型血\n");
}


这个就是对if语句有多个选择,当一块语句执行后,其他直接跳过,所以上下语句是有联系的。

那如果代码是这样呢

char type;
scanf("%c",&type);
if(type=='A')
{
    printf("A型血\n");
}
if(type=='B')
{
    printf("B型血\n");
}
if(type=='O')
{
    printf("O型血\n");
}
if(type=='AB')
{
    printf("AB型血\n");
}

这样子存在多条if语句,把每条if语句是单独的一部分,执行完一条if语句,需要对下一条if语句进行判断是否执行。这样子程序执行命令就会增多,所以,如果条件是相关的且只需判断一次,那么就用多分支语句

嵌套的if语句

先看代码:

int num=0;
scanf("%d",&num);
if(num>20)
{
    if(num%2==0)
    {
        printf("这是一个大于20的偶数\n");
    }
    else
    {
        printf("这是一个大于20的奇数\n");
    }
}
else
{
    printf("这是一个小于20的数\n");
}


很明显,先判断数是否大于20,再判断它的奇偶性,最终得出结果。

注意事项

如果你细心的话,会发现我每一个if语句都会用花括号进行括起,且进行一定的缩进,C并不要求一定要缩进,但这是标准风格。但如果有多条语句,而没有使用花括号括起,只会执行一条语句。

这是你想要的效果:

然后写了代码:

int num=0;
scanf("%d",&num);
if(num>20)
    if(num%2==0)
        printf("这是一个大于20的偶数\n"); 
else
    printf("这是一个小于20的数\n");

实际效果:


如果没有花括号括起,那么语句就会遵循就近原则,else寻找最近的if语句进行匹配,只有括起来才知道你想要与哪个if语句进行匹配。所以,我建议每个语句都括起花括号来,这样不但让人读起代码来一目了然,并且不会犯上面那种低级错误。

switch语句

当我们面对某个条件进行多分支判断时,可以使用switch语句,

这是switch的构造:

switch ( 整型表达式)

{

case 常量1:

语句

case 常量2:

语句

default : <–可选

语句

}

在这里switch后面的圆括号必须是整型类型的表达式(包括char类型).case之后用整型常量,default跟if语句中的else意思差不多,如果表达的值与所有的case标签的值都不匹配,那么就会跳转到default语句上执行。注意:default可以出现在case标签中的任意位置,当然,delault是可以选择的。


switch语句和break语句

先说一下break:程序执行到循环中的break语句时,会终止包含它的循环,并继续执行,虽然switch不是一个循环语句,但是没有break时,执行某一case标签后,该case标签之后的case标签语句也会执行。

下一阶段。

在我们使用switch语句时,常常和break进行搭配使用,这样子才能实现真实的分支。

int day=0;
scanf("%d",&day);
switch (day)
{
case 1:
printf("星期一\n");
    break;
case 2:
printf("星期二\n");
    break;
case 3:
printf("星期三\n");
    break;;
case 4:
printf("星期四\n");
    break;;
case 5:
printf("星期五\n");
    break;;
case 6:
printf("星期六\n");
    break;;
case 7:
printf("星期日\n");
    break;;
default:
    break;
}

当你输入数字时,如果是1到7,哪个数字,就会进行打印相应的星期,如果是其他数字,就会直接进入default跳出switch。

请看下面例子:

这种写法也叫做多重标签。所以如果程序内执行某条语句之后跳出程序,就用break进行截止跳出。

if语句和switch语句

如果是根据整型类型和常量来进行判断,优先使用switch语句。因为使用switch,程序通常运行快一些,生成的代码少一些。在不满足switch条件下(浮点型整型等),就使用if语句。


相关文章
|
5天前
|
C语言
C语言之分支结构
C语言之分支结构
24 0
|
5天前
|
Go C语言
爱上C语言:分支与循环(循环篇)
爱上C语言:分支与循环(循环篇)
|
5天前
|
C语言
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
|
5天前
|
程序员 编译器 C语言
C语言第五弹---分支语句(上)
C语言第五弹---分支语句(上)
|
5天前
|
程序员 Python
16.C语言:用switch语句实现多分支选择结构
16.C语言:用switch语句实现多分支选择结构
15 0
|
5天前
|
算法 C语言
C语言--------分支和循环语句
C语言--------分支和循环语句
23 0
|
5天前
|
C语言
介绍c语言中的分支,循环
介绍c语言中的分支,循环
26 0
|
4天前
|
C语言
C语言——入门分支与循环
C语言——入门分支与循环
4 0
|
5天前
|
C语言
初识C语言~分支语句
初识C语言~分支语句
|
5天前
|
C语言
【精通C语言】:分支结构if语句的灵活运用
【精通C语言】:分支结构if语句的灵活运用
26 1