已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 选择与循环结构程序设计,4.1选择结构程序 4.2循环结构程序,4.1 选择结构程序,选择结构的N-S流程图如图所示。,关系运算:比较运算,比较两个操作数,看是否满足给定的关系。,1、关系运算符,:小于 ,53, 35,=:小于等于,5=3,3=5,与数学上()不同,:大于,53,35,=:大于等于,5 =3,3 =5 ,与数学上()不同,=:等于,5=3 ,与数学上(=)不同,!=:不等于,5!=3 ,与数学上()不同,4.1.1 关系运算符与关系表达式,关系运算符及其优先次序,关于优先次序的说明如下: (1)关系、算术、赋值运算符的优先级关系如下:,2.关系表达式,例: xy, 2*a+bc-d, (x=2)=(y=4), ab,0,1,用关系运算符将表达式连接起来的式子,C语言中,真:非0值,假:0值,例: 试求 x=531 的值,例: 若 a=3, b=4, c=5 则 ab a+bc f=abc,0,0,1,1,1.逻辑运算符及其优先次序,4.1.2逻辑运算符与逻辑表达式,2、关于优先次序的说明如下: (1) (2),!:自右向左,&、|:自左向右,结合性,例: (ab)&(xy) ab&xy (a= =b)|(x= =y) a= =b|x=y (!a)|(ab) !a|ab,逻辑表达式的值,非0 值:真,0值:假,整型 实型 字符型 指针类型,0 0.0 0 NULL,3、逻辑表达式,用逻辑运算符将表达式连接起来的式子。,4、逻辑运算符的运算规则,!:逻辑非,一元运算符,运算规则:取反,真,假,假,真,&:逻辑与 。又称逻辑乘。,运算规则:两个操作数均为真,结果为真。,|:逻辑或 。又称逻辑加。,运算规则:只要两个操作数有一个为真,结果为真。,1,例:,int a=5; float b=3.5;,!a,0,!b,0,a&b,1,a|b,1,!a&!b,0,4、注意,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。短路运算,例:,a=0; b=1; c=2; d=a+,d=(a+),运算结果: d=0,a=1,b=1,c=2,(1)a & b & c,求解方法:只有a为真(非0),才需要判断b的值,只有a和b都为真,才需要判断c的值。只要a为假,就不必判断b和c,运算立即中止。,(2)a | b | c,求解方法:只要a为真(非0),就不必判断b和c;只有a 为假,才判断b;a和b都为假,才判断c。,例2-8:,a=0; b=1; c=2; d=a+|b+|- -c;,d=(a+)|(b+)|(- -c);,运算结果: d=1,a=1,b=2,c=2,实际问题中逻辑量的描述 (1)图所示x轴上阴影区间的数据描述,x= 1&x= 2,1=x=2,错误,(2)闰年问题,假定闰年为year,判定是否闰年的标准为:如果该年能被4整除且不能被100整除,或者该年能被400整除,则都为闰年。,能被4整除且不能被100整除,可表示为:,year%40 year%100!0;,&,能被400整除可表示为:,year%400 0,闰年问题的表达式为:,year%40 & year%100!0 | year%4000,也可表示为: ! (year%4) & year%100 | !(year%400),1、单分支选择if语句,if语句有三种形式:单分支选择if语句、双分支选择if语句、多分支选择if语句。,语句形式:,if (表达式) 语句;,语句执行流程:,一、if语句的三种形式,4.1.3 if语句,例:从键盘输入两个整数a和b,如果a大于b则交换两数,最后输出两个数。,#include ,输入a,b,ab,交换a、b,输出,结束,真,假,void main() int a,b,t; scanf(“%d,%d“,if(ab) t=a;a=b;b=t;,printf(“a=%d,b=%dn“,a,b); ,注意:,(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号 将需要执行的多个语句括起,形成一个复合语句。,(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。,2、双分支选择if语句,语句形式:,if (表达式) 语句1; else 语句2 ;,语句执行流程:,表达式,语句1,真(非0),假(0),语句2,例:输入两个整数,输出其中较大的数。,#include #include ,void main() int x,y,max; scanf(“%d,%d“,if(xy) max=x; else max=y;,printf(“max=%dn“,max); ,输入x,y,xy,max=x,输出最大值,结束,真,假,max=y,注意:,if和else语句之间只能有一个语句,当ifelse之间的语句不只一句时,应用一对将语句括起。,if(ab) a+;b+; else a=0;b=10;,3、多分支选择if语句,语句形式:,if (表达式1) 语句1; else if (表达式2)语句2; else if (表达式n)语句n; else 语句n+1;,语句执行流程:,表达式1,语句1,真(非0),假(0),例:计算分段函数。,提示:,(1)当if语句中出现多个“if”与“else”的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。“else”与“if”的匹配原则是“就近一致原则”,即“else”总是与它前面最近的“if”相匹配。,(2)if语句中条件的写法应尽量简单。,语句含义:,语句形式:,当if语句中又包含若干个if语句时,则构成了if 语句嵌套的情形。,二、 if语句的嵌套,if ( 表达式1) if ( 表达式2) 语句1;,if ( 表达式1) if ( 表达式2) 语句1; else 语句2;,if语句的嵌套,语句1;,语句2;,语句1;,语句2;,else与if的配对原则:,就近一致原则:,else与它上面的最接近它,而又没有其它else语句与之相匹配的if语句配对。,用条件运算符也可以实现选择结构,4.1.4 switch语句,1、语句形式:,switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出 现的次序并 不影响执行 结果。,例:假设用0、1、26分别表示星期日、星期一星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,#include “stdio.h“ void main() int n; scanf(“%d“, ,程序运行情况如下: 3 Wednesday Thursday Friday Saturday error,在“switch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。,为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,将上面的例题修改如下:,#include “stdio.h“ void main() 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语句。,例: 企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?,利润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以上,用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,#include “stdio.h“ void main() float x,y; int n; scanf(“%f“, ,程序如下:,4.1.5 选择结构程序设计举例,例:将任意三个整数按从大到小的顺序输出。,#include “stdio.h“ void main( ) int x,y,z,t; scanf(“%d,%d,%d“, ,1.main() int x=1,y=0,a=0,b=0; switch(x) case 1:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年山东高职单招数学概率与统计基础模拟试卷(含解析)
- 2026人工智能技术应用推广分析及商业化路径研究报告
- 2026生物制药制剂技术行业市场现状供需分析及投资评估规划分析研究报告
- 中级会计职称考试模拟试题(含解析)
- 2026日化用品行业技术革新分析及投资布局策略研究报告
- 注册会计师《财务成本管理》成本计算专题试卷(含解析)
- 2027届保定市北市区数学四上期末学业水平测试模拟试题含解析
- 2027届萨尔图区三年级数学第一学期期末预测试题含解析
- 2026汽车零部件行业市场竞争分析及投资价值分析评估发展策略报告
- 2026人工智能编程行业市场潜力分析与企业投资计划报告
- 非遗宋锦珍珠扇沙龙
- 2026年党群系统年轻干部遴选笔试试卷(附答案)
- 儿童乐园员工工作制度
- 2026年救助管理服务中心下属事业单位选聘考试试题(附答案)
- 2025四川成都市青白江区卫健局公开招募医疗卫生辅助岗人员48人笔试历年典型考题及考点剖析附带答案详解试卷2套
- 政府信息公开业务培训
- 景区应急救援培训课件
- 职称申报指引培训课件
- 广东省广州市2025年七年级上学期期末考试数学试卷五套及答案
- 2026年中央广播电视总台招聘124人笔试模拟试题及答案解析
- 2026年及未来5年市场数据中国纤维素酶行业发展趋势预测及投资战略咨询报告
评论
0/150
提交评论