版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7讲 switch语句及选择结构的程序设计举例,教学目的与要求: 掌握if语句的嵌套和swicth语句的使用 掌握选择结构的程序设计 教学内容提要: 1、 if语句的嵌套 2、 swicth语句 3、 选择结构的程序设计举例 教学重点: if语句的嵌套和swicth语句的使用 教学难点:选择结构的程序设计 教学进度:P103P109 教学过程:,语句含义:,语句形式:,当if语句中又包含另一个if语句时,则构成了if 语句嵌套的情形。,1、if语句的嵌套,if ( 表达式1) if ( 表达式2) 语句1; else 语句2; else if(表达式3) 语句3; else 语句4;,1、i
2、f语句嵌套,语句执行流程:,else与if的配对原则:,就近一致原则:else与同一层最接近它,而又没有其它else语句与之相匹配的if语句配对。,例1:解方程:ax2+bx+c=0。 从代数知识可以知道: 若b2-4ac0 有两个不等的实根 若b2-4ac=0 有两个相等的实根 若b2-4ac #include void main ( ) float a,b,c,disc,x1,x2,realpart,imagpart; scanf(%f,%f,%f, if(fabs(a)=1e-6),printf(is not a quadraticn); else disc=b*b-4*a*c; if(
3、fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:%8.4fand%8.4fn,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf( has complex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); ,2、条件运算符 ? : 若if语
4、句中,在表达式为“真”和“假”时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句: if (ab) max=a; else maxb; 可以用下面的条件运算符(? :)来处理: max(ab)?a:b; 其中”(ab)?a:b”是一个“条件表达式”。它是这样执行的:如果(ab)条件为真,则条件表式取值a,否则取值b. 条件运算符要求有三个操作对象,称三目(元) 运算符。条件表达式的一般形式为 表达式1?表达式2:表达式3 它的执行过程见图。,例2 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字
5、符。 main() char ch; scanf(%c, ,条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替if语句;下面的if语句就无法用一个条件表达式代替。 if(ab) printf(“d”,a); else printf(“d”,b); 但可以用下面语句代替: printf(”d”,ab?a:b); 即将条件表达式的值输出。,注意:,2、 switch语句,1、语句形式:,switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; d
6、efault : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,注意:各个case的出现次序不影响执行结果,执行完一个case后面的语句后,流程控制转到下一个case继续执行。case后面的常量表达式只是起语句标号作用,并不是在该处进行条件判断;根据switch后面表达式的值找到匹配的入口标号开始执行下去,不再进行判断。 例3:根据输入成绩来判断成绩的等级。,例3,根据考试成绩的等级打印出百分制分数段: main() char grade; scanf(“%c”
7、, switch (grade) caseA: printf (“85100n”); caseB: printf(“7084n”); caseC: printf (“6069n”); case D: printf(“60n”); default : printf (”errorn”); 运行情况:输入 B 7084 6069 60 error,应该在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行,可用break语句来完成此功能。,例3,根据考试成绩的等级打印出百分制分数段: main() char grade; scanf(“%c”, default : pr
8、intf (”errorn”); 运行情况:输入 B 7084,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,break,break,有,无,case语句出 现的次序并 不影响执行 结果。,程序运行情况如下: 3 Wednesday Thursday Friday Saturday Error,#include stdio.h main() int n; scanf(%d, ,例4:假设用0、1、2.6分别表示星期日、星期一.星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,#include stdio.h main()
9、int n; scanf(%d, ,程序运行情况如下: 3 Wednesday,3、说明,多个case语句可以共用一组执行语句。,switch(grade) case A: case B: case C:printf(grade=60n);break; default:printf(grade60); ,各case和default子句的先后顺序可以变动,而不会影响程序执行结果。,default语句可以省略不用。,case和default与其后面的常量表达式间至少有一个空格。,switch语句可以嵌套,break语句只跳出它所在的switch语句。,2020/7/17,void main() i
10、nt x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); ,运行结果: a=2,b=1,例5:分析下列程序的运行结果,例6、企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?,利润x x=10 10x20 20x40 40x60 60x100 100x,(int )x/10,常量 0,1 1,2 2,3,4 4,5,6 6,7,8,9,10 10以上,
11、用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,#include stdio.h void main() float x,y; int n; scanf(%f, ,程序如下:,3、选择结构程序设计举例,例7:将任意三个整数按从大到小的顺序输出。,#include stdio.h main() int x,y,z,t; scanf(%d,%d,%d, ,例8 :给一个不多于4位的正整数,求出它是几位数,逆序打印出各位数字。,#include stdio.h main() int x,a,b,c,d; /*a,b,c,d代表千、百、十、个位*/ scanf(%d, ,例9 :从键盘输入一个年份,判断是否是闰年。,#include stdio.h main() int year; scanf(%d, ,例10:程序填空: 以下程序判断输入的整数能否被3或7整除. main(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2476-2026腹膜透析机校准规范
- T/SHATCMI 0002-2023藏红花质量规范
- T/NAHIEM 158-2025日夜分护婴儿纸尿裤
- T/CECCEDA 3-2025企业文化建设指南
- T/CHAA 037-2024医疗机构特殊医学用途配方食品运营管理规范
- T/CSMT YB023-2026动态公路车辆自动衡器期间核查技术规范
- GB/T 3102.7-2026量和单位第7部分:光和辐射
- 2025~2026学年河北省保定市涞水县人教版六年级上册11月期中数学试卷【附答案】
- 2027届四川省绵阳市游仙区数学八上期末综合测试模拟试题含解析
- PHP工程师笔试真题(含详细答案·企业实操版)
- 2026年广西北部湾国际港务集团有限公司人员招聘笔试参考试题及详细答案解析
- 自考 08257 舆论学・重点精简版(速记 + 考点)
- 2026年校招:太平洋保险笔试题及答案
- 2026国企招聘考试公共基础知识考试题(含答案)
- 2025年银行考试-银行间本币市场交易员资格笔试考试历年典型考题及考点
- 安徽省2026年中考数学试题(解析版)
- 【万科集团财务风险防范措施研究8400字(论文)】
- 军士专升本试题及答案
- 重庆市康德卷2025-2026学年高二下学期期末考试+政治试题(含答案)
- 管道巡线管理办法培训
- 汽车制造工艺基础+车身冲压+课件
评论
0/150
提交评论