第7章 switch语句的应用
更新时间:2023-08-28 02:53:01 阅读量: 教育文库 文档下载
第七章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’.反之亦然.
正在阅读:
第7章 switch语句的应用08-28
《以读书“索道于世”》阅读练习及答案12-06
2002版最新质量验收规范06-17
《船长》教学设计【优秀7篇】03-22
考研英语阅读真题解析和全文翻译(1994-2005)01-14
典范英语7_04 泰坦尼克号的幸存者06-07
PT初级、高级试题汇编01-04
语言得体常用词语06-17
陕西气象科技服务在公共气象服务中科学发展的战略思考_米天明04-24
20XX年公司财务人员工作安排计划12-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 语句
- 应用
- switch
- 我的中国梦手抄报word版电子小报模板
- 建筑智能化工程施工管理研究
- 附表A1建筑行业劳动者接触的主要职业病危害因素
- 实验15 WEB服务器配置
- 作风整顿简报第一期
- 如何做好新形势下基层企业的思想政治工作
- GBl6423-2006金属非金属矿山安全规程
- 编译原理实验报告LR(1)分析法
- 楷书基本笔画字帖
- 《孩子,我为什么打你》阅读答案
- 如何发展农业保险
- 2018-2019学年最新人教版小学数学一年级上册第8单元检测卷-精编试题
- 参观辛亥革命博物馆报告总结
- 专项资金绩效评价报告基本格式
- 高一必修2 unit1 Cultural relics Using language
- 软横跨预制计算示例
- 计算机机房安全应急预案
- 模拟及数字高通带通滤波器设计
- 高中语文课本作文素材
- 人教版小学二年级数学利用线段图解决问题练习题