版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
选择结构的作用是:检查人们指定的条件是否满足,决定在事先给定的两种操作中选定执行其中一种操作要实现选择结构,关键是判定所给的条件是否满足第4章选择结构程序设计P894.1条件判断4.2用if语句实现选择结构4.3利用switch语句实现多分支选择结构4.4程序综合举例4.5提高部分第4章选择结构程序设计P894.1条件判断4.1.1条件判断的含义4.1.2关系运算符和关系表达式4.1.3逻辑运算符和逻辑表达式P894.1.1条件判断的含义P89在现实生活中,需要进行判断和选择的情况是很多的如果你在家,我去拜访你如果考试不及格,要补考如果遇到红灯,要停车等待周末我们去郊游70岁以上的老年人,入公园免票4.1.1条件判断的含义P89在现实生活中,需要进行判断和选择的情况是很多的条件判断的结果是一个逻辑值:“是”或“否”在计算机语言中用“真”和“假”来表示“是”或“否”4.1.1条件判断的含义P89用选择结构检查所指定的条件是否满足,并根据判断的结果决定执行哪种操作。如:if(x>0)printf(”%d”,x);elseprintf(”%d”,-x);
当x为正时,输出x的值,否则输出-x4.1.2关系运算符和关系表达式“条件”在程序中用一个表达式表示x>0age>=70a+b>cb*b-4*a*c>0’a’<’v’P90关系运算符4.1.2关系运算符和关系表达式“条件”在程序中用一个表达式表示x>0age>=70a+b>cb*b-4*a*c>0’a’<’v’P90关系表达式4.1.2关系运算符和关系表达式P901.关系运算符及其优先次序C语言提供6种关系运算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)
⑤==(等于)⑥!=(不等于)优先级相同(高)优先级相同(低)4.1.2关系运算符和关系表达式P904.1.2关系运算符和关系表达式P90关系、算术、赋值运算符的优先级算术运算符(高)赋值运算符(低)关系运算符4.1.2关系运算符和关系表达式P90c>a+b 等效于c>(a+b)a>b==c 等效于(a>b)==ca==b<c 等效于a==(b<c)a=b>c 等效于a=(b>c)4.1.2关系运算符和关系表达式P902.关系表达式用关系运算符将两个数值或数值表达式连接起来的式子关系表达式的值是一个逻辑值,即“真”或“假”在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”4.1.2关系运算符和关系表达式P902.关系表达式当a=3,b=2,c=1时a>b的值为“真”,表达式值为1(a>b)==c的值为“真”,表达式值为1b+c>a的值为“假”,表达式值为04.1.3逻辑运算符和逻辑表达式有时判断的条件是一个复合的条件:是中国公民,且在18岁以上5门课都及格70岁以上的老人或10岁以下儿童P914.1.3逻辑运算符和逻辑表达式P911.逻辑运算符及其优先次序3种逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)&&和||是双目(元)运算符!是一目(元)运算符4.1.3逻辑运算符和逻辑表达式P91ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假逻辑运算的真值表4.1.3逻辑运算符和逻辑表达式P91逻辑运算符的优先次序!→&&→||(!为三者中最高)与其他运算符的优先次序!(高)算术运算符关系运算符&&和||赋值运算符(低)4.1.3逻辑运算符和逻辑表达式P91(a>b)&&(x>y)可写成a>b&&x>y(a==b)||(x==y)可写成a==b||x==y(!a)||(a>b)可写成!a||a>b4.1.3逻辑运算符和逻辑表达式P912.逻辑表达式用逻辑运算符将关系表达式或其他逻辑量连接起来的式子4.1.3逻辑运算符和逻辑表达式P91逻辑表达式的值应该是逻辑量“真”或“假”编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假”但在判断一个量是否为“真”时以0代表“假”,以非0代表“真”注意:将一个非零的数值认作为“真”4.1.3逻辑运算符和逻辑表达式P91(1)若a=4,则!a的值为0(2)若a=4,b=5,则a&&b的值为1(3)a和b值分别为4和5,则a||b的值为1(4)a和b值分别为4和5,则!a||b的值为1(5)4&&0||2的值为14.1.3逻辑运算符和逻辑表达式P91修改后的逻辑运算真值表ab!a!ba&&ba||b非0非00011非000101假非01001假011004.1.3逻辑运算符和逻辑表达式P91判别某一年是否闰年,用逻辑表达式表示闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4==0&&year100!=0)||year%400==0如果表达式值为1,则闰年;否则为非闰年4.2用if语句实现选择结构4.2.1用if语句实现选择结构举例4.2.2if语句的一般形式4.2.3if语句的使用说明4.2.4使用嵌套的if语句实现多层判断P954.2.1用if语句实现选择结构举例
例4.1输入两个学生a和b的成绩,输出其中高的成绩。P95解题思路:设定变量max,将高的成绩放在其中如果a大于或等于b,把a的值赋给max
如果b大于a,把b的值赋给max
输出max4.2.1用if语句实现选择结构举例P95#include<stdio.h>voidmain(){ floata,b,max; printf("pleaseenteraandb:"); scanf("%f,%f",&a,&b);
if(a>=b)max=a;
if(b>a)max=b; printf("max=%6.2f\n",max);}max=a真假abmax=b真假b>apleaseenteraandb:67.5,95.5↙max=95.504.2.1用if语句实现选择结构举例P95#include<stdio.h>voidmain(){ floata,b,max; printf("pleaseenteraandb:"); scanf("%f,%f",&a,&b);
if(a>=b)max=a;
if(b>a)max=b; printf("max=%6.2f\n",max);}pleaseenteraandb:67.5,95.5↙max=95.50if(a>=b)max=a;elsemax=b;max=a真假abmax=b
例4.2输入3个成绩a,b,c,要求按由高到低的顺序输出。解题思路:可以先用伪代码写出算法:ifa<b,a和b对换
(a是a、b中的大者)ifa<c,a和c对换
(a是三者中最大者)ifb<c,b和c对换
(b是三者中次大者)输出a,b,c的值#include<stdio.h>voidmain(){floata,b,c,t;printf("pleaseentera,b,c:");scanf("%f,%f,%f",&a,&b,&c);
if(a<b){t=a;a=b;b=t;}
if(a<c){t=a;a=c;c=t;}
if(b<c){t=b;b=c;c=t;}printf("%6.2f,%6.2f,%6.2f\n",a,b,c);}实现a和b的互换实现a和c的互换实现b和c的互换pleaseentera,b,c:73.5,82.5,99↙99.00,82.50,73.504.2.2if语句的一般形式P971.if(表达式)语句if(x>y)printf(”%d”,x);语句非0(真)表达式0(假)4.2.2if语句的一般形式P972.if(表达式)语句1
else语句2if(x>y)printf(”%d”,x);elseprintf(”%d”,y);语句2非0(真)表达式0(假)语句14.2.3if语句的使用说明P971.if(表达式)语句2.if(表达式)语句1
else语句2关系表达式逻辑表达式if(a==b&&x==y)printf(”a=b,x=y”);4.2.3if语句的使用说明P971.if(表达式)语句2.if(表达式)语句1
else语句2关系表达式逻辑表达式if(0)printf(”O.K.”);数值表达式4.2.3if语句的使用说明P971.if(表达式)语句2.if(表达式)语句1
else语句2关系表达式逻辑表达式if(x>0)printf(”%f”,x);elseprintf(”%f”,-x);数值表达式不能丢4.2.3if语句的使用说明P971.if(表达式)语句2.if(表达式)语句1
else语句2关系表达式逻辑表达式if(x>0)printf(”%f”,x);elseprintf(”%f”,-x);数值表达式配对4.2.3if语句的使用说明P971.if(表达式)语句2.if(表达式)语句1
else语句2可以是:简单的语句复合语句另一个if语句等4.2.3if语句的使用说明P97
例4.3给出三角形的三个边长,求三角形的面积。解题思路:
构成三角形的必要条件是两边之和大于第三边,因此在计算三角形面积之前应当进行该条件的判断#include<stdio.h>#include<math.h>voidmain(){doublea,b,c,s,area;printf("pleaseentera,b,c:");scanf("%lf,%lf,%lf",&a,&b,&c);if(a+b>c&&b+c>a&&c+a>b)
{s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%6.2f\n",area);
}
elseprintf("Itisnotatrilateral.\n");}复合语句pleaseentera,b,c:2,3,4↙area=2.90pleaseentera,b,c:2,3,6↙Itisnotatrilateral.4.2.4使用嵌套的if语句实现多层判断有的选择结构中又包含一个或多个选择结构,这称为选择结构的嵌套if语句中可以又包括另一个if语句,这就是if语句的嵌套可以用if语句的嵌套实现嵌套的选择结构P994.2.4使用嵌套的if语句实现多层判断一般形式:if()if()语句1else语句2elseif()语句3else语句4P99内嵌if4.2.4使用嵌套的if语句实现多层判断
例4.4为促销,对购买货物多的顾客有优惠:凡买50件以上的优惠5%,买100件以上的优惠7.5%,买300件以上的优惠10%,买500件以上的优惠15%。输入购买的数量和单价,输出应付货款。P994.2.4使用嵌套的if语句实现多层判断解题思路:关键是写出判断货物折扣的选择结构应付货款=件数*单价*(1-优惠折扣)P994.2.4使用嵌套的if语句实现多层判断P99折扣15%真假件数500件数300真假折扣10%件数100真假折扣7.5%件数50真假折扣5%无折扣#include<stdio.h>#include<math.h>voidmain(){intnumber;doublecost,price,total;printf(“enternumberandprice:");scanf("%d,%lf",&number,&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;
elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2f\n”,total);}enternumberandprice:512,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;
elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2f\n”,total);}enternumberandprice:350,821.5
↙Total=258772.50
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;
elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2f\n”,total);}enternumberandprice:150,821.5
↙Total=113983.13
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;
elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2f\n”,total);}enternumberandprice:20,821.5
↙Total=16430.00else总是与它上面最近的未配对的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)cost=0.05;
elsecost=0;total=number*price*(1-cost);printf(“Total=%10.2f\n”,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;
elsecost=0;4.3利用switch语句实现多分支选择结构P103switch语句用来实现多分支选择结构学生成绩分类85分以上为’A’等70~84分为’B’等60~69分为’C’等……人口统计分类
按年龄分为老、中、青、少、儿童4.3利用switch语句实现多分支选择结构P103switch语句的一般形式:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2
┇
┇
┇case常量表达式n:语句ndefault:语句n+1}不能相同4.3利用switch语句实现多分支选择结构P103switch(grade){case’A’:printf(”85~100\n”);case’B’:printf(”70~84\n”);case’C’:printf(”60~69\n”);case’D’:printf(”<60\n”);default:printf(”error\n”);}若grade的值为“A”85~10070~8460~69<60errorbreak;break;break;break;85~1004.3利用switch语句实现多分支选择结构P103grade输出85~100‘A’‘B’输出70~84输出60~69‘C’输出<60输出error‘D’其他4.4程序综合举例P105例4.6写程序,判断某一年是否为闰年。用变量leap代表是否闰年的信息若闰年,令leap=1;非闰年,leap=0最后判断leap是否为1(真),若是,则输出“闰年”信息参见教材图4.11#include<stdio.h>voidmain() {intyear,leap;printf("enteryear:");scanf("%d",&year);if(year%4==0)if(year%100==0) if(year%400==0)leap=1;elseleap=0; elseleap=1;elseleap=0;if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear.\n");}标志变量与if(leap!=0)含义相同#include<stdio.h>voidmain() {intyear,leap;printf("enteryear:");scanf("%d",&year);if(year%4==0)if(year%100==0) if(year%400==0)leap=1;elseleap=0; elseleap=1;elseleap=0;if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear.\n");}if(year%4!=0)leap=0;elseif(year%100!=0)leap=1;elseif(year%400!=0)leap=0;else
leap=1;#include<stdio.h>voidmain() {intyear,leap;printf("enteryear:");scanf("%d",&year);if(year%4==0)if(year%100==0) if(year%400==0)leap=1;elseleap=0; elseleap=1;elseleap=0;if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear.\n");}if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;enteryear:2008↙2008isaleapyear.enteryear:2100↙2100isnotaleapyear.例4.6运输公司对用户计算运费。运输距离越远,单位运费越低。标准如下:s<250没有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d总运费f的计算公式为f=p×w×s×(1-d)折扣的变化规律(参见教材图4.12):折扣的“变化点”都是250的倍数在横轴上加一种坐标c,c的值为s/250c代表250的倍数当c<1时,表示s<250,无折扣1≤c<2时,表示250≤s<500,折扣d=2%2≤c<4时,d=5%;4≤c<8时,d=8%;8≤c<12时,d=10%;c≥12时,d=15%#include<stdio.h>voidmain(){intc,s;doublep,w,d,f;printf("请输入单价、重量和距离:");scanf("%lf,%lf,%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土石方爆破施工专项方案
- 深基坑开挖支护施工方案
- 广告印刷物料采购项目实施方案
- 2026年甲基纤维素行业技术革新分析报告
- 工业废气治理培训教材
- 2026年苯二胺行业创新应用案例分析报告
- 2027年鹤壁职业技术学院高职单招职业技能考试模拟试卷及答案详解(有一套)
- 2026年能源行业报告及可再生能源技术创新动态
- 2027年黑恒职业学院单招职业技能考试模拟试卷含答案详解【巩固】
- 2027年黑龙江佳木斯三江职业学院高职单招职业技能考试题库(完整版)附答案详解
- 2026年中级注册安全工程师《其他安全实务》能力检测及参考答案详解(模拟题)
- 叉车充电安全须知培训课件
- 医院投诉处理流程标准化手册
- 2026年护理安全警示教育与质量提升实践
- 租赁车调度管理办法
- 智联招聘测评题库及答案
- 中药新药研发管理制度
- 2024年无锡市宜兴市农村订单定向医学生定向招聘考试真题
- DLWD-CSMK故障考核模块技术方案
- (行业)常用表面处理工艺详解(行业讲座教学培训课件)
- 星际航行概论钱学森著2008
评论
0/150
提交评论