Switch 语句和分支嵌套|学习笔记

简介: 快速学习 Switch 语句和分支嵌套

开发者学堂课程【你的第一门C语言课 Switch 语句和分支嵌套】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5462


Switch 语句和分支嵌套|学习笔记


内容介绍:

一、 Switch 语句

二、 分支结构的嵌套


一、switch 语句

…//其他语句

Switch(表达式)

{

Case 常量表达式1:语句程序块1; 

Case 常量表达式2:语句程序块2

……

Case 常量表达式n:语句程序快n;

Default:语句程序块n+1 

}

……//其他语句

先计算小括号里表达式的值,case 后面的常量表达式或语句或程序块,表达式得到的值是某一个常量就会跳到对应的 case 上执行,如果上述所有 case 语句都没有符合的,那么就会执行 default 后面的语句或程序块。

defauIt 是可写的,如果没有 defauIt,并且上面没有符合的,那么 switch 语句就不会做任何动作。

程序代码编写:

通过平级反馈出来分数范围的程序,

#include

int main( )

{

char ch;

printf(""请输入成绩:");

scanf("%c", &ch) ;

switch (ch)

{

case "A':printf(你的成绩在90分以上! \n") ;

case 'B':printf(""你的成绩在80~90分之间l in");

case 'c' : printf(""你的成绩在70~80分之间l \n"");

case 'D' :printf("你的成绩在60~ 70分之间l \n");

case 'E' :printf("你的成绩在60分以下! \n"");

default: printf(“请输入有效的成绩评级!\n");

 }

return 0;

}

程序代码执行如下:

[ fishc@localhost sle12]$ gcc test1.c && ./a.out

请输入成绩:A

你的成绩在90分以上

你的成绩在80~90分之间!

你的成绩在70~80分之间!

你的成绩在60~70分之间!

你的成绩在60分以下l

请输入有效的成绩评级![ fishc@localhost s1e12]$

会发现下方所有的 case 都输出了,问题是C 语言并没有想象的那么智能,case、defauIt 都是标签而已。

所谓标签就是标志一个位置, switch 语句就负责跳转到这些标签指定的位置上,仅此而已,然后依次往下执行。

所以需要配合 break 语句:

…//其他语句

Switch(表达式)

{

Case常量表达式1:语句程序块1;break;

Case常量表达式2:语句程序块2 ;break;

……

Case 常量表达式n:语句程序快n;break;

Default:语句程序块n+1;break;

}

……//其他语句

当代码执行到 break 时,就会跳出整个 switch 语句,也就避开了其他的 case 和 defauIt,只需在每一个后面追加一个 break:

#include

int main( )

{

char ch;

printf(""请输入成绩:");

scanf("%c", &ch) ;

switch (ch)

{

case "A':printf(你的成绩在90分以上! \n") ; break;

case 'B':printf(""你的成绩在80~90分之间l in"); break;

case 'c' : printf(""你的成绩在70~80分之间l \n""); break;

case 'D' :printf("你的成绩在60~ 70分之间l \n"); break;

case 'E' :printf("你的成绩在60分以下! \n""); break;

default: printf(“请输入有效的成绩评级!\n"); break;

 }

return 0;

}

DefauIt 后面不用加,因为是最后一个语句了,但为了良好的习惯还是加上。

执行:

请输入成绩:A

你的成绩在90分以上!

[fishc@localhost sle12]$../a.out

这时其他的就不会被执行。


二、分支结构的嵌套

在一个 if 语句中包含另一个 if 语句,称为 if 语句的嵌套,也称为分支结构的嵌套。

if(表达式)

if(表达式)

……     内嵌if

else

……

else

if(表达式)

……内嵌if

else

……

图片1.png

首先进来把要求输入两个整数到变量a和b中,首先判断 a!=b,如果判断结果为 Y 的话,就判断 a>b,如果判断为 Y的话就输出 a>b,如果为 N 就输出 a

代码编写实例:

#include

int main ( )

{

int a, b;  //声明两个变量

printf("请输入两个数; ");

scanf("%sd %d", &a, &b) ;  //有些人这里会写上a=,不需要写,因为这里 printf 双引号里写入内容会打印出来,而写入 a=只是占位标志符,如果写上了后在输入的时候只能写上a=后在输入。

if(a!=b)  

{

if(a>b)

{

printf("%d > %d\n", a, b) ;

}

else

{

printf("%d < %d\n", a, b) ;

}

}

else

{

printf(”%d = %d\n”,a,b);

}

return 0;

}

程序执行结果如下:

[ fishc@localhost s1e12]$ vi test2.c

[ fishc@localhost sle12]$ gcc test2.c && ./a.out

请输入两个数:23 32

23 <32

[fishc@localhost sle12]$ ./a.out

请输入两个数:32 32

32=32

[ fishc@localhost s1e12]$ ./a.out

请输入两个数:32 23

32 >23

悬挂else

比如你看上了隔壁班的小花,那么你就计划着约人家周末去看电影,接下来就有两个问题:

1.小花有没有空

2.那天下不下雨

显然第一个问题是主要的,

代码编写实例:

include

int main( )

{

char isRain,isFree;

printf("是否有空? (Y/N)");

scanf ("%c",&isFree) ;

printf(""是否下雨?(Y /N)");

scanf("%c",&isRain) ;

if ( isFree.."Y)

{

if(isRain-="Y')

printf(记得带伞噢^_^\n"");

}

else

{

printf (""女神没空!T_T\n"");

}

return 0:

}

代码执行结果如下:

[fishc@localhost sle12]$ gcc bug1.c && ./a.out

是否有空? (Y/N)

输入Y会出现:

是否下雨? (Y/N)女神没空 !T_T

因为输入 y,然后回车,回车实际上也是作为一个字符去输入,所以第一个 %c 接收到的是 y,第二个接收到的是回车,所以需要把回车过滤掉写入:

getchar();

这时执行还是有问题,因为代码中如果不是 Free 的话,执行 else,实际上 C 语言有一个原则:else 始终与最接近它的 if 匹配。

解决的方法是在 if 下加入 { } ,说明{ }里的语句块当成一条语句执行,所以 else 就不会再去匹配 if 了。

如果屏幕太小,那么可以把左边的大括号移到上一行,右边保持一样。

执行,没有任何问题。

等于号带来的问题

判断小花是否有男朋友

代码编写实例:

#include estdio.h>

int main( )

{

char hasBF;

printf(""小花你有男朋友吗?(Y/N)"");

scanf ( ""%c"", &hasBF);

if (’Y’= hasBF )    

//这里不能用=,表示赋值,非0为真的,所以会执行下方内容,所以需要 ==  或者将两个数值对调一下。

{

printf(""那 ……祝福你们咯l \n");

}

else

{

printf(""那我们在一起吧l \n");

}

return 0;

}

执行会出错,因为:

if (hasBF=’Y’)    //这里不能用=,表示赋值,非0为真的,所以会执行下方内容,所以需要 ==  或者将两个数值对调一下:

if (’Y’=hasBF)

这样就相当于把 hasBF 赋值给 常量 y,编译器无论如何也不允许给一个常量赋值。

相关文章
分支和循环语句(2)补充goto语句
分支和循环语句(2)补充goto语句
54 1
|
6月前
|
Java
JavaSE——流程控制-介绍、分支结构(if分支、switch分支、使用switch分支的注意事项)
JavaSE——流程控制-介绍、分支结构(if分支、switch分支、使用switch分支的注意事项)
49 1
|
3月前
|
前端开发 JavaScript
前端基础(六)_流程控制语句(if、if-else、if-else嵌套、switch)
本文介绍了JavaScript中的流程控制语句,包括if、if-else、if-else嵌套和switch语句。
29 2
前端基础(六)_流程控制语句(if、if-else、if-else嵌套、switch)
|
4月前
|
编译器 C语言
语句、分支与循环详解
语句、分支与循环详解
|
7月前
|
Java
深入理解多分支语句 switch
深入理解多分支语句 switch
49 3
|
7月前
C 语言中的 switch 语句和 while 循环详解
替代多重 if..else 语句,可以使用 switch 语句。switch 语句用于选择多个代码块中的一个来执行
103 0
分支语句(if、if-else、if-else if...else、switch)
在c语言中有三种程序结构。 1 . 顺序结构 2 . 分支结构 3 . 循环结构 本文章讲的是分支结构
|
存储 算法 编译器
倾心创作,分支语句和循环语句(1)——分支语句—— if 和switch的用法详解
分支语句(条件判断语句、选择语句) (1)if语句 a if() { …… } b if……else…… c if……else if……else…… d.悬空else (2)switch语句 a.switch语句也是一种分支语句。常常用于多分支的情况。 b.break在switch中的作用 c.switch的使用
124 0
倾心创作,分支语句和循环语句(1)——分支语句—— if 和switch的用法详解
【学习笔记之我要C】if分支语句与switch分支语句
【学习笔记之我要C】if分支语句与switch分支语句
64 0