我是靠谱客的博主 迅速小蝴蝶,这篇文章主要介绍C语言学习汇总(四)----if语句和switch语句if语句switch 语句,现在分享给大家,希望可以做个参考。

目录

if语句

if 语句的第一种形式

 if 语句的第二种形式

if 语句的第三种形式

常见错误:

if嵌套

switch 语句

switch语句和if…else if…else 语句的区别与应用

switch 语句的一般形式


在前面的学习,所编写的程序都是按照顺序结构进行设计。在顺序结构中,程序从上到下逐行执行,中间没有任何跳跃,每行语句都会被执行到。虽然采用顺序结构已经可以满足编程需求,但实际上,在很多情况下,我们期望当满足某个条件时才执行某段程序,否则就不执行。如:

(1)如果学生的成绩大于等于 60 分,就输出「及格」,否则就输出「不及格」;

(2)判断一个人的性别,如果是男生,就输出「男」,否则就输出「女」;

(3)如果年龄大于等于 18 岁,就输出「成年人」,否则就输出「未成年人」。

对于这样的需求,采用顺序结构显然是不行的,因为代码即使出现在程序中,也有可能不会被执行。为了解决这类问题,C 语言提供了选择结构,也被称为分支结构。采用选择结构设计的程序在执行时,并不是从上到下逐行执行,而是根据不同的条件执行不同的代码。

C 语言为实现选择结构提供了两种语句:

(1)if 选择语句;

(2)switch 选择语句。

下面将详细介绍这两种选择语句。

if语句

if 语句是通过判断给定的条件是否为「真」,来决定是否执行指定的代码,if 语句的写法有很多,常用的形式有三种,我将依次介绍。

if 语句的第一种形式


if 语句的第一种形式如下所示。

if(表达式)语句

if(表达式)

{

语句块

}

说明:(1)表达式一般是比较表达式、或逻辑表达式。

(2)语句可以是单行语句,也可以是复合语句(语句块)。

第一种 if 语句的执行过程为:如果表达式的运算结果为「真」(非 0 为「真」),则执行 if 后面的语句,如果为「假」(0 为「假」)直接跳过该语句(语句块)继续向下执行。

例子:(如果下面函数基本格式还不清楚的可以复习一下看C语言总结汇总一)

01 #include<stdio.h>

02 int main()

03 {

04 int age=8;

05 if(age>18)

06 {

07   printf(「年龄大于 18n」);

08 }

09 printf(「执行结束n」);

10 getchar();

11 return 0;

12 }

运行结果:

 

01 #include<stdio.h>

02 int main()

03 {

04 int age=28;

05 if(age>18)

06 {

07   printf(「年龄大于 18n」);

08 }

09 printf(「执行结束n」);

10 getchar();

11 return 0;

12 }

运行结果:

 if 语句的第二种形式


if 语句的第二种形式如下所示。

if(表达式)

{

语句 1

}

else

{

语句 2

}

这种形式的 if 语句也被称为 if…else…语句,该语句的执行过程为:如果表达式结果为「真」(非 0),执行 if 后面{ }中的语句 1。如果为「假」(0),则执行 else 后面「{ }」中的语句 2。也就是说 if 与 else 后面的语句只能有一个被执行。

if…else…语句使用。

例子:

01 #include<stdio.h>

02 int main()

03 {

04 int age=10;

05 if(age>18)

06 {

07   printf(「成年人n」);

08 }

运行结果:

 

01 #include<stdio.h>

02 int main()

03 {

04 int age=20;

05 if(age>18)

06 {

07   printf(「成年人n」);

08 }

09 else

10 {

11   printf(「未成年人」);

12 }

13 getchar();

14 return 0;

15 }

运行结果:

if 语句的第三种形式

如下所示。

if(表达式 1)

{

语句 1;

}

else if(表达式 2)

{

语句 2;

}

……

else if(表达式 m)

{

语句 m;

}

else

{

语句 n;

}

这种形式的 if 语句也被称为 if…else if…esle 语句,该语句的执行过程为:依次判断表达式的值,当其中一个表达式结果为「真」(非 0)时,执行其后面对应的语句,然后直接跳出整个 if 语句。如果所有的表达式都为「假」,则执行 else 后面的语句,然后跳出整个 if 语句。

 

if…else if…else 语句的使用。

例子:

01 #include<stdio.h>

02 int main(void)

03 {

04 int age=16;

05 if(age<0)

06 {

07 printf(「%sn」,「年龄不正确」);

08 }

09 else if(age<6)

10 {

11   printf(「%sn」,「婴儿」);

12 }

13 else if(age<18)

14 {

15   printf(「%sn」,「青年」);

16 }

17 else if(age<50)

18 {

19   printf(「%sn」,「大叔」);

20 }

21 else

22 {

23   printf(「%sn」,「老爷爷」);

24 }

25 getchar();

26 return 0;

27 }

运行结果:

01 #include<stdio.h>

02 int main(void)

03 {

04 int age=60;

05 if(age<0)

06 {

07   printf(「%sn」,「年龄不正确」);

08 }

09 else if(age<6)

10 {

11   printf(「%sn」,「婴儿」);

12 }

13 else if(age<18)

14 {

15   printf(「%sn」,「青年」);

16 }

17 else if(age<50)

18 {

19    printf(「%sn」,「大叔」);

20 }

21 else

22 {

23   printf(「%sn」,「老爷爷」);

24 }

25 getchar();

26 return 0;

27 }

运行结果:

常见错误:

if语句后面多加了分号 ;

比较运算符== 误用为赋值运算符=

if嵌套

if 语句嵌套指的是在 if 语句中再嵌套 if 语句。以第一种形式 if 语句为例,在其中嵌套 if 语句时,形式如下:

if(表达式 1)

{

if(表达式 2)  //if 语句嵌套

{

语句;

}

}

下面通过例子来了解一下 if 语句的嵌套使用。

01 #include<stdio.h>

02 int main()

03 {

04 int age=35;

05 if(age>18)             //外层 if 语句

06 {

07   printf(「age 大于 18」);

08   if(age>30)           //内层 if 语句

09   {

10       printf(「age 大于 30」);

11   }

这里设定以整数 1 表示男,0 表示女。

【测试代码 1】

01 #include<stdio.h>

02 int main(void)

03 {

04 int age=20;

05 int gender=0;

06 if (1==gender)

07 {

08   if(age<8)

09   {

10      printf(「%sn」,「男婴」);

11   }

12   else if(age<18)

13   {

14      printf(「%sn」,「男生」);

15   }

16   else if(age<50)

17   {

18      printf(「%sn」,「叔叔」);

19   }

20   else

21   {

22      printf(「%sn」,「爷爷」);

23   }

24 }

25 else

26 {

27   if(age<8)

28   {

29      printf(「%sn」,「女婴」);

30   }

31   else if(age<18)

32   {

33      printf(「%sn」,「女生」);

34   }

35   else if(age<50)

36   {

37      printf(「%sn」,「阿姨」);

38   }

39   else

40   {

41      printf(「%sn」,「奶奶」);

42   }

43 }

44 getchar();

45 return 0;

46 }

运行结果:

【测试代码 2】

01 #include<stdio.h>

02 int main(void)

03 {

04 int age=20;

05 int gender=1;

06 if (1==gender)

07 {

08   if(age<8)

09   {

10      printf(「%sn」,「男婴」);

11   }

12   else if(age<18)

13   {

14      printf(「%sn」,「男生」);

15   }

16   else if(age<50)

17   {

18      printf(「%sn」,「叔叔」);

19   }

20   else

21   {

22      printf(「%sn」,「爷爷」);

23   }

24 }

25 else

26 {

27   if(age<8)

28   {

29      printf(「%sn」,「女婴」);

30   }

31   else if(age<18)

32   {

33      printf(「%sn」,「女生」);

34   }

35   else if(age<50)

36   {

37      printf(「%sn」,「阿姨」);

38   }

39   else

40   {

41      printf(「%sn」,「奶奶」);

42   }

43 }

44 getchar();

45 return 0;

46 }

运行结果:

switch 语句

switch语句和if…else if…else 语句的区别与应用

上一节介绍了处理多分支结构的 if…else if…else 语句。在实际应用过程中,读者是否发现这样的问题,当分支比较多时,if 语句会变得冗长且难以阅读。为了解决这个问题,C 语言提供了另外一种多分支处理语句:switch 语句。

为什么要引入 switch 语句?

既然 C 语言已经提供了 if…else if…else,为什么还要引入 switch 语句?相信很多读者都有这种疑问,下面论述一下这两者的共同点与区别。

(1)这两者都可以用于多分支结构,但 if…else if 语句更适合于对范围值的判断,例如,[0,10]。而 switch 更适合于对离散值的判断,例如,1、3、5、10、100。

(2)所有的 switch 语句都可以用 if…else if 语句来替换,因为 if…else if 语句只需对每个离散值分别做判断即可。

(3)不是所有的 if…else 语句都可以用 switch 语句来替换,因为区间里值的个数是无限的,并且 switch 所接受的值只能是整型或枚举型,所以不能用 case 一一列举。

switch 语句的一般形式

为:

switch(表达式)

{

case 常量表达式 1: 语句 1;

break;

case 常量表达式 2: 语句 2;

break;

……

case 常量表达式 n: 语句 n;

break;

default: 语句 n+1;

}

对于 switch 语句形式,有以下几点需要说明和注意。

(1)switch 括号中表达式的运算结果必须是整数类型(包括字符类型),如 long、int、short、char 等。

(2)case 后面的常量表达式运算结果也必须是整数类型。

(3)switch 下面的花括号内是一个语句块。语句块中包含多个以 case 开头、break 结尾的行,唯一一个以 default 开头的语句出现在语句块的结束部分,并且只能出现一次。

(4)当表达式的值与 case 后面的值相等时,就执行该 case 后面的语句,接着执行下一行的 break,然后退出整个 switch 语句,switch 语句中其他语句都不再执行,这一点和 if…else if…else 语句类似。

(5)如果表达式的值与所有 case 后面的值都不匹配时,则执行 default 后面的语句,然后退出 switch 语句。

(6)switch 语句中的「case 常量」只是一个标记,一旦 switch 语句表达式的值与其中一个 case 后面常量匹配时,就会从该 case 行一直执行下去,直至遇到 break 停止,然后退出 switch 语句块。

使用 switch 语句判断季节。

01 #include<stdio.h>

02 int main(void)

03 {

04 int month=8;

05 switch(month)

06 {

07 case 3:

08   printf(「春天」);

09   break;

10 case 4:

11   printf(「春天」);

12   break;

13 case 5:

14   printf(「春天」);

15   break;

16 case 6:

17   printf(「夏天」);

18   break;

19 case 7:

20   printf(「夏天」);

21   break;

22 case 8:

23   printf(「夏天」);

24   break;

25 default:

26   printf(「月份错误」);

27 }

28 getchar();

29 return 0;

30 }

运行结果:

虽然示例 4-8 实现了季节判断功能,但是代码冗余,例如:

case 3:

printf(「春」);

break;

case 4:

printf(「春」);

break;

case 5:

printf(「春」);

break;

这段代码中,printf(「春」);break;重复出现了三次,显然代码冗余。下面对这段代码进行优化,优化后的代码为:

case 3:

case 4:

case 5:

printf(「春」);

break;

优化后的程序表示的含义是,只要 switch 表达式的结果与 case 3、case 4、case 5 中任意一个值匹配,都执行 printf(「春」);break;语句。同理 case 6~case 8 也可以这样进行优化。

优化后:

01 #include<stdio.h>

02 int main(void)

03 {

04 int month=8;

05 switch (month)

06 {

07 case 3:

08 case 4:

09 case 5:

10   printf(「春天」);

11   break;

12 case 6:

13 case 7:

14 case 8:

15   printf(「夏天」);

16   break;

17 default:

18   printf(「月份错误」);

19   break;

20 }

21 getchar();

22 return 0;

23 }

 注:

 switch 语句中表达式的运算结果只能是整数类型(char 本质上也是整数),如果是其他类型编译会报错。

case 后面的常量表达式运算结果必须是整数类型,如果是其他类型编译会报错。

大多数情况下,case 后面的语句都需要加 break 作为结束,否则就会出现错误结果。

case 后面各个常量表达式的值不能相同,否则编译会报错。

switch 中的 default 相当于 if…else if…else 语句中的 else,当 switch 表达式的结果值与所有 case 都不匹配时,就执行 default 后面的语句。

最后

以上就是迅速小蝴蝶最近收集整理的关于C语言学习汇总(四)----if语句和switch语句if语句switch 语句的全部内容,更多相关C语言学习汇总(四)----if语句和switch语句if语句switch内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部