第7章 switch语句的应用
第七章switch 语句的应用
7.1
switch 语句:
switch 语句是一条多分支选择语句. 在实际应用中,要在多种情况中选择一种情况,执行某 一部分语句。 当然可以使用嵌套的if , if else if语句来处理,但其分支 过多,程序冗长,难读, 不够灵巧。
switch语句是C语言中处理多路选择问题的一种更直观 和有效的手段. 在测试某个表达式是否与一组常量表达式 中的某一值相配时,switch语句显得更为方便.
一般形式如下:
switch(表达式 ) { case 常量表达式1: 语句1 [break]; case 常量表达式2: (2). 关于常量表达式1~n: 只起到 语句2 一个标号的作用,根据表达式的值来 [break]; 判断, 找到一个相匹配的入口处,程 … 序往下执行。 各个case后的常量表达式的值 case 常量表达式n: 必须互不相同. 语句n [break]; [default: (3). 每个case分支可有多条语句 语句n+1] ,可不用花括号{ }。 }
说明: (1). 关于表达式: 表达式可以是 整型、字符型等表达式。 有一个确定的值(不是逻辑值).
switch(表达式 ) { case 常量表达式1: (4). 各个case 语句只是一 语句1 个入口标号,并不确定执行 [break]; 的终止点. case 常量表达式2: 语句2 (5). 一般在各个case 语句最后应 该加一break语句, 可使程序流程 [break]; 跳出Switch结构. … case 常量表达式n: 否则会从入口处一直向下执行. 语句n [break]; (6). 各个case和default [default: 出现的先后次序,并不影响执 语句n+1] 行结果. }default可以没有.
(7). 多个case可共用一组执行语句. 例如为了统计一段文 字中的数字,字母及分隔
符的个数,可用下列程序段实现:
switch(ch) 表达式后都有 一冒号”:” . { case 0 : case 1 : …. 这里有 case 8 : 一个空格. case 9 : digit ++ ; break ; case : case \n : case \t : white++ ; break ; default : character++; break; }
switch(表达式)真(非0)
有break语句语句序列1
表达式==常量表达式1?
break
假(0)表达式==常量表达式2? 假(0)
无break语句真(非0)
有break语句
语句序列2 无break语句
break
有break语句真(非0)
表达式==常量表达式n?假(0)
语句序列n 无break语句 语句序列n+1
break
说明:switch语句不等同于if语句:只进行值的相等性 的检查,不是逻辑判断!
1. switch只能进行值的相等性的检查.
2. if语句不但可以进行相等性的检查, 还可以计算关系表达式或逻辑表达式,进行逻辑判断的真假.
例7.1 键盘输入0-6之间的整数,分别代表每周的星期 日、星期一、…、星期六#include <stdio.h> int main( ) { int day; printf("请输入星期的数字编号(0-6): "); scanf("%d", &day); ….Ch7_7_1.c
表达式有一个确定的 …. 值(不是逻辑值). switch (day) 每个case分支可有多条 { 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;
}
例7.2 求执行下列程序段后k的值#include <stdio.h> int main() { char c= 2 ; int k=1;‘0‘的ASCII值为48.
switch (c+1-'0'){ case 2: k+=1; case 3: k+=2; case 4: k+=3; } printf("k=%d\n",k); return 0; }一般在各个case 语句最后应该加 一break语句, 可使程序流程跳出 Switch结构. 否则会从入口处一直向下执行.
Ch7_7_2.c
例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.c
例7.4 输入一字符,如果是Y, N或y, n,则分别执行一 输出语句,如果是其他字母则执行另一输出语句。
#include <stdio.h> void main() { char ch; printf("Please input Y/N (y/n): ");
scanf("%c", &ch);….Ch7_7_4.c
表达式有一个确定的 …. 值(不是逻辑值). switch(ch) { 多个case可共用 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("this is other char. \n"); }
}
例7.5 编写程序,实现如下功能。输入一个实数后,屏幕显示如下菜单: 1. 输出相反数 2. 输出平方数 3. 输出平方根 4. 退出
#include <stdio.h> #include<math.h> void main() { int i, c=5; float m; printf("输入任意一个整型数:\n"); scanf("%f", &m); printf("****************************\n"); printf("1,输出相反数\n"); printf("2,输出平方数\n"); printf(“3,输出开方根\n"); printf("4,退出\n"); printf("****************************\n"); Ch7_7_5.c ……
…..while(1)
{ scanf("%d", &c); switch(c) {case 1: printf("输出相反数: %f\n", -m); break; case 2: printf("输出平方数: %f\n", m*m); break; case 3: printf("输出平方根: %f\n", sqrt(m)); break; case 4: break; default: printf("请输入1~4之间的数字!\n");
} if ( c==4 ) break; } }Ch7_7_5.c
例7. 6根据输入字符(0-9及A-F(a~f))显示与该字符所表示的十六进制数相对应的十进制数。 (例如,输入‘A’,输出10,输入‘0’,输出0)
#include<stdio.h> #include<stdlib.h> 当输入一个字符,打一个回车后,输 int main( ) 入结束. { 但在输入缓冲区中存在二个字符:输 char ch; 入的字符,还有一个是’\n’. for(; ; ) { printf(“\n请输入十六进制数 0 ~ F ( 输入Q 或 q 退出): "); scanf("%c", &ch); getchar( );
当打了一个回车后(其实是两个动作 :回车,换行. printf("输入的是:%c", ch); c语言会把回车,换行自动转换
为 …. ’\n’.反之亦然.
…… 此处隐藏:1875字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




