switch语句最新最全PPT课件_第1页
switch语句最新最全PPT课件_第2页
switch语句最新最全PPT课件_第3页
switch语句最新最全PPT课件_第4页
switch语句最新最全PPT课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-11-41 switch 语句2021-11-42 7.1 switch 语句语句: switch 语句语句是一条多分支选择语句是一条多分支选择语句. 在实际应用中,要在多种情况中选择一种情况在实际应用中,要在多种情况中选择一种情况,执行某执行某一部分语句。一部分语句。 当然可以使用嵌套的当然可以使用嵌套的if , if else if语句来处理,但其分支语句来处理,但其分支过多,程序冗长,难读过多,程序冗长,难读, 不够灵巧。不够灵巧。2021-11-43 switch语句是语句是c语言中语言中处理多路选择处理多路选择问题的一种问题的一种更直观更直观和有效的手段和有效的手段. 在测

2、试某个表达式是否与在测试某个表达式是否与一组常量一组常量表达式表达式中中的某一值相配时的某一值相配时,switch语句显得更为方便语句显得更为方便.一般形式如下:一般形式如下:2021-11-44 switch(表达式表达式 ) case 常量表达式常量表达式1: 语句语句1 break; case 常量表达式常量表达式2: 语句语句2 break; case 常量表达式常量表达式n: 语句语句n break; default: 语句语句n+1 说明说明: (1). 关于关于表达式表达式: 表达式可以是表达式可以是整型、字符型等表达式。整型、字符型等表达式。 有一个确定的值有一个确定的值(不是

3、逻辑值不是逻辑值).(2). 关于常量表达式关于常量表达式1n: 只起到只起到一个标号的作用一个标号的作用,根据表达式的值来根据表达式的值来判断判断, 找到一个相匹配的入口处找到一个相匹配的入口处,程程序往下执行。序往下执行。 各个各个case后的常量表达式的值后的常量表达式的值必须互不相同必须互不相同.(3). 每个每个case分支可有多条语句分支可有多条语句,可不用花括号,可不用花括号 。2021-11-45 switch(表达式表达式 ) case 常量表达式常量表达式1: 语句语句1 break; case 常量表达式常量表达式2: 语句语句2 break; case 常量表达式常量表

4、达式n: 语句语句n break; default: 语句语句n+1 (4). 各个各个case 语句只是一语句只是一个入口标号个入口标号,并不确定执行并不确定执行的终止点的终止点. (5). 一般在各个一般在各个case 语句最后应语句最后应该加一该加一break语句语句, 可使程序流程可使程序流程跳出跳出switch结构结构.否则会从入口处一直向下执行否则会从入口处一直向下执行.( (6 6).). 各个各个casecase和和defaultdefault出现的先后次序,并不影响执出现的先后次序,并不影响执行结果行结果. . defaultdefault可以没有可以没有. .2021-11

5、-46(7). 多个多个case可共用一可共用一组执行语句组执行语句. 例如为了统计一段文例如为了统计一段文字中的数字字中的数字,字母及分隔字母及分隔符的个数符的个数, 可用下列程序段实现可用下列程序段实现: switch(ch) case 0: case 1: . case 8: case 9: digit + ; break ; case : case n: case t: white+ ; break ; default : character+; break; 这里有这里有一个空格一个空格.表达式后都有表达式后都有一冒号一冒号”:” .2021-11-47无无break语句语句表达式表

6、达式=常量表达式常量表达式1?语句序列语句序列真真(非非0)break假假(0)有有break语句语句无无break语句语句表达式表达式=常量表达式常量表达式2?语句序列语句序列2break有有break语句语句真真(非非0)假假(0)表达式表达式=常量表达式常量表达式n?语句序列语句序列nbreak真真(非非0)假假(0)无无break语句语句语句序列语句序列n+1有有break语句语句switch(表达式表达式)2021-11-48说明:说明: switch语句不等同于语句不等同于if语句语句: 1. switch只能进行值的只能进行值的相等性相等性的检查的检查. 2. if语句不但可以进

7、行相等性的检查语句不但可以进行相等性的检查, 还可以计算关还可以计算关系系表达式表达式或逻辑表达式或逻辑表达式,进行进行逻辑逻辑判断判断的真假的真假. 只进行值的只进行值的相等性相等性的检查的检查,不是逻辑判断不是逻辑判断!2021-11-49例例7.1 键盘输入键盘输入0-6之间的整数,分别代表每周的星之间的整数,分别代表每周的星期日、星期一、期日、星期一、星期六、星期六#include int main( )int day;printf(请输入星期的数字编号请输入星期的数字编号(0-6): );scanf(%d, &day);.ch7_7_1.c2021-11-410 .switc

8、h (day) case 0: printf(星期日星期日 n); break;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;default: printf(输入有误,请输入输入有误,请输入0-6之间的数字!之间的数字!n);return 0; 每个每个case

9、分支可有多条分支可有多条语句,可不用花括号语句,可不用花括号 ,也可以用。也可以用。表达式表达式有一个确定的有一个确定的值值(不是逻辑值不是逻辑值).2021-11-411例例7.2 求执行下列程序段后求执行下列程序段后k的值的值#include int main() char c=2; int k=1; switch (c+1-0) case 2: k+=1; case 2+1: k+=2; case 4: k+=3; printf(k=%dn,k);return 0; 一般在各个一般在各个case 语句最后应该加语句最后应该加一一break语句语句, 可使程序流程跳出可使程序流程跳出swi

10、tch结构结构. 否则会从入口处一直向下执行否则会从入口处一直向下执行.0的的ascii值为值为48.ch7_7_2.c2021-11-412例例7.3 执行下列程序,当分别输入执行下列程序,当分别输入a、b、c、e时,求时,求k的值的值.char c; int k=2;scanf(“%c”, &c);switch (c-a) case 0: k+; case 1: k += 2; break; default: k *= k; case 4: k *= 3;printf(“k=%d”,k);ch7_7_3.c2021-11-413例例7.4 输入一字符,如果是输入一字符,如果是y,

11、n或或y, n,则分别执则分别执行一输出语句,如果是其他字母则执行另一输出语行一输出语句,如果是其他字母则执行另一输出语句。句。#include void main() char ch; printf(please input y/n (y/n): ); scanf(%c, &ch); .ch7_7_4.c2021-11-414 .switch(ch) case y: case y: printf(this is y or y. n); break; case n: case n:printf(this is n or n. n); break; default: printf(thi

12、s is other char. n); 多个多个case可共用可共用一组执行语句一组执行语句.表达式表达式有一个确定的有一个确定的值值(不是逻辑值不是逻辑值).2021-11-415例例7.5 编写程序,实现如下功能。编写程序,实现如下功能。 输入一个实数后,屏幕显示如下菜单输入一个实数后,屏幕显示如下菜单: 1. 输出相反数输出相反数 2. 输出平方数输出平方数 3. 输出平方根输出平方根 4. 退出退出2021-11-416#include void main()int i, c=5;float m;printf(输入任意一个整型数:输入任意一个整型数:n);scanf(%f, &

13、;m);printf(*n);printf(1,输出相反数输出相反数n);printf(2,输出平方数输出平方数n);printf(“3,输出开方根输出开方根n);printf(4,退出退出n);printf(*n); ch7_7_5.c2021-11-417 .while(1) scanf(%d, &c); switch(c) case 1: printf(输出相反数输出相反数: %fn, -m);break; case 2: printf(输出平方数输出平方数: %fn, m*m); break; case 3: printf(输出平方根输出平方根: %fn, sqrt(m); b

14、reak; case 4: break; default: printf(请输入请输入14之间的数字!之间的数字!n); if ( c=4 ) break;ch7_7_5.c2021-11-418例7. 6 根据输入字符(0-9及a-f(af)显示与该字符所表示的十六进制数相对应的十进制数。 (例如,输入a,输出10,输入0,输出0)2021-11-419#include#includeint main( ) char ch; for(; ; ) printf(“n请输入十六进制数请输入十六进制数 0 f ( 输入输入q 或或 q 退出退出): );scanf(%c, &ch); ge

15、tchar( );printf(输入的是:输入的是:%c, ch); . 当输入一个字符当输入一个字符,打一个回车后打一个回车后,输输入结束入结束. 但在输入缓冲区中存在二个字符但在输入缓冲区中存在二个字符:输输入的字符入的字符,还有一个是还有一个是n. 当打了一个回车后当打了一个回车后(其实是二个动作其实是二个动作:回车回车,换行换行. c语言会把回车语言会把回车,换行自动转换为换行自动转换为n.反之亦然反之亦然.2021-11-420 switch( ch ) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: c

16、ase 8: case 9:printf(十进制数十进制数: %dn, ch-0); break; case a: case b: case c: case d: case e: case f:printf(十进制数十进制数: %dn, ch-55); break; ch7_7_6.cascii值值:0 48a 65a” 972021-11-421 case a: case b: case c: case d: case e: case f:printf(十进制数十进制数: %dn, ch-87); break; case q: case q:printf(退出程序退出程序n); exit(0

17、); default:printf(输入有误输入有误!); return 0; ascii值值:0 48a 65a” 972021-11-422示例示例: 输入输入10个字符,分别统计出其中空格或回车、数字个字符,分别统计出其中空格或回车、数字和其他字符的个数。和其他字符的个数。void main( ) int blank, digit, i, other; char ch; blank = digit = other = 0; printf(input 10 characters: ); .2021-11-423 for(i = 1; i = 10; i+) ch = getchar();

18、switch (ch) case : case n : blank +; break; case 0 : case 1 : case 2 : case 3: case 4 : case 5 : case 6 : case 7 : case 8 : case 9 : digit +; break; default: other +; break; printf(“blank=%d, digit=%d, other=%dn”, blank, digit, other);input 10 characters: reold 123?blank=1, digit=3, other=62021-11-4

19、24 #include void main( ) int i ; for(i = 0; i 3; i+) switch(i) case 1: printf(%d,i); case 2: printf(%d,i); default: printf(%d,i); 以下程序的输出结果是以下程序的输出结果是: a. 011122 b. 012 c. 012020 d. 120注意所属关系2021-11-425ch7_7_7.c2021-11-426#include #include int main() float numb1 = 0, numb2 = 0; int menu = 1, flag; f

20、loat total=0; char caltype; .2021-11-427 for(;) flag=1; printf(nt希望进行哪种运算希望进行哪种运算?nn); printf(t 1:加法加法n); printf(t 2:减法减法n); printf(t 3:乘法乘法n); printf(t 4:除法除法n); printf(t 0:退出计算器退出计算器n); printf(nt输入你的选择:输入你的选择:); . 2021-11-428 . scanf(%d,&menu); if(menu=0) exit(0); else if( menu4) printf(t 无效的选

21、择无效的选择! n); else printf(t输入两个数中的第一个数:输入两个数中的第一个数:); scanf(%f, &numb1); printf(t输入两个数中的第二个数:输入两个数中的第二个数:); scanf(%f, &numb2); . 退出程序.2021-11-429 switch(menu) case 1: total=numb1+numb2; caltype=+; break; case 2: total=numb1-numb2; caltype=-; break; case 3: total=numb1*numb2; caltype=*;break; c

22、ase 4: if(numb2=0) printf(nt不能被不能被0除除n); flag=0;break; total=numb1/numb2; caltype=/;break; default: printf(无效的选择!无效的选择!n); 2021-11-430 if(flag=1) printf(nn*); printf(nnt%.3f %c %.3f = %.3f, numb1, caltype, numb2, total); printf(nn*nn); return 0;ch7_7_7.c2021-11-4312021-11-432问输出为问输出为?: ?: a) k=3 a)

23、k=3 b) k=4b) k=4 c)k=2 d)k=0 c)k=2 d)k=0 main( ) main( ) int k=0; char c= int k=0; char c=a a; ; do do swich(c+) swich(c+) case case a a: k+; break;: k+; break; case case b b: k-;: k-; case case c c: k+=2; break;: k+=2; break; case case d d: k=k%2; continue;: k=k%2; continue; case case e e: k=k: k=k

24、* *10; break;10; break; default: k=k/3; default: k=k/3; k+; k+; while(cwhile(cg g);); printf( printf(“k=%dnk=%dn”,k);,k); 第第1次次. 第第2次次. 3. 4. 5. 6.k=2 k=4 k=7 k=1 k=11 k=4c=b c=c c=d c=e c=f c=g2021-11-433注注: : 每次执行每次执行switch(c+)switch(c+)时时, ,先取先取c c的值的值, ,找到入找到入 口口, ,然后然后c c增增1.1. 当执行到当执行到continue

25、continue时时, ,流程跳过流程跳过do-whiledo-while语句语句 中当未执行的语句中当未执行的语句, ,而直接转向而直接转向whilewhile的条件表的条件表 达式达式, ,判循环是否进行判循环是否进行. .2021-11-434第7章后练习2021-11-435 练习与实践:练习与实践:1百分制转换成五分制百分制转换成五分制. #include int main() int x;printf(请输入学生百分制成绩请输入学生百分制成绩:n输入负数结束程序输入负数结束程序:n);scanf(%d,&x);课本课本 p101: 1题题2021-11-436while(x0) switch(x/10) case 10: case 9: pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论