选择结构程序设计(修改).ppt

上传人:za****8 文档编号:15712746 上传时间:2020-09-01 格式:PPT 页数:71 大小:1.42MB
收藏 版权申诉 举报 下载
选择结构程序设计(修改).ppt_第1页
第1页 / 共71页
选择结构程序设计(修改).ppt_第2页
第2页 / 共71页
选择结构程序设计(修改).ppt_第3页
第3页 / 共71页
资源描述:

《选择结构程序设计(修改).ppt》由会员分享,可在线阅读,更多相关《选择结构程序设计(修改).ppt(71页珍藏版)》请在装配图网上搜索。

1、第5章 选择结构程序设计,选择结构的作用是:检查人们指定的条件是否满足,决定在事先给定的两种操作中选定执行其中一种操作 要实现选择结构,关键是判定所给的条件是否满足,第5章 选择结构程序设计,5.1 条件判断 5.2 用if语句实现选择结构 5.3 条件运算符和条件表达式 5.4 利用switch语句实现多分支选择结构 5.5 程序综合举例,5.1 条件判断,5.1.1 条件判断的含义 5.1.2 关系运算符和关系表达式 5.1.3 逻辑运算符和逻辑表达式,5.1.1 条件判断的含义,在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,

2、要停车等待 周末我们去郊游 70岁以上的老年人,入公园免票,5.1.1 条件判断的含义,在现实生活中,需要进行判断和选择的情况是很多的 条件判断的结果是一个逻辑值:“是”或“否” 在计算机语言中用“真”和“假”来表示“是”或“否”,5.1.1 条件判断的含义,用选择结构检查所指定的条件是否满足,并根据判断的结果决定执行哪种操作。如: if (x 0) printf(”%d”,x); else printf(”%d”,-x); 当x为正时,输出x的值,否则输出-x,5.1.2 关系运算符和关系表达式,“条件”在程序中用一个表达式表示 x0 age=70 a+b c b*b-4*a*c 0 av,

3、关系运算符,5.1.2 关系运算符和关系表达式,“条件”在程序中用一个表达式表示 x0 age=70 a+bc b*b-4*a*c0 av,关系表达式,5.1.2 关系运算符和关系表达式,1.关系运算符及其优先次序 语言提供种关系运算符: (小于) = (小于或等于) (大于) = (大于或等于) = (等于) != (不等于),优先级相同 (高),优先级相同 (低),5.1.2 关系运算符和关系表达式,关系、算术、赋值运算符的优先级,5.1.2 关系运算符和关系表达式,ca+b 等效于 c(a+b) ab=c 等效于 (ab)=c a=bc 等效于 a=(bc),5.1.2 关系运算符和关系

4、表达式,2.关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子 关系表达式的值是一个逻辑值,即“真”或“假” 在C的逻辑运算中,以“”代表“真”,以“”代表“假”,5.1.2 关系运算符和关系表达式,2.关系表达式 当a=3,b=2,c=1时 ab的值为“真”,表达式值为1 (ab)=c的值为“真” ,表达式值为1 b+ca的值为“假”,表达式值为0,5.1.3 逻辑运算符和逻辑表达式,有时判断的条件是一个复合的条件: 是中国公民,且在18岁以上 5门课都及格 70岁以上的老人或10岁以下儿童,5.1.3 逻辑运算符和逻辑表达式,1.逻辑运算符及其优先次序 3种逻辑运算符: ,语句,

5、非0(真),0(假),5.2.1 用if语句实现选择结构举例,例: 输入两个学生a和b的成绩,输出其中高的成绩。,解题思路: 设定变量max,将高的成绩放在其中 如果a大于或等于b,把a的值赋给max 如果b大于a,把b的值赋给max 输出max,5.2.1 用if语句实现选择结构举例(1),#include void main() float a,b,max; printf(please enter a and b:); scanf(%f,%f, ,please enter a and b: 67.5,95.5 max= 95.50,例: 输入3个成绩a,b,c,要求按由高到低的顺序输出。,

6、解题思路:可以先用伪代码写出算法: if ab,a和b对换 (a是a、b中的大者) if ac,a和c对换 (a是三者中最大者) if bc,b和c对换 (b是三者中次大者) 输出a,b,c的值,#include void main() float a,b,c,t; printf(please enter a,b,c:); scanf(%f,%f,%f, ,实现a和b的互换,实现a和c的互换,实现b和c的互换,please enter a,b,c:73.5,82.5,99 99.00, 82.50, 73.50,5.2.1 if语句的一般形式,2. if (表达式) 语句1 else 语句2

7、if(xy) printf(”%d”,x); else printf(”%d”,y);,语句2,非0(真),0(假),语句1,5.2.1 用if语句实现选择结构举例(2),#include void main() float a,b,max; printf(please enter a and b:); scanf(%f,%f, ,please enter a and b: 67.5,95.5 max= 95.50,if(a=b) max=a; else max=b;,5.2.1 if语句的一般形式,3.if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3)

8、语句3 else 语句n,5.2.1 用if语句实现选择结构举例(3),输入考试成绩,输出相应的成绩评定信息。 成绩90分时输出“优秀”; 90分成绩75分时输出“良好”; 75分成绩60分时输出“及格”; 成绩60分时输出“不及格”。,#include void main() int x; scanf(%d, ,5.2.2if语句的使用说明,1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2,关系表达式 逻辑表达式,if(a=b ,5.2.2 if语句的使用说明,1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2,关系表达式 逻辑表达式

9、,If(x=5) printf(”O.K.”); If(x) printf(“x is not 0”);,赋值表达式 变量,5.2.2 if语句的使用说明,1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2,关系表达式 逻辑表达式,if(x0) printf(”%f”,x); else printf(”%f”,-x);,不能丢,赋值表达式 变量,5.2.2if语句的使用说明,1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2,关系表达式 逻辑表达式,if(x0) printf(”%f”,x); else printf(”%f”,-x);,

10、数值表达式,配对,5.2.2if语句的使用说明,1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2,可以是: 简单的语句 复合语句 另一个if语句等,5.2.2 if语句的使用说明,例:给出三角形的三个边长,求三角形的面积。 解题思路: 构成三角形的必要条件是两边之和大于第三边,因此在计算三角形面积之前应当进行该条件的判断,#include #include void main ( ) double a,b,c,s,area; printf(please enter a,b,c:); scanf(%lf,%lf,%lf, ,复合语句,please enter a,b

11、,c:2,3,4 area= 2.90,please enter a,b,c:2,3,6 It is not a trilateral.,5.2.3使用嵌套的if语句实现多层判断,有的选择结构中又包含一个或多个选择结构,这称为选择结构的嵌套 if语句中可以又包括另一个if语句,这就是if语句的嵌套 可以用if语句的嵌套实现嵌套的选择结构,5.2.3 使用嵌套的if语句实现多层判断,一般形式: if( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4,内嵌if,例: 有一函数: -1(x0) #include main() int x,y; scanf(“

12、%d”, ,例 有一函数: -1(x0) #include main() int x,y; scanf(“%d”, ,5.2.3 使用嵌套的if语句实现多层判断,例: 为促销,对购买货物多的顾客有优惠:凡买50件以上的优惠5%,买100件以上的优惠7.5%,买300件以上的优惠10%,买500件以上的优惠15%。输入购买的数量和单价,输出应付货款。,5.2.3 使用嵌套的if语句实现多层判断,解题思路: 关键是写出判断货物折扣的选择结构 应付货款=件数*单价*(1-优惠折扣),5.2.3使用嵌套的if语句实现多层判断,#include #include void main ( ) int nu

13、mber; double cost,price,total; printf(“enter number and price:); scanf(%d,%lf,if (number=500) cost=0.15; else if (number=300) cost=0.10; else if (number=100) cost=0.075; else if (number=50) cost=0.05; else cost=0; total=number*price*(1-cost); printf(“Total=%10.2fn”,total); ,enter number and price:51

14、2,821.5 Total= 357516.80,if (number=500) cost=0.15; else if (number=300) cost=0.10; else if (number=100) cost=0.075; else if (number=50) cost=0.05; else cost=0; total=number*price*(1-cost); printf(“Total=%10.2fn”,total); ,enter number and price: 350,821.5 Total= 258772.50,if (number=500) cost=0.15;

15、else if (number=300) cost=0.10; else if (number=100) cost=0.075; else if (number=50) cost=0.05; else cost=0; total=number*price*(1-cost); printf(“Total=%10.2fn”,total); ,enter number and price: 150,821.5 Total= 113983.13,if (number=500) cost=0.15; else if (number=300) cost=0.10; else if (number=100)

16、 cost=0.075; else if (number=50) cost=0.05; else cost=0; total=number*price*(1-cost); printf(“Total=%10.2fn”,total); ,enter number and price: 20,821.5 Total= 16430.00,else总是与它上面最近的未配对的if配对,if (number=500) cost=0.15; else if (number=300) cost=0.10; else if (number=100) cost=0.075; else if (number=50)

17、 cost=0.05; else cost=0; total=number*price*(1-cost); printf(“Total=%10.2fn”,total); ,if (number=500) cost=0.15; else if (number=300) cost=0.10; else if (number=100) cost=0.075; else if (number=50) cost=0.05; else cost=0;,5.3 条件运算符和条件表达式,5.3.1 用条件表达式实现简单的选择结构 5.3.2 在程序中使用条件表达式,5.3.1 用条件表达式实现简单的选择结构,

18、在if语句中,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值 如:if (ab) max=a; else max=b;,max = (a b) ? a : b;,条件运算符,5.3.1 用条件表达式实现简单的选择结构,在if语句中,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值 如:if (ab) max=a; else max=b;,max = (a b) ? a : b;,条件表达式,5.3.1 用条件表达式实现简单的选择结构,条件运算符优先于赋值运算符 条件运算符的结合方向为“自右至左” 以下为合法的使用方法: ab ? (

19、a=100):(b=100); ab ? printf(“%d”,a): printf(“%d”,b);,5.3.1 用条件表达式实现简单的选择结构,条件表达式的一般形式为 表达式?表达式: 表达式,条件表达式 取值表达式2的值,非0(真),0(假),条件表达式 取值表达式3的值,5.3.2 在程序中使用条件表达式,例: 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,5.3.2 在程序中使用条件表达式,#include void main ( ) char ch; scanf(%c, , a,5.4 利用switch语句实现多分支选择

20、结构,switch语句用来实现多分支选择结构 学生成绩分类 85分以上为A等 7084分为B等 6069分为C等 人口统计分类 按年龄分为老、中、青、少、儿童,5.4 利用switch语句实现多分支选择结构,switch语句的一般形式: switch(表达式) case 常量表达式1 :语句1 case 常量表达式2 :语句2 case 常量表达式n :语句n default : 语句n+1 ,不能相同,5.4利用switch语句实现多分支选择结构,switch(grade) case A: printf(”85100n”); case B: printf(”7084n”); case C:

21、printf(”6069n”); case D: printf(”60n”); default : printf(”errorn”); ,若grade的值为“A”,85100 7084 6069 60 error,break;,break;,break;,break;,85100,5.4 利用switch语句实现多分支选择结构,例:若变量已正确定义,则以下程序段的运行结果是: a=2;b=7;c=5; switch(a0) case 1:switch(b10) case 1:printf();break; case 0:printf(!);break; case 0:switch(c=5) c

22、ase 0:printf(*);break; case 1:printf(#);break; default:printf(%);break; default:printf( A. # if(a+5) printf(%dn,a); else printf(%dn,a-); 执行后显示结果是( ) 。 A. 4 B. 6 C. 5 D. 有语法错误,5.5 程序综合举例,例 写程序,判断某一年是否为闰年。 用变量leap代表是否闰年的信息 若闰年,令leap=1;非闰年,leap=0 最后判断leap是否为1(真),若是,则输出“闰年”信息,#include void main() int ye

23、ar,leap; printf(enter year:); scanf(%d, ,标志变量,与if (leap!=0)含义相同,#include void main() int year,leap; printf(enter year:); scanf(%d, ,if(year%4!=0) leap=0; else if (year%100!=0) leap=1; else if(year%400!=0) leap=0; else leap=1;,#include void main() int year,leap; printf(enter year:); scanf(%d, ,if(year%4=0 ,enter year: 2008 2008 is a leap year.,enter year: 2100 2100 is not a leap year.,(23)设有定义:int a=2,b=3,c=4;,则下列选项中值为0 的表达式是( )。 A)(!a= =1) 执行该程序段后,k 的值是( )。 A)3 B)2 C)1 D)0,A,B,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!