版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计第四章第四章 选择结构程序选择结构程序设计设计 前一页 下一页 休息2本章主要内容本章主要内容l关系运算符和关系表达式关系运算符和关系表达式l逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式lif 语句语句lswitch 语句语句 前一页 下一页 休息3选择结构选择结构选择结构又称分支结构,即程序出现分选择结构又称分支结构,即程序出现分支,根据支,根据条件条件判断的结果决定程序的判断的结果决定程序的走向,结构图如下:走向,结构图如下:条件条件语句语句1语句语句2真真假假选择结构选择结构 前一页 下一页 休息44.1 关系运算符和关系表达式关系运算符和关系表达式l关系运算符关系运算符:
2、用于比较运算即判断条件是否用于比较运算即判断条件是否成立成立l符号与优先级:符号与优先级: = = != 优先级相同(高)优先级相同(低)优先级相同(高)优先级相同(低)l 关系运算符优先级低于算术运算符关系运算符优先级低于算术运算符l结合性:从左至右结合性:从左至右l结果:逻辑值,即只能为结果:逻辑值,即只能为 1(true) 或或 0(false)例:设例:设a=2, b=3, c=4, x=1, y=2 则:则:a b 值为值为0 c b) & (xy) 值为值为0 前一页 下一页 休息6逻辑运算与逻辑表达式逻辑运算与逻辑表达式4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式
3、M注意:注意:逻辑值参与计算时,以逻辑值参与计算时,以0为假;以为假;以1为真为真求出的求出的 表达式值,以表达式值,以0为假;以非为假;以非0为真为真&左式为左式为0, | 左式为左式为1时时, 右式将不再计右式将不再计算算 前一页 下一页 休息7逻辑运算与逻辑表达式逻辑运算与逻辑表达式l练习:练习:设设 a = 3 b=4 c=5 x = 1 y = 2,求出下列表达求出下列表达式的值式的值t = ( m = a b ) & ( c = = x b ) & ( ( +x ) y ) 表达式值为表达式值为0 , a值为值为4, x值为值为14.2 逻辑运算符与逻辑表达
4、式逻辑运算符与逻辑表达式 前一页 下一页 休息8l练习:练习:设设int age表示年龄,表示年龄,int m表示性别,男性表示性别,男性为为1,女性为,女性为0,写出下列条件表达式,写出下列条件表达式判断是否男职工可表示为判断是否男职工可表示为(1),未满,未满30岁的职岁的职工表示为工表示为(2),45岁以上女职工表示为岁以上女职工表示为(3),23岁以下女职工或岁以下女职工或50岁以上男职工表示为岁以上男职工表示为(4)。1. m = 12.age 45 & m = 04.age 50 & m = 1逻辑运算与逻辑表达式逻辑运算与逻辑表达式逻辑运算符与逻辑表达式练习逻辑运
5、算符与逻辑表达式练习 前一页 下一页 休息94.3 if 语句语句If 语句实现分支结构语句实现分支结构标准两分支:标准两分支: if else 语句语句if ( 表达式表达式 ) 语句语句1else 语句语句2规则:表达式结果为非规则:表达式结果为非0时执行语句时执行语句1,否则执行语句否则执行语句2例:例:if( score = 60 ) printf(合格合格); else printf( 不合格不合格);If语句的形式语句的形式 前一页 下一页 休息10If-else语句实例语句实例4.3 if 语句语句例:输出两个数中较大的数例:输出两个数中较大的数#include /TC4.3-1
6、.cvoid main( )int x , y , z ;printf( please input x, y : ); scanf(%d%d, &x, &y );if ( x y ) z = x ; else z = y;printf( z= %dn , z ); 前一页 下一页 休息113.3 选择结构语句选择结构语句If 语句实现分支结构语句实现分支结构单分支单分支if语句:语句: if ( 表达式表达式 ) 语句语句;规则:表达式结果为非规则:表达式结果为非0时时,执行后面执行后面语句语句例:例:if( score 60 ) printf(补考补考);If语句的形式 前一
7、页 下一页 休息12单单If语句实例语句实例4.3 if 语句语句例:求例:求x的绝对值的绝对值#include /TC4.3-2.cvoid main( )int x;printf( x= ) ;scanf( %d, &x );if ( x0 ) x = -x;printf( x的绝对值是的绝对值是: %dn, x ); 前一页 下一页 休息13分支结构实例分支结构实例 4.3 if 语句语句例:例:输入一个年份,判断是否闰年。输入一个年份,判断是否闰年。1.设计算法设计算法 闰年条件一:能被闰年条件一:能被400整除的年份整除的年份 闰年条件二:能被闰年条件二:能被4整除但不能被整
8、除但不能被 100整除的年份整除的年份2.设计程序功能、程序结构和数据结构设计程序功能、程序结构和数据结构 数据结构:数据结构:year 表示年份为整数表示年份为整数 条件表达式:条件表达式: year % 400 = 0 year % 4 = 0 & year % 100 != 0#include /TC4.3-3.cvoid main(void) int year; int IsLeapYear; printf( Enter the year: ); scanf(%d, &year);IsLeapYear = ( year % 4 = 0 & year % 100
9、!= 0 ) | ( year % 400 = 0 ); if (IsLeapYear) printf( %d is a leap yearn, year );else printf( %d is not a leap yearn, year );计算条件计算条件判断输出判断输出 前一页 下一页运行结果:运行结果:Enter the year: 20002000 is a leap year 前一页 下一页 前一页 下一页 休息16 4.3 if 语句语句M注意:注意:if、else后面只能是单个语句,若有后面只能是单个语句,若有多个语句,则应写在多个语句,则应写在 中成为复合语句。中成为复合
10、语句。l例:将两个数按由大到小的顺序输出例:将两个数按由大到小的顺序输出#include /TC4.3-4.cmain( ) int x , y , z ;printf( x= ); scanf( %d, &x );printf( y= ); scanf( %d, &y );if ( x y 为为True x 与与 z 比比 否则否则 y 与与 z 比比#include /TC4.3-5.cvoid main()int x,y,z,max;printf( input x, y, z : );scanf( %d%d%d, &x, &y, &z);if (
11、x y ) if ( x z ) max = x;else max = z; else if ( y z ) max = y;else max = z;printf( max = %dn , max ); 前一页 下一页 前一页 下一页 休息20用用条件运算条件运算符简化符简化ifif4.3 if 语句语句lC提供条件表达式可代替提供条件表达式可代替if语句简化程序语句简化程序l一般形式:一般形式:表达式表达式1?表达式?表达式2:表达式:表达式3l执行顺序:执行顺序:先求解表达式先求解表达式1,若表达式若表达式1的值为的值为true,则求解表达式,则求解表达式2,表,表达式达式2的值为最终结
12、果的值为最终结果若表达式若表达式1的值为的值为false,则求解表达式,则求解表达式3,表达式表达式3的值为最终结果的值为最终结果 前一页 下一页 休息21l注意:注意:条件运算符优先级高于赋值运算符,低于条件运算符优先级高于赋值运算符,低于逻辑运算符逻辑运算符优先级总排名:由高到低优先级总排名:由高到低括号括号单目单目 算术算术关系关系逻辑逻辑条件条件赋值赋值逗号逗号结合方向:自右至左结合方向:自右至左例:设例:设a = 2, b = 3, x = 1, y = 2 c = ( a b ) ? x + a : y + a c 值为值为 4 用用条件运算条件运算符简化符简化ifif4.3 if
13、 语句语句 前一页 下一页 休息224.3 if 语句语句求两个数中较大数的求两个数中较大数的if语句:语句: if ( x y ) z = x ; else z = y;可改写为:可改写为: z = ( x y ) ? x : y;求三个数中较大数的求三个数中较大数的if语句:语句: if ( x y ) if ( x z ) max = x ; else max = z; else if ( y z ) max = y ; else max = z;可改写为:可改写为: max = ( x y ) ? ( x z ) ? x : z : ( y z ) ? y : z;用用条件运算条件运算
14、符简化符简化ifif 前一页 下一页 休息234.3 if 语句语句嵌套的嵌套的if语句注意事项语句注意事项M注意注意:每层的每层的 if 与与 else 配对,即配对,即else与其前面与其前面最近的最近的 if 配对。或用配对。或用 来确定层次关系。来确定层次关系。例例TC4.3-6.c求分段函数的值求分段函数的值 -1 ( x 0 )-1 ( x 0 )1 ( x 0 )#include void main( ) int x, y; scanf( %d, &x); y = 0; if ( x = 0 ) if ( x 0 ) y = 1; else y = -1; printf(
15、 y = %dn, y );#include void main( ) int x,y; scanf( %d, &x); y = 0; if ( x = 0 ) if ( x 0 ) y = 1; else y = -1; printf( y = %dn, y );输入输入x = -5 y = 0 x = 0 y = -1#include void main( ) int x, y; scanf( %d, &x); if ( x = 0 ) if ( x 0 ) y = 1; else y = 0; else y = -1; printf( y = %dn, y );输入输入x
16、 = -5 y = -1 x = 6 y = 1 前一页 下一页 前一页 下一页 休息25与与y = (x 3) ? 0 : 1 等价的是:等价的是:A.if (x 3) y = 0; else y = 1;B.if ( ! (x 3) ) y = 0; else y = 1;C.if ( ! (x = 3) ) y = 0; else y = 1; D.if (x 1 ) if ( y 2 ) x += y; else x -= y; A.if ( x 1 & y 2 ) x += y; else x -= y;B.if ( x 1 ) if ( y 1 ) x = ( y 2 )
17、if ( x 1 ) x -= y; else x += y;答案:答案:B、Cifif语句练习语句练习4.3 if 语句语句 前一页 下一页 休息26If语句实现多分支结构语句实现多分支结构4.3 if 语句语句if ( 表达式表达式1 ) 语句语句1else if ( 表达式表达式2 ) 语句语句2else if ( 表达式表达式3 ) 语句语句3 else 语句语句 n规则:先求表达式规则:先求表达式1,值为,值为True时执行语句时执行语句1否则求表达式否则求表达式2,再为,再为True时执行语句时执行语句2 . 所有表达式值均为所有表达式值均为False 时,执行语句时,执行语句n
18、前一页 下一页 休息274.3 if 语句语句If语句实现多分支结构表达式表达式1表达式表达式2表达式表达式3表达式表达式n语句语句n语句语句n+1语句语句3语句语句2语句语句1非非0非非0非非0非非00000 前一页 下一页 休息28#include /TC4.3-6B.c分段函数分段函数void main( )int x,y;scanf( %d , &x);if ( x 0 ) y = 1; else if ( x = 0 ) y = 0; else y = -1;printf( y = %dn, y );4.3 if 语句语句If-elseif-else语句实例语句实例 “=”才
19、是判断,才是判断,“=”是赋值是赋值 前一页 下一页 休息29l一般形式一般形式switch ( (表达式表达式) ) case 常量表达式常量表达式 1 1:语句:语句1 1 case 常量表达式常量表达式 2 2:语句:语句2 2 case 常量表达式常量表达式 n n:语句:语句n n default : 语句语句n+1n+1 l执行顺序执行顺序以以case中的中的常量表达式值常量表达式值为入口标号,由此开始顺序执为入口标号,由此开始顺序执行。因此,每个行。因此,每个case分支最后应该加分支最后应该加breakbreak语句。语句。进入分支后执行的进入分支后执行的语句语句4.4 swi
20、tch 语句语句switch语句一般形式语句一般形式根据当前表达式的值,决定程序分支根据当前表达式的值,决定程序分支表达式可能的值列表表达式可能的值列表一般为非关系或逻辑表达式一般为非关系或逻辑表达式 前一页 下一页 休息30例例TC4.3-7.c输入一个输入一个06的整数,转换成星期输的整数,转换成星期输出。出。4. 4 switch 语句语句switch语句的实例语句的实例#include /TC4.4-1.cvoid main(void) int day; scanf(%d, &day);switch (day) case 0: printf( Sunday ); break;
21、case 1: printf( Monday ); break; case 2: printf( Tuesday ); break; case 3: printf( Wednesday); break; case 4: printf( Thursday ); break; case 5: printf( Friday ); break; case 6: printf( Saturday ); break; default: printf( Error ); break; 前一页 下一页 前一页 下一页 休息324.4 switch 语句语句M注意:注意:case分支可包含多个语句,且不用加分支
22、可包含多个语句,且不用加 表达式、判断值都是整型或字符型表达式、判断值都是整型或字符型每个常量表达式的值不能相同,次序不影每个常量表达式的值不能相同,次序不影响执行结果响执行结果若干分支执行内容相同可共用一组语句若干分支执行内容相同可共用一组语句switch语句注意问题语句注意问题 前一页 下一页 休息334.4 switch 语句语句switch语句注意实例语句注意实例例:输入考试成绩后,将百分制转换成五分制例:输入考试成绩后,将百分制转换成五分制1. 设计算法设计算法 转换规则:转换规则:90100分为分为“优秀优秀” :8089分为分为“良好良好” 7079分为分为“中中” :6069分
23、为分为“及格及格 ” 60分以下为分以下为“不及格不及格”2. 设计程序功能、程序结构和数据结构设计程序功能、程序结构和数据结构 数据结构:数据结构:score表示分数为整数,等级可直接输出表示分数为整数,等级可直接输出 程序结构:由程序结构:由score值即可分支,应用值即可分支,应用switch 语句语句 分数由范围变成常量值可用分数由范围变成常量值可用 score / 10 60分以下范围太大,可用分以下范围太大,可用default#include /TC4.4-2.cvoid main()int score;printf( score= ); scanf(%d, &score)
24、;switch ( score / 10 )case 10 :case 9 : printf( 优秀优秀 ); break;case 8 : printf( 良好良好 ); break;case 7 : printf( 中中 ); break;case 6 : printf( 及格及格 ); break;default : printf( 不及格不及格 ); 前一页 下一页 前一页 下一页 休息35switch 应用练习应用练习l以下程序以下程序,输入输入b时时,输出为输出为?输入输入d时输出为时输出为?#include /* TC4.4-3.C */void main( ) char c;c
25、 = getchar( );switch ( c - a )case 0: case 1: printf( %c, c + 4 ); case 2: printf( %cn, c + 4 ); break; case 3: printf( %c, c + 3 ); default: printf( %cn, c + 2 ); break;运行结果:运行结果:输入输入b, 输出输出ff输入输入d, 输出输出gf 前一页 下一页 休息364.4 switch 语句语句l一般格式:一般格式: if ( 表达式表达式1 ) 语句语句1else if ( 表达式表达式2 ) 语句语句2else if (
26、 表达式表达式3 ) 语句语句3 else 语句语句 nl一般形式一般形式switch ( (表达式表达式) ) case 常量表达式常量表达式1 1:语句:语句1 1 case 常量表达式常量表达式2 2:语句:语句2 2 case 常量表达式常量表达式n n:语句:语句n n default : 语句语句n+1n+1 switch与if-elseif-else的对比 前一页 下一页 休息374.4 switch 语句语句l相同点:相同点:两者都可用于多分支处理,且大部分情况两者都可用于多分支处理,且大部分情况下可以通用下可以通用switch与if-elseif-else的对比 前一页 下一页l例例TC4.4-2将百分制转换成五分制可改写为将百分制转换成五分制可改写为:#include /* TC4.4-2A.c */void main( ) int score;printf( score= );scanf(%d, &score);if ( score = 90 ) printf( 优秀优秀n ); else if( score = 80 ) printf( 良好良好n ); else if( score = 70 ) printf( 中中n ); else if( score
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024北京十五中高三(上)开学考化学试题及答案
- 广告制作成本与预算规划
- 商务谈判技巧及常用案例解读
- 太仓社会保障体系建设与发展报告
- 大地控股如何进行跨文化管理
- 压力管道保温防腐技术指南
- 后台支持人员岗位团队建设方案
- 工程会计在审计领域的面试技巧
- 摄影艺术从入门到精通的摄影技巧大全
- 工程项目中的质量安全进度综合管理
- 2025年秋苏科版(2024)初中数学八年级(上册)教学计划及进度表(2025-2026学年第一学期)
- 学前教育升本考试题及答案
- 脑梗塞恢复期课件
- 船员安全知识培训课件中心
- 水质采样监测培训课件
- 中国境内女大学生乳腺癌知识 - 态度 - 行为的多维度剖析与提升策略研究
- 2026版高中汉水丑生生物-第一章第一节分离定律
- 科研成本管理办法
- 燕山大学《Python语言编程与工程实践》2023-2024学年第一学期期末试卷
- 部编版四年级下册语文思政教育融合计划
- 2025-2030年中国杀线虫剂行业市场现状供需分析及投资评估规划分析研究报告
评论
0/150
提交评论