版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 选择程序设计根据某个条件成立与否,决定是否执行指定的任务。根据某个条件成立与否,决定是否执行指定的任务。 条件判断的结果是逻辑值:是或否,在程序中用条件判断的结果是逻辑值:是或否,在程序中用“真真”(1)和)和“假假”(0)来表示。)来表示。选择结构例子:选择结构例子:if(x0) printf(“%d”,x);else printf(“%d”,-x);1. 优先级相同(优先级相同(高高)优先级相同(优先级相同(低低) 算术算术 高高 运算符运算符 关系关系运算符运算符 赋值赋值运算符运算符 低低优先次序优先次序a=cb*b-4*a*c0abf=abc b*b-4*a*c05.1.2
2、逻辑运算和逻辑表达式逻辑运算和逻辑表达式1. (ab)&(xy)(ab) | (xy)!(ab)5.1.2 逻辑运算和逻辑表达式逻辑运算和逻辑表达式1. 5.1.2 逻辑运算和逻辑表达式逻辑运算和逻辑表达式2. (ab) & (xb)ab & xb可写成可写成5.1.2 逻辑运算和逻辑表达式逻辑运算和逻辑表达式2. !a 为0a & b 为1a | b 为1!a | b 为14 & 0 | 2 为1假设假设a=4,b=5,则:,则:例如例如 实际上,逻辑运算符两侧的运算对象不但可以是0和1,或是0和非0,而且也可以是字符型、实型和指针型等。系统最终是以0
3、和非0来判定它们的真假的。例如:c & d 为12. 5.2.1 流程图流程图功能功能说明说明#include void main() float a,b,max; printf(please enter a and b:); scanf(%f,%f,&a,&b); if (a=b) max=a; #include void main ( ) float a,b,c,t; printf(please enter a,b,c:); scanf(%f,%f,%f,&a,&b, &c); if (ab) t=a;a=b;b=t; if (ac) t=a
4、;a=c;c=t; if (bc) t=b;b=c;c=t; printf(%f,%f,%fn, a,b,c); 分析:分析:可用伪代码写出算法可用伪代码写出算法 if ab, ab,使使a为为a,b中的小者;中的小者; if ac, ac,使使a为为a,c中的小者中的小者,此时此时a最小;最小; if bc, bc,使使b为为b,c中的小者,中的小者,,此时此时b次小。次小。流程图流程图例如:if (xy) printf(“%d”,x);else printf(“%d”,y);注意注意输入三角形的三边长,求三角形的面积。输入三角形的三边长,求三角形的面积。#include #include
5、void main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); if(a+bc & b+ca & a+cb) s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%fn, area); else printf(“It is not a trilateral.n”);5.2.2 使用嵌套的使用嵌套的内嵌内嵌 if内嵌内嵌 if嵌套嵌套一个一个if语句中又包含着另一语句中又包含着另一个或多个个或多个if语句,称为语句,称为if语语句的嵌套。句的
6、嵌套。一般格式一般格式注意注意 else总总是与它前面最近的未配对是与它前面最近的未配对的的if 配对使用。配对使用。 可通过增加花括号可通过增加花括号来确定配对关系。来确定配对关系。 #include void main() int number; float cost, price, total; scanf(%d,%f,&nubmer, &price); if(number=500) cost=0.15; else if(number=300) cost=0.10; else if(number=100) cost=0.075; else if(number=50) co
7、st=0.05; else cost=0; totoal=number*price*(1-cost); printf(“Total=%fn, total);一般格式一般格式#include void main() int number; float cost, price, total; scanf(%d,%f,&nubmer,&price); 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;
8、 else cost=0; totoal=number*price*(1-cost); printf(“Total=%fn, total);关于关于if与与 else的讨论的讨论if ( ) if( ) 语句语句1else if( ) 语句语句2else 语句语句3if ( ) if( ) 语句语句1 else if( ) 语句语句2 else 语句语句3if ( ) if( ) 语句语句1 else if( ) 语句语句2 else 语句语句3else 语句语句4关于关于if与与 else的讨论的讨论if ( ) if( ) 语句语句1else 语句语句2if ( ) if( ) 语句语句1
9、 else 语句语句2一般形式:一般形式:表达式表达式语句语句1语句语句2语句语句n+1流程图:流程图:一般形式:一般形式:说明:说明: switch后括号内的表达式可是任后括号内的表达式可是任何类型;何类型; 若表达式的值与某个常量表达式若表达式的值与某个常量表达式的值相等时,执行此的值相等时,执行此case后面的后面的语句;语句; 若没有相等的值时,执行若没有相等的值时,执行default后面的语句;后面的语句; 每个每个case后面的常量表达式的值后面的常量表达式的值都必须不相同,否则出现矛盾;都必须不相同,否则出现矛盾; 各个各个case 和和default出现的次序不出现的次序不影响
10、执行结果;影响执行结果; case后面的语句中如果没有后面的语句中如果没有break语句,则执行完本语句,则执行完本case后的语句后的语句会接着执行下面的会接着执行下面的case ; 多个多个case可共用一组语句。可共用一组语句。#include void main() int year, leap; printf(please enter a year:); scanf(%d,&year); if (year%4=0)if (year%100=0) if (year%400=0) leap=1; /*闰年闰年*/ else leap=0; else leap=1; /*闰年闰年*
11、/ else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); #include void main() int year, leap; printf(please enter a year:); scanf(%d,&year); if(year%4!=0) leap=0; else if(year%100!=0) leap=1; else if(year%400=0) leap=1; else leap=0; if (leap) printf(%d i
12、s ,year); else printf(%d is not ,year); printf(a leap year.n);#include void main() int year, leap; printf(please enter a year:); scanf(%d,&year); if (year%4=0 & year%100!=0) | (year%400=0) leap=1; else leap=0; if (leap)printf(%d is ,year); elseprintf(%d is not ,year); printf(a leap year.n);适
13、当使用逻辑表达式会适当使用逻辑表达式会使程序精炼使程序精炼 15% s 300010% 3000 s 20008% 2000 s 10005% 1000 s 500 2% 500 s 250 250s 折扣折扣折扣折扣折扣没有折扣d)(1swpf#include void main ( ) int c,s; float p,w,d,f; printf(enter price,weight,distance:); scanf(%f,%f,%d,&p,&w,&s); if(s=3000) c=12; else c=s/250; switch(c) case 0:d=0;br
14、eak; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0); printf(freight=%10.2fn,f);5.5 主要解决两个分支为同一个变量赋值的问题。可使程序简洁。主要解决两个分支为同一个变量赋值的问题。可使程序简洁。?:条件运算符?:条件运算符例如:例如: if (ab) max=a; els
15、e max=b; max=(ab) ? a : b ; 条件表达式的求解顺序:条件表达式的求解顺序: 先求出表达式先求出表达式1的值,若非的值,若非0(真真),则求出表达式,则求出表达式2的值就是整个条的值就是整个条件表达式的值;否则,求出表达式件表达式的值;否则,求出表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值本章小结本章小结1.掌握各种运算符的概念和用法。算术表达式的值是一个数值,掌握各种运算符的概念和用法。算术表达式的值是一个数值,关系表达式和逻辑表达式的值是一个关系表达式和逻辑表达式的值是一个逻辑值逻辑值(“真真”或或“假假”)。)。C语言中没有逻辑型数据,约定在表示一
16、个逻辑语言中没有逻辑型数据,约定在表示一个逻辑值时,以值时,以1代表真,以代表真,以0代表假。在判断一个逻辑量的值时,代表假。在判断一个逻辑量的值时,以非以非0作为真,以作为真,以0作为假。逻辑量作为数值可参加数值运算。作为假。逻辑量作为数值可参加数值运算。2. 主要用主要用if语句实现语句实现选择结构选择结构,用,用switch语句实现语句实现多路分多路分支支选择结构。掌握选择结构。掌握if语句的三种形式。注意语句的三种形式。注意if与与else的配的配对规则,(对规则,(else总是和在它前面最近的未配对的总是和在它前面最近的未配对的if相配相配对)。为使程序清晰,应写成锯齿形状,即同一层次的对)。为使程序清晰,应写成锯齿形状,即同一层次的if和和else写在同一列。写在同一列。 本章小结本章小结3. 在用在用switch语句实现多路分支选择结构时,语句实现多路分支选择结构时,“case常量表达式常量表达式”只起语句标号作用。若只起语句标号作用。若switch后面的表达式的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度货运司机劳动合同模板(含绩效考核)
- 二零二五年度学校教师学生国际交流与合作聘用合同3篇
- 二零二五年度信息技术产品软件售后服务合同书模板2篇
- 2025年度个人法律咨询委托书范本4篇
- 二零二五年度厨房电气设备安装与维护承包协议4篇
- 2025版实习合同模板:实习期间解约与补偿3篇
- 二零二五版旧机动车交易车辆售后配件供应合同3篇
- 2025版实习期员工劳动合同-实习期间合同解除与续签3篇
- 珠海科技学院《贾平凹文学创作研究》2023-2024学年第一学期期末试卷
- 二零二五年度商业写字楼租赁合同样本
- 运动技能学习与控制课件第十一章运动技能的练习
- 虫洞书简全套8本
- 射频在疼痛治疗中的应用
- 四年级数学竖式计算100道文档
- “新零售”模式下生鲜电商的营销策略研究-以盒马鲜生为例
- 项痹病辨证施护
- 职业安全健康工作总结(2篇)
- 怀化市数字经济产业发展概况及未来投资可行性研究报告
- 07FD02 防空地下室电气设备安装
- 教师高中化学大单元教学培训心得体会
- 弹簧分离问题经典题目
评论
0/150
提交评论