C语言中的分支语句——if和switch语句

一.什么是语句

C语言中由一个分号‘;’隔开的就是一条语句。比如:

       printf("hahan");

       1+2;

再比如:

       int main()

       {

               ;        

               return  0;

       }

单独的一个分号,也是语句,称为空语句。

二.if语句

1.语法结构:

1.if(表达式)

       语句;

2.if(表达式)

       语句1

 else

       语句2

3.if(表达式1)

       语句1

  else if(表达式2)

       语句2

   ·······

   ·······

   ·······

  else

       语句3

比如

#include<stdio.h>
int main()
{
int age=18;
if(age<18)
printf("未成年n");
else if(age>=18 && age<28)
printf("青年n");
else if(age>=28 && age<50)
printf("壮年n");
else if(age>=50 && age<90)
printf("老年n");
else
printf("高寿n");
}
结果是:

C语言中的分支语句——if和switch语句

在这里再说明一种情况:

C语言中的分支语句——if和switch语句

输出青年

 如果运行上图的代码会输出“青年”,这是因为C语言不允许这样写判断表达式,表示and用‘&&’;表示or用‘||’。一旦用18<=age<28,电脑会先判断前面那个操作符,再判断后面那个操作符,即18<=age错误则为0,再0<28正确,那么就会输出“青年”,(0为假,非0为真)

当条件成立,要执行多条语句时要用“{}”将所写的语句包括。如:

C语言中的分支语句——if和switch语句

 2.悬空else

#include<stdio.h>
int main()
{
int a=0;
int b=2;
if(a==1)
if(b==2)
printf("hhn");
else
printf("aan");
return 0;
}

当我们写下这样的一段代码,发现else的缩进很奇怪,不知道它是跟哪个if相匹配,我们再来看看输出结果:

C语言中的分支语句——if和switch语句

结果是没有输出,这是因为else是跟最近的未匹配的if配对,也就是说其实正确缩进是这样的:

C语言中的分支语句——if和switch语句

a==0,不符合条件表达式,所以后面的就不会执行,输出的也就是空。

三.switch语句

switch语句也是一种分支语句。常用于多分支的情况。
switch(整型表达式)
{
        语句项;
}

语句项就是一些case语句,比如:
case  整形常量表达式
        语句;

比如:

#include<stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一n");
case 2:
printf("星期二n");
case 3:
printf("星期三n");
case 4:
printf("星期四n");
case 5:
printf("星期五n");
case 6:
printf("星期六n");
case 7:
printf("星期天n");

}
return 0;
}

运行后发现,后面的都会输出:

C语言中的分支语句——if和switch语句

 这是因为break没有用到,在switch语句中,无法直接实现分支,搭配break才能实现分支

C语言中的分支语句——if和switch语句

每个case后面都最好加上break,这样更能避免出错。

case还有一种用法:

C语言中的分支语句——if和switch语句

像这样当我们输入1~5就会输出“工作日”;输入6~7就会输出“休息日”。

switch语句还需要考虑一点,就比如,如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结构就是所有的语句都被跳过而已。程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?你可以在语句列表中增加一条default子句。比如:

C语言中的分支语句——if和switch语句

像这样,当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。

​另外需要注意

C语言中的分支语句——if和switch语句

1.switch后面必须是整型变量
2.case后面整型常量表达式(整数)
下面举些例子来证明:

C语言中的分支语句——if和switch语句

发表评论

相关文章