资源描述:
《《switch语句的应用》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章switch语句的应用7.1switch语句:switch语句是一条多分支选择语句.在实际应用中,要在多种情况中选择一种情况,执行某一部分语句。当然可以使用嵌套的if,ifelseif语句来处理,但其分支过多,程序冗长,难读,不够灵巧。switch语句是C语言中处理多路选择问题的一种更直观和有效的手段.在测试某个表达式是否与一组常量表达式中的某一值相配时,switch语句显得更为方便.一般形式如下:switch(表达式){case常量表达式1:语句1[break];case常量表达式2:语句2[break];…case常量表达式
2、n:语句n[break];[default:语句n+1]}说明:(1).关于表达式:表达式可以是整型、字符型等表达式。有一个确定的值(不是逻辑值).(2).关于常量表达式1~n:只起到一个标号的作用,根据表达式的值来判断,找到一个相匹配的入口处,程序往下执行。各个case后的常量表达式的值必须互不相同.(3).每个case分支可有多条语句,可不用花括号{}。switch(表达式){case常量表达式1:语句1[break];case常量表达式2:语句2[break];…case常量表达式n:语句n[break];[default:语句n+1
3、]}(4).各个case语句只是一个入口标号,并不确定执行的终止点.(5).一般在各个case语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.(6).各个case和default出现的先后次序,并不影响执行结果.default可以没有.(7).多个case可共用一组执行语句.例如为了统计一段文字中的数字,字母及分隔符的个数,可用下列程序段实现:switch(ch){case‘0’:case‘1’:….case‘8’:case‘9’:digit++;break;case‘’:case‘
4、’:case‘t’:white++;break;default:character++;break;}这里有一个空格.表达式后都有一冒号”:”.无break语句表达式==常量表达式1?语句序列1真(非0)break假(0)有break语句无break语句表达式=常量表达式2?语句序列2break有break语句真(非0)假(0)表达式=常量表达式n?语句序列nbreak真(非0)假(0)无break语句语句序列n+1有break语句switch(表达式)说明:switch语句不等同于if语句:1.switch只能进行值的相等性的检查.
5、2.if语句不但可以进行相等性的检查,还可以计算关系表达式或逻辑表达式,进行逻辑判断的真假.只进行值的相等性的检查,不是逻辑判断!例7.1键盘输入0-6之间的整数,分别代表每周的星期日、星期一、…、星期六#includeintmain(){intday;printf("请输入星期的数字编号(0-6):");scanf("%d",&day);….Ch7_7_1.c….switch(day){case0:printf("星期日");break;case1:printf("星期一");break;case2:printf
6、("星期二");break;case3:printf("星期三");break;case4:printf("星期四");break;case5:printf("星期五");break;case6:printf("星期六");break;default:printf("输入有误,请输入0-6之间的数字!");}return0;}每个case分支可有多条语句,可不用花括号{},也可以用。表达式有一个确定的值(不是逻辑值).例7.2求执行下列程序段后k的值#includeintmain(){charc=‘
7、2’;intk=1;switch(c+1-'0'){case2:k+=1;case2+1:k+=2;case4:k+=3;}printf("k=%d",k);return0;}一般在各个case语句最后应该加一break语句,可使程序流程跳出Switch结构.否则会从入口处一直向下执行.‘0‘的ASCII值为48.Ch7_7_2.c例7.3执行下列程序,当分别输入A、B、C、E时,求K的值.charc;intk=2;scanf(“%c”,&c);switch(c-’A’){case0:k++;case1:K+=2;break;defau
8、lt:k*=k;case4:k*=3;}printf(“k=%d”,k);Ch7_7_3.c例7.4输入一字符,如果是Y,N或y,n,则分别执行一输出语句,如果是其他字母则执行另