




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 选择程序设计,选择结构是C语言程序中的一种重要结构形式,这种程序结构通过条件判断的方法有选择性地执行部分程序语句,大大提高了程序的灵活性,并强化了程序的功能。我们在编写C程序时通常都要使用到选择结构,以设计出结果多样化的程序。正确掌握选择结构的使用方法是学习C程序设计的一项基本要求。,【学习目标】, 理解C语言中各类控制语句的执行过程、功能和使用方法 掌握if语句的3种形式、if和else配对规则及if语句的嵌套 能正确地使用switch语句设计多分支选择结构,4.1 概述,在日常生活中,经常遇到这样的情况:只有满足一定条件时才能做某一件特定的事情,否则就不能做这件事情转而去完成其他任务。例如,只有担任学生干部的学生才能被评为优秀学生干部,否则只能被评为优秀学生;只有高考成绩达到某一较高录取分数线的学生才能升入重点大学,否则只能升入一般大学,甚至还可能失去继续学习的机会。,C语言程序是结构化的程序。在运行C程序时,并不是组成程序的所有代码都会按照书写顺序依次执行而获得单一的运行结果。C语言中通过选择结构来实现对代码的选择执行,在C程序的选择结构中包含了条件判断语句,运行程序时,首先进行必要的条件判断,然后根据条件成立与否有选择性地执行不同的程序代码,使得同一程序在不同的运行条件下可以获得不同的结果,这样就增强了程序的灵活性。,在C语言中,选择程序结构主要通过以下两类语句来实现。 if语句。 switch语句。 本章将分别讲述使用这两类语句构成选择结构的一般方法。,4.2 条件选择语句if语句,4.2.1 if语句的第1种形式if结构 4.2.2 if语句的第2种形式if-else结构 4.2.3 if语句的第3种形式if-else if-else结构,使用if语句构成的选择结构在C语言中应用最为广泛,是C程序中的重要结构单元。根据实现功能和实现形式的差异,if语句包括以下3种形式。 if结构:根据一定条件选择执行一条(或一组)语句。 if-else结构:根据一定条件从两条(或两组)语句中选择执行一条(或一组)语句。 if-else if-else结构:根据一定条件从多条(或多组)语句中选择执行一条(或一组)语句。 下面将分别介绍这3种if语句的设计方法。,4.2.1 if语句的第1种形式if结构,if结构是最简单的选择结构,首先判断一个条件,当条件满足时,执行对应的语句(组),否则跳过该语句(组)。 图4-1 if语句执行流程图 (1)if结构的格式为 if(表达式) 语句 (2)if语句的执行流程如图4-1所示。 (3)if语句结构的执行过程如下。 首先判断表达式的值,如果其值为“真(非0)”则执行语句(或语句组),然后执行后续语句;如果其值为“假(0值)”则跳过语句(或语句组),然后执行后续语句。,4.2.2 if语句的第2种形式if-else结构,if-else语句可以实现双分支结构,可以根据条件成立与否从两个语句(组)中选取一个来执行。 (1)if-else结构的格式为 if(表达式) 语句1; else 语句2; 其中,语句1称为if子句,语句2称为else子句,这种if子句与else子句配套的语句叫做if-else语句。在程序运行过程中,根据表达式的值真假与否,从两个子句中选取一个子句执行。 (2)if-else结构的流程图如图4-2所示。 (3)if-else结构的执行过程如下。 首先判断表达式的值,如果其值为“真(非0)”则执行语句1(或语句组1),然后执行后续语句;如果其值为“假(0值)”则执行语句2(或语句组2),然后执行后续语句。 图4-2 if-else结构的流程图 if-else结构用于根据条件满足与否从两条(或两组)语句中选择执行一条(或一组)语句。先看以下的案例程序。,4.2.3 if语句的第3种形式if-else if-else结构,前面已讲述了if语句的两种基本使用形式,使用if结构可以根据条件满足与否跳过部分语句;使用if-else结构可以根据条件满足与否从两组语句中选择执行其中的一组。但是,在这两种用法中,最多也只能处理有两种可供选择的情况。如果在程序设计时需要从多组语句中选择一组来执行又应该怎么办呢?这时就可以使用if语句的第3种形式if-else if-else结构。,(1)if-else if-else结构的格式如下: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式n-1) 语句n-1; else 语句n;,(2)使用说明。 if-else if-else语句用在多分支路径中,在程序执行时,按照程序书写顺序依次判断每条分支圆括号内表达式的真假。 当圆括号内表达式的值为“真(非0)”时,则执行该分支下面的语句,完成后退出条件结构而执行后续语句。 程序仅仅选择执行表达式值为“真(非0)”的那条路径下的语句“多选一”。 如果所有表达式的值都为“假”,则执行最后一个else路径下的语句。 在程序运行过程中,有且仅有一条路径上的语句被执行。,4.3 多分支选择语句switch结构,4.3.1 switch结构的基本形式 4.3.2 带break语句的switch语句,在前面的内容中,学习了使用if语句构建选择结构的一般方法。使用if-else结构可以实现双分支选择功能,使用if-else if-else结构可以实现多分支选择功能,但是这种多分支结构使用起来比较繁琐。 在C程序中,使用switch结构可以非常方便地构成多分支选择结构。一个程序涉及的分支越多,越适合使用switch结构。,4.3.1 switch结构的基本形式,图4-4 switch结构的流程图 switch结构用于实现多分支选择结构,也就是说可以从多组语句中选择执行其中的部分语句。 (1)switch结构的语法格式为 switch(表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式n:语句n; default:语句n+1; ,(2)该语句的执行过程如下 首先将“表达式”的值依次与各个“常量表达式”进行比较,哪个“常量表达式”的值与“表达式”的值相等,就执行该“常量表达式”后面的语句,此时该语句称为执行switch语句的入口。 一旦一个语句被执行后,顺次执行其后的所有语句,而不必再判断相应的“常量表达式”的值是否和“表达式”的值相等。, 当所有case后的“常量表达式”都不与“表达式”的值相等时,就只执行default后的语句。 当“表达式”的值与“常量表达式1”相一致时,不仅执行语句1,而且其后的语句2到语句n+1也都被执行。同理,当“表达式”与“常量表达式3”相一致时,不仅执行语句3,而且其后的语句4到语句n+1也都被执行;当所有的“常量表达式”与“表达式”都不一致时,就只执行语句n+1。,(3)使用说明 switch后面圆括号内的“表达式”可为任何类型,并且“表达式”的类型和“常量表达式”的类型一定要一致,否则会出现语法错误。当“常量表达式”的值与“表达式”的值相等时,执行其后的所有的语句,否则就执行default后面的语句。圆括号不能省略,且其外没有“;”,否则会出现语法错误。 switch语句中大括号内的部分称为switch语句的语句体。, default出现的顺序并不影响程序的功能,default后的语句总是最后执行。 case后必须是常量表达式并且每个case后面的常量表达式必须互不相同,case和常量表达式之间一定要有空格,否则为语法错误。 每个case所管辖的语句可以是一条语句,也可以是多条语句,若是多条,可不加大括号。case后的语句还可以为空,当为空时,什么都不做,程序继续执行下一条case后的语句,不影响其他语句的执行。,4.3.2 带break语句的switch语句,break语句用来实现程序的跳转和退出。 由前一节可知,switch语句的基本结构只能实现“满足一个条件执行多个或一个case之后语句的情况”,但是如果要实现“满足多个或一个条件只执行一个case之后语句的情况”又怎么办呢?此时就要使用带break语句的switch语句。,(1)带break语句的switch语句语法格式为 switch(表达式) case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式n: 语句n; break; default: 语句n+1; 与switch语句的基本形式相比,带break语句的switch语句最本质的差异是:一旦程序执行到break语句,将跳出switch语句,从而结束分支选择。,(2)带break语句的switch语句的流程 首先计算switch后面圆括号内的表达式的值,比较该值和case后的“常量表达式”的值是否相等,找到执行switch语句体的入口。 入口之前的case的语句不被执行,只执行入口以后case后的语句。 如果入口以后的case之后均没有break语句,则入口后所有case后的语句均被依次顺序执行,最后执行default以后的语句(此时即为switch语句的基本用法)。 如果在执行入口及其以后case后的语句的过程中一旦遇到break语句,则立即结束switch语句的执行。,(3)用法说明 switch语句的基本用法中的所有规范均适用于带break语句的switch语句。对带break语句的switch语句当“常量表达式”的值与“表达式”的值相等时,就执行相应“常量表达式”后的语句(包括case和default后的语句),如果遇到break语句则跳出switch语句的语句体,结束switch语句的执行;当“常量表达式”的值与“表达式”的值不相等时,就只执行defaut后面的语句。,习题,一、选择题 下面不正确的if语句形式是 。 Aif(xy); Bif(x=y) x+=y; Cif(x!=y) scanf(“%d“,a) Dif(xy) x+; y+; else scanf(“%d“,b);,if语句的语法正确的是 。 Aif(x0) prinntf(“%f“,x) Bif(x0) x=x+y; y=y-x; else prinntf(“%f“,-x); else printf(“%d“,x); Cif(x0) x=x+y; y=y-x: Dif(x0) x=x+y; y=y-x; else printf(“%d“,x); else printf(“%d“,x);,二、填空题 1某服装店经营套服,不单件出售。若买的不少于100套,每套70元;若买的不少于50套,每套80元;若买的不足50套,每套90元。以下程序的功能是读入买上衣和裤子的套数n并计算应付的款项m。 #include main() int m,n; printf(“Input n:n“); scanf(“%d“,n); if( ) m=n*70; if( ) m=n*80; if(n50) m=( ) ,2以下程序段: switch(grade) case A: printf(“85100n“); case B: printf(“7084n“); case C: printf(“6069n“); break: case D: printf(“60n“); defaut : printf(“error“); 若输入的grade值为A,则输出的结果是 。 若输入的grade值为B,则输出的结果是 。 若输入的grade值为C,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 活动三《让小电珠亮起来》(教学设计)-2023-2024学年五年级下册综合实践活动沪科黔科版
- 第四单元 课文(三)(教学设计)2024-2025学年小学语文二年级上册(统编版)
- 2025年教师招聘之《幼儿教师招聘》通关试卷提供答案解析及参考答案详解【综合卷】
- 铸管熔炼工专业知识考核试卷及答案
- 电炉炼钢工理念考核试卷及答案
- 中药饮片购销员操作考核试卷及答案
- 拖拉机驾驶员5S管理考核试卷及答案
- 第11课 屹立在世界的东方 第三课时 教学设计-2023-2024学年道德与法治五年级下册统编版
- 隐私增强技术-第2篇-洞察及研究
- 跨界艺术资源共享-洞察及研究
- 工程部员工绩效考核方案
- 数学 第一册(五年制高职) 课件 3.3.1增函数与减函数的定义
- 抢救车管理制度
- Python工程应用-数据分析基础与实践课件-第3章
- 应急处突知识培训课件
- 人教版初中英语七八九全部单词(打印版)
- 某自来水厂运营管理项目服务方案(技术方案)
- DBJ50-T-164-2021 民用建筑电线电缆防火设计标准
- 2025年浙江省建设工程检测技术人员(建筑材料及构配件)考试题库(含答案)
- 测试婴儿肌张力的六个动作
- NB/T 11536-2024煤矿带压开采底板井下注浆加固改造技术规范
评论
0/150
提交评论