




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教案首页授课日期年级、专业课题:第4章选择结构程序设计课型:讲授+上机目的要求:1、了解选择结构基本形式2、用if语句实现选择结构重点:1、选择结构禾1条件判断难点:1、if语句的使用教学方法:多媒体教学+上机课夕卜作业:课后分析:最常用的3种if语句形式:1.if(表达式)语句1(没有else子句)2oif(表达式)语句1eIse语句2(有else子句)3oif(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3IIIelseif(表达式m)语句meIse语句m+1(在else部分又嵌套了多层的if语句)说明:(1)整个if语句可写在多行上,也可写在一行上但都是一^个整体,属于同一个语句“语句1”…“语句m”是if中的内嵌语句内嵌语句也可以是一个if语句“语句1"…“语句m”可以是简单的语句,也可以是复合语句4.3o1关系运算符及其优先次序关系运算符:用来对两个数值进行比较的比较运算符C语言提供6种关系运算符:①V(小于)②〈二(小于或等于)③>(大于)④>二(大于或等于)⑤二二(等于)⑥!二(不等于)优先级相同(高)优先级相同4氐)关系、算术、赋值运算符的优先级c>a+b等效于c>(a+b)a>b二二c等效于(a>b)—ca二二b<c等效于a==(b<c)a=b>c等效于a=(b>c)4o3.2关系表达式关系表达式用关系运算符将两个数值或数值表达式连接起来的式子关系表达式的值是一个逻辑值,即“真”或“假”在C的逻辑运算中,以“1”代表"真”,以“0”代表“假”4o4逻辑运算符和逻辑表达式4.4.1逻辑运算符及其优先次序3种逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)&&和|I是双目(元)运算符!是一目(元)运算符逻辑表达式,用逻辑运算符将关系表达式或其他逻辑量连接起来的式子.判断年龄在13至17岁之内?age〉—13&&age〈二17判断年龄小于12或大于65?age(12||age>65ab!a!ba&&baIIb真真假假真真真假假真假真假真真假假真假假真真假假逻辑运算的真值表逻辑运算符的优先次序!T&&TII(!为三者中最高)与其他运算符的优先次序!(高)算术运算符关系运算符(低)&&和||赋值运算符4o4.2逻辑表达式逻辑表达式的值应该是逻辑量“真”或“假”,编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假二但在判断一个量是否为“真”时,以0代表“假二以非0代表“真,注意:将一个非零的数值认作为“真”(1)若a=4,则!a的值为0若a=4,b=5,则a&&b的值为1a和b值分别为4和5,贝UaIIb的值为1a和b值分别为4和5,则!aIIb的值为14&&0I|2的值为1修改后的逻辑运算真值表ab!a!ba&&baIIb非0非00011非。00101假非01001假01100判别某一年是否闰年,用逻辑表达式表示闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4=0&&year100!=0)|I(year%400==0)如果表达式值为1,则闰年;否则为非闰年4o4o3逻辑型变量这是C99所增加的一种数据类型,可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算.4.5条件运算符和条件表达式有一种if语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值如:if(a〉b)max二a;eIsemax=b;max=(a〉b)?a:b;条件表达式的一般形式为表达式1?表达式2:表达式3条件运算符的执行顺序:求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值条件运算符优先于赋值运算符条件运算符的结合方向为“自右至左”以下为合法的使用方法:a>b?(max=a):(max=b);a〉b?printf(u%d",a):printf("%d”,b);例4.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换#incIude(stdiooh)intmain(){charch;scanf("%c”,&ch);ch=(ch>='A'&&Z')?(ch+32):ch;printf("%c\n”,ch);return0;)4o6选择结构的嵌套在if语句中又包含一^个或多个if语句称为i千语句的嵌套一■般形式:if()if()语句1eIse语句2eIseif()语句3eIse语句4内嵌ifeIse总是与它上面最近的未配对的if配对在if语句中又包含一个或多个if语句称为if语句的嵌套if()语句1eIse语句2内嵌if{}限定了内嵌if范围例4.5有一函数:-1(x<0)y—*0(x=0)1(x>0)编一程序,输入一个x值,要求输出相应的y值.解题思路:用if语句检查x的值,根据x的值决定赋予y的值由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)的if语句来实现解题思路:方法1(1)先后用3个独立的if语句处理:输入x若x〈0,贝Iy=—1若x=0,贝Iy=0若x〉0,则y二1输出x和yscanf("%dv,&x);if(x<0)y=1;if(x==0)y=0;if(x>0)y=1;printf(”x=%d,y=%d\nn,x,y);59解题思路:方法2(2)用一个嵌套的if语句处理:输入x若x<0,则y=7否则若x=0,贝Iy二0否则y=1输出x和yscanf("%d",&x);if(x<0)y=—1;eIseif(x=0)y=0;eIsey=1;printf(”x=%d,y=%d\n",x,y);60解题思路:方法2(2)用一个嵌套的if语句处理:输入x若x<0,则y二一1否则否则y=1输出x和yscanf("%d",&x);if(x<0)y=-1;eIseif(x=0)y=0;eIsey=1;printf("x=%d,y=%d\n",x,y);scanf("%d",&x);if(x>=0)if(x>0)y=1;eIsey=0;eIsey=-1;printf(vx=%d,y=%d\n",x,y);提倡内嵌if放在eIse中用来对两个数值进行比较的比较运算符C语言提供6种关系运算符:①V(小于)②〈二(小于或等于)③>(大于)④>二(大于或等于)⑤二二(等于)⑥!二(不等于)优先级相同(高)优先级相同e氐)关系、算术、赋值运算符的优先级
c>a+bc>a+bc>a+b等效于c)(a+b)a>b==c等效于(a>b)==ca—b〈c等效于a-(b〈c)a=b>c等效于c>a+b等效于c)(a+b)a>b==c等效于(a>b)==ca—b〈c等效于a-(b〈c)a=b>c等效于a=(b>c)学生成绩分类85分以上为,A'等70〜84分为,B,等60~69分为,5等人口统计分类按年龄分为老、中、青、少、儿童62例4。6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70〜84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入.解题思路:判断出这是一个多分支选择问题根据百分制分数将学生成绩分为4个等级如果用if语句,至少要用3层嵌套的if,进行3次检查判断用switch语句进行一次检查即可得到结果#incIude〈stdio.h〉检查者签字:intmain(){chargrade;scanf(n%c”,&grade);printf("Yourscore:");switch(grade){case'A':printf(”85〜100\n");break;case'B':printf("70〜84\n");break;case1C:printf(,,60~69\nH);break;case'D':printf(60\nv);break;default:printf("enterdataerror!\n");}return0;)switch语句的作用是根据表达式的值,使流程跳转到不同的语句switch语句的一^般形式:switch(表达式){case常量1:语句1case常量2:语句2TOC\o"1-5"\h\z1।।।।।।।।case常量n:语句ndefault:语句n+1)整数类型(包括字符型)例4。7编写程序,用switch语句处理菜单命令.解题思路:在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个‘A'或'a,字符,就会执行A操作,输入一个‘B,或'b'字符,就会执行B操作,等等。#incIude<stdiooh>intmain(){voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch){case'a1:case'A':action1(a,b);break;case1b":case'B':action2(a,b);break;default:putchar('\a');}return0;)输入b或B调用action2函数,执行B操作voidaction2(intx,inty)printf("x*y=%d\n”,x*y)这是一个非常简单的示意程序实际应用中,所指定的操作可能比较复杂:A:输入全班学生各门课的成绩B:计算并输出每个学生各门课的平均成绩C:计算并输出各门课的全班平均成绩D:对全班学生的平均成绩由高到低排序并输出可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求4O8选择结构程序综合举例用变量leap代表是否闰年的信息。若闰年,令1(真),若是,则输出“闰年”信息参见教材图4.13#incIude〈stdio。h>intmain(){intyear,leap;printf("enteryear:");scanf("%dv,if(year%4-0)if(year%100==0)if(year%400==0)Ieap=1;eIseleap=0:eIseIeap=1;eIseIeap=0;leap=1;非闰年,leap=0.最后判断leap是否为&year);if(Ieap)printf%dis”,year);eIseprintf("%disnot”,year);printf("aIeapyear.\nv;return0;)标志变量与if(leap!=0)含义相同例4.9求方程的解。解题思路:处理以下各情况①a=O,不是二次方程有两个相等实根,有两个不等实根。,有两个共相复根.应当以p+qi和p-qi的形式输出复根其中,其中,p=一b/2a,q=(其中,p=其中,p=一b/2a,q=()/2a参见教材图4.1486#incIude〈stdio。h>#incIude<math.h>intmain()doubIea,b,c,disc,x1,x2,realpart,imagpart;scanf%lf,%lf”,&a,&b,&c);printf("Theequation”);if(fabs(a)<=1e-6)printf("isnotaquadratic\nH);实型不能用if(a=0)87eIse{disc=b*b-4*a*c;if(fabs(disc)<=1e-6)printf("hastwoequaIroots:%8。4f\n",-b/(2*a));eIse先算disc,以减少重复计算不能用if(disc=0)例4.10运输公司对用户计算运输费用。路程(skm)越远,每吨•千米运费越低.标准如下:s<250没有折扣250<5002%折扣500Ws<10005%折扣1000Ws<20008%折扣2000Ws<300010%折扣3000Ws15%折扣解题思路:设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d总运费千的计算公式为f=pXwXsX(1-d)折扣的变化规律(参见教材图4。15):折扣的“变化点”都是250的倍数在横轴上加一中坐标c,c的值为s/250c代表250的倍数当c<1时,表示s<250,无折扣1Wc<2时,表示250Ws<500,折扣d=2%2Wc<4时,d=5%;4Wc<8时,d=8%;8Wc〈12时,d=10%;cN12时,d=15%#incIude<stdiooh>intmain()(intc,s;fIoatp,w,d,f;printf("pleaseenterprice,weight,discount:");scanf(n%f,%f,%d",&p,&w,&s);if(s>=3000)c=12;eIsec=s/250;输入单价、重量、距离switch(c){case0:d=0;break;d=2;break;d=5;break;d=8;break;case9:case10:d=10;break;d=15;break;)f=p*w*s*(1—d/100);printf("freight=%10.2f\nv,f);return0;第4章选择结构程序设计4O1选择结构和条件判断举例:在现实生活中,需要进行判断和选择的情况是很多的如果你在家,我去拜访你如果考试不及格,要补考如果遇到红灯,要停车等待周末我们去郊游70岁以上的老年人,入公园免票都需要用到【选择】在现实生活中,需要进行判断和选择的情况是很多的,处理这些问题,关键在于进行条件判断,由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断。C语言有两种选择语句:if语句,实现两个分支的选择结构⑵switch语句,实现多分支的选择结构例4。1在例3。5的基础上对程序进行改进.题目要求是求一元二次方程的根。由键盘输入a,b,Co假设a,b,c的值任意,并不保证b*b-4ac>0.需要在程序中进行判别,如果b*b—4ac〉0,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。解题思路:输入a,b,c计算discdisc<0计算x1,x2输出无实根输出x1,x2假真程序incIude<stdiooh〉incIude<mathoh>intmain()(doubIea,b,c,disc,x1,x2,p,q;scanf(v%lf%lf%lfv,&a,&b,&c);disc=b*b-4*a*c;计算b2-4ac,disc的值变为一15f(disc〈0)printf("hasnotreaIroots'n");eIse{p=一b/(2.0*a);q=sqrt(disc)/(200*a);x1=p+q;x2=p-q;printf("realroots:\nx1=%7o2f\nx2=%7.2f\n",x1,x2);return0;}-15<0为真#incIude<stdio.h〉#incIude〈math。h>intmain()(doubIea,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lfv,&a,&b,&c);disc=b*b-4*a*c;计算b2—4ac,disc的值变为8if(disc<0)printf("hasnotreaIroots'n");eIse{p二一b/(2。0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(ureaIroots:\nx1=%7o2f\nx2=%7。2f\n”,x1,x2);}return0;)8<0为假p的值变为一1q的值变为0.71x1的值变为-0.29x2的值变为一1。71if(disc<0)printf("hasnotreaIroots'n");eIse{p--b/(2O0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p—q;printf(reaIroots:\nx1=%7o2f\nx2=%7.2f\n”,x1,x2);)return0;}选择结构,用if语句实现的if(disc<0)printf("hasnotreaIroots\n");{p=一b/(2O0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p—q;printf(reaIroots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险品安全员考试及答案
- 2025合同样本采购策略计划书模板
- 2025珠海房地产买卖代理合同书
- 《2025建筑材料设备采购合同》
- 2025智能家居代理商合同(合同版本)
- 诗歌中的时间与空间考试题
- 创客教育课程设计考试题
- 分公司经理合同(标准版)
- 传感器与检测技术原理及应用考试题
- 车抵货款合同(标准版)
- 《国庆假期安全教育》课件
- 2025年辅警招聘考试试题库及完整答案(历年真题)
- 2025湖北宜昌市不动产交易和登记中心招聘编外聘用人员17人考试参考题库及答案解析
- 2025下半年四川内江市隆昌诚信农业产业化融资担保有限责任公司招聘4人考试参考题库及答案解析
- 疼痛介入治疗的护理
- DB44-T 2542-2024 自然教育基地建设规范
- 《拒绝努力羞耻症》学习动力主题班会课件
- 2025AICon全球人工智能开发与应用大会-上海站:昇腾推理技术的优化实践
- 《春江花月夜》课件+2025-2026学年统编版高二语文选择性必修上册
- 广州中侨置业投资控股集团有限公司债权资产评估报告
- 第2课 信息技术伴成长教学设计-2025-2026学年小学信息技术(信息科技)第八册(2019)电子工业版(安徽)
评论
0/150
提交评论