




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
选择结构又称为分支结构。 在选择结构程序设计中,根据条件的判断情况需要选择不同的语句组执行。 选择结构类型: (1)条件选择结构:根据给定的条件表达式进行判断,决定执行某个分支中的程序段。由if语句来实现。 (2)开关选择结构:根据给定的整型表达式的值进行判断,然后决定执行多个分支中的某一个分支。由switch语句来实现。,4.1 程序的流程图,4.3 多分支选择语句,4.4 程序综合举例,4.2 IF语句,4.1 程序的流程图,传统流程图符号:,4.1 程序的流程图,N-S流程图符号:,4.1 程序的流程图,【例4.1】求10!的程序。 解题思路: 由于n!=n*(n-1)! 即10!=10*9! 9!=9*8! 2!=2*1! 1!=1,4.2 if 语句,4.2.1 if语句的三种格式,1单分支选择结构 一般形式为:,if(表达式) 语句; ,执行过程:先求解表达式的值,如果表达式的值为真(非0),就执行语句;否则直接执行if语句后面的语句。执行过程如图4.4所示。,4.2 if 语句,【例4.2】求所输入数值的绝对值。,输入数据,解题思路: 首先判断输入数值是否为负数,若为负数,则将取其相反数;否则,正数和零的绝对值是其本身,不予处理。,判断输入数据,0,取相反数,0,输出结果,4.2 if 语句,【例4.2】求所输入数值的绝对值。,程序为: #include “stdio.h” main() float score; printf(“Please input a score:n”); scanf(“%f”, ,运行结果如下: Please input a score: -0.01 The result is: 0.01 Please input a score: 5.0 The result is: 5.00,4.2 if 语句,【例4.3】比较所输入的三个数值的大小,按升序输出。 解题思路: 只须让三个数值两两比较三次,在每次比较的过程中,若第一个数值大于第二个数值,则交换彼此的数值,三次比较完成后,三个数值即符合升序要求。,4.2 if 语句,程序代码如下: #include “stdio.h” Void main() float x,y,z,temp; printf(“Please input three number:n”); scanf(“%f,%f,%f”, ,运行结果如下: Please input three number: 60.1,60,59.9 The sequence is: 59.9,60.0,60.1,4.2 if 语句,2双分支选择结构 一般形式为: if(表达式) 语句1; else 语句2;,执行过程是:先求解表达式的值,如果表达式的值为真(非0)执行语句1;否则若表达式的值为假(值为0),就执行语句2。执行过程如图4.5所示。,4.2 if 语句,【例4.4】 判断所输入的学生成绩是否及格。 解题思路: 只需要将输入的学生成绩和60作一次比较就可以得出结论:该成绩大于等于60为及格,否则该成绩不及格。,4.2 if 语句,4.2 if 语句,3多重选择结构 多重选择结构用于有多种情况需要选择的程序。 一般形式为: if(表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else if (表达式n) 语句n; else 语句 n+1;,4.2 if 语句,3多重选择结构,4.2 if 语句,【例4.5】 判断所输入的学生成绩的等级,其具体要求如下表:,解题思路: 对于输入的学生成绩,可按照上表分为五个等级判断即可。,4.2 if 语句,4.2 if 语句,4.2.2 if语句的嵌套,if语句中的子语句1或子语句2还可以是if语句,这称为if语句的嵌套。 注意:else总是与前面最近的if配对。 一般形式如下: if(表达式1) if(表达式11) 语句11; else 语句12; else if(表达式2) 语句21; else 语句22;,4.2 if 语句,注意区别以下两种if语句结构: (1) if(表达式1) (2) if(表达式1) if(表达式11) if(表达式11) 语句11; 语句11; else 语句12; else 语句12;,关键是弄清楚else与if的配对情况 问:第(1)种情况else与哪个if配对? 第(2)种情况else与哪个if配对?,答:第(1)种情况else与第2个if配对 第(2)种情况else与第1个if配对,4.2 if 语句,【例4.6】按表输入三个整数a、b、c,分析运行结果。,#include “stdio.h” void main() int a,b,c; int result11=0,result12=0, result21=0,result22=0; scanf(“%d,%d,%d”, ,4.2 if 语句,分析一下输入、输出数据的特点。,2,6,8 a=2;b=6;c=8 0 0 0 16,2,8,6 a=2;b=8;c=6 0 0 0 16,8,2,6 a=8;b=2;c=6 0 16 0 0,6,2,8 a=6;b=2;c=8 0 16 0 0,6,8,2 a=6;b=8;c=2 0 0 0 16,8,6,2 a=8;b=6;c=2 96 0 96 0,本程序的执行结果数据如下所示:,4.3 多分支选择语句(switch语句),switch语句的一般形式: switch(表达式) case 常量表达式1: 语句组1;break; case 常量表达式2: 语句组2;break; case 常量表达式n: 语句组n; break; default: 语句组n+1; ,4.3 多分支选择语句(switch语句),执行过程:先求解表达式的值,然后与与后面各常量表达式比较,若与表达式i的值相同,则执行相应语句组i(i为1n)。若与常量表达式的值都不相同时,执行default后的语句组n+1。动画演示如下:,4.3 多分支选择语句(switch语句),【例4.7】 根据输入的成绩等级A,B,C,D来对应输出相应的说明:“superexcellence(优秀)”,“excellence(良好)”,“middling(中等)”和“pass(及格)”,其它输入都为“failure(不及格)”。,4.3 多分支选择语句(switch语句),4.3 多分支选择语句(switch语句),相关说明: (1) case后面所有的常量表达式与switch后面表达式的值类型相同。 (2) 语句组可以是多个语句组成的,但不需要用大括号括起来。 (3) 如果case后面没有break语句,程序会继续执行后面case后语句组。 (4) 注意case和常量表达式之间要有空格。 (5) Default子句可以省略,case和default子句的出现次序是任意的。,4.3 多分支选择语句(switch语句),【例4.8】 对于输入的成绩等级A和B,相应输出为“良好”,C和D 对应着“及格”,其它输入都为“不及格”。 程序代码如下: #include “stdio.h” void main() char grade; printf(“Please input the grade of score:n”); scanf(“%c”, /*其它为“不及格”*/ ,4.3 多分支选择语句(switch语句),【例4.9】 将下列程序与4.8对比分析,什么情况下会出现相同与不同的情况。 程序代码如下: #include “stdio.h” void main() char grade; printf(“Please input the grade of score:n”); scanf(“%c”, ,注意:从例4.8和例4.9的区别和联系,重点关注break的用法和作用。,4.4 程序综合举例,【例4.11】判断输入的某一年是否是闰年,将结果输出。 提示:符合下列任一条件的年份为闰年,其它年份都不是闰年。 (1)该年份能被4整除,但不能被100整除; (2)该年份能被400整除。 解题思路:判断所输入的年份是否为闰年,只要满足(1)或(2)中的任意一条,该年份便为闰年,否则该年份不是闰年。仔细分析这两个条件,实际上就是三个数的整除问题,即是否能够被4、100、400整除,程序分别用flag1、flag2和flag3来表示。,4.4 程序综合举例,程序代码如下: #include “stdio.h” void main() int year; int flag1, flag 2, flag 3; printf(“Please input a year:n “); scanf(“%d”, ,4.4 程序综合举例,运行结果如下: Please input a year: 1600 1600 year is a leap year! Please input a year: 1902 1902 year is not a leap year!,4.4 程序综合举例,【例4.12】输入一个无符号短整数和进制代号(d十进制、0八进制、x十六进制),然后将数进制代号要求输出。 程序代码如下: #include “stdio.h” void main() unsigned short x; char c; scanf(“%d,%c”, /*进制代号错误提示*/ ,4.4 程序综合举例,运行结果如下: 6,d 6 6,o 6 6,x 6 6,c Input error! 26,d 26 26,o 32 26,x 1a,4.4 程序综合举例,【例4.13】对于输入的三个数值:x,y和z,判断它们可否构成一个三角形,若它们可以构成一个三角形,则输出该三角形的周长和面积。 解题思路:三角形三条边的边长之间的关系是:“两边之和大于第三边,两边之差小于第三边”可构成三角形。 边长分别为x,y,z的三角形面积:,其中:,演示该程序执行的过程,4.4 程序综合举例,【例4.14】一元二次方程ax2+bx+c=0的求解问题。,解题思路:根据一元二次方程ax2+bx+c=0的性质,可知:,(1)当b2-tac=0,该方程有两个相等的实数根,(2)当b2-tac0,该方程有两个不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中物理特岗教师面试题预测及解题思路
- 2025年供应链经理竞聘面试预测题及应对策略解析
- 2025年炼钢工中级技能考核要点及模拟题解析
- 电力基金基础知识培训课件
- 2025年烘焙师中级技能进阶面试题及答案解析
- 2025年酒店管理实习生面试模拟题与答案解析
- 2025年医学影像学诊断技术考试预测题集
- 2025年特岗教师招聘考试复习资料初中生物电子版
- 2025年程序员Java开发面试技巧与预测题
- 电信禁毒安全知识培训课件
- SH/T 0358-199510号航空液压油
- DL∕T 722-2014 变压器油中溶解气体分析和判断导则
- 健康保险行业可行性分析报告
- 劳动保障监察业务知识
- 《春》示范课教学课件第1课时【统编人教版七年级语文上册】
- 医院检验科实验室生物安全程序文件SOP
- 新入辅导员职员工培训
- IPS内置保温体系施工方案(经典)
- 房屋买卖合同范本Word模板下载
- 授权委托书保险理赔
- 保安公司安全生产培训课件
评论
0/150
提交评论