版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CH5选择结构的程序设计☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆CH4作业:书(P80)34568911(1214学过switch以后做)§4.1关系运算符与关系表达式一、关系运算符2.关系运算符:3.优先级:算术运算符与关系运算符的优先级哪个高?与赋值运算符相比呢?即比较运算a>3若a为5,则成立,结果为“真”否则不成立,结果为“假”<、<=、>=、>、==、!=高低?4.结合率:左结合1.关系运算:算术运算符高于关系运算符关系运算符高于赋值运算符§4.1关系运算符与关系表达式用关系运算符将两个表达式(算术、字符等)连接起来的有意义的式子如: x!=0 65=='A' a*a+b*b<y*y关系表达式的值: 真 假 非0 0 二、关系表达式设a=3,b=2,c=1,给出以下表达式的值:
a>b a>b==c b+c<a d=a>b a>b!=b运算结果用1表示"真"运算时将非0判断为"真"§4.2逻辑运算符与逻辑表达式一、逻辑运算符3.优先级与结合率1.逻辑运算2.逻辑运算符对逻辑值的运算与、或、非、异或……与、或、非&&||!&& 真 假真 真 假假 假 假|| 真 假真 真 真假 真 假&&||!!(非)算术运算符关系运算符&&和||赋值运算符例如: a>b&&b>c相当于(a>b)&&(b>c) a!=b&&c相当于(a!=b)&&(c!=0) (!a)||(a>b)相当于
!a||a>b
5>3&&2||!8<4-2
相当于((5>3)&&2)||((!8)<(4-2))高低是用逻辑运算符将表达式连接起来的有意义的式子如果在执行某个运算后整个表达式的值已经能够确定,则其他运算符不再执行a&&b&&c若a为0a||b||c
当a非0时§4.2逻辑运算符与逻辑表达式二、逻辑表达式例如: a>b&&b>c (a>b)&&(b>c) a!=b&&c (a!=b)&&(c!=0) (!a)||(a>b) !a||a>b
5>3&&2||!8<4-2设a=3,b=2,c=1真真真真判断某年是否闰年?闰年:年份能被4整除,但不能被100整除;或能被400整除year%4==0&&year%100!=0||year%400==0由数学式写出C语句表达式:
|x|>2 x1+a并yb的定义域(x>=2||x<=1)&&x!=0(x-1)*(x-2)>=0&&x!=0
(x-1)(x-2)f(x)= xx>2||x<-2abs(x)>2x<=1+a&&y<=bif(a>0)printf("Aispositive.\n");P真假AB§4.3if语句一、if语句的格式1、条件执行if(P)A条件逻辑表达式语句2、分支选择if(P)AelseB条件逻辑表达式语句A语句Bif(x>y){ z=y; y=x; x=z;}if(a>0)printf("Aispositive.\n");elseprintf("Aisnotpositive.\n");A或B都只能是单一语句,可以是复合语句else部分不能独立存在,它必定是if语句的一部分分析:①输入x②判断x值是否为0③根据x值,计算y值④输出y值问题:如何实现②?③涉及选择不同的计算公式,如何解决?#include<stdio.h>#include<math.h>voidmain(){ floatx,y;
printf("Enterx:");
scanf("%f",&x); if(x!=0.0) y=sin(x)/x; else y=1;
printf("x=%5.2f\ty=%7.4f\n",x,y);}例4.1计算函数值:sin(x)/x x=01 x=0y=输入xx为0?
y=1y=sin(x)/x输出y真假 if(x!=0.0) y=sin(x)/x; else y=1; if(x!=0.0) y=sin(x)/x; else y=1; if(x!=0.0) y=sin(x)/x; else y=1;关系运算选择结构#include<stdio.h>void
main(){floatx,y;
printf("enterx:");
scanf("%f",&x);y=1;if(x!=0)y=(x*5+1)/x;
printf("x=%5.1fy=%5.1f\n",x,y);}例5.2对于任意x,求函数值y=f(x)x·5+1x1y=x=0x=0#include<stdio.h>void
main(){floatx,y;
printf("enterx:");
scanf("%f",&x);if(x==0)y=1;elsey=(x*5+1)/x;
printf("x=%5.1fy=%5.1f\n",x,y);}输入xx等于0?是 否y=1y=(x*5+1)/x输出结果例4.3输入一个整数a,判断它是偶数还是奇数?#include<stdio.h>voidmain(){ inta;
printf("inputanumber:");
scanf("%d",&a); if(a%2==0)
printf("%disaneven\n",a); else
printf("%disanodd\n",a);}如何判断?%例4.4任给a,b,c三个数,按从大到小的顺序输出。
abt85
8
5
8分析:1)对于任意两个数a,b:若a>b,则输出a,b否则输出b,a2)对于三个数,有6中可能:a>b>c a>c>b b>a>c b>c>ac>a>b c>b>a3)使用交换法:①若a<b,则交换a和b②若a<c,则交换a和c
结果a最大③若b<c,则交换b和c
结果a>b>c交换方法:设a=8,b=5a=b;b=a;结果a=5,b=5t=a;a=b;b=t;t=aa=bb=t例4.4任给a,b,c三个数,按从大到小的顺序输出。#include<stdio.h>void
main(){ inta,b,c,t;
printf("inputa,b,c:");
scanf("%d,%d,%d",&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("%d%d%d\n",a,b,c);}输入a、b、c是a<b?否
a与b
交换a<c?是否
a与c
交换是b<c?否
c与b
交换输出a、b、c§4.3if语句一、if语句的格式3、多分支选择(elseif语句)if(P1)S1elseif(P2)S2┆elseif(Pn)SnelseSn+1
例4.5:评价学生成绩(百分制)score≥90 优秀score≥80 良好score≥70 中score≥60 及格score<60 不及格
P1真假S1P2
真假
S2
Pn
真假
SnSn+1例4.5:评价学生的成绩(百分制)score≥90 优秀score≥80 良好score≥70 中score≥60 及格score<60 不及格
P1真假S1P2
真假
S2
Pn
真假
SnSn+1#include<stdio.h>voidmain(){intscore;
printf("inputascore:");
scanf("%d",&score);if(score>=90) printf("优秀\n");elseif(score>=80)printf("良好\n");elseif(score>=70)printf("中\n");elseif(score>=60)printf("及格\n");elseprintf("不及格\n");}例4.6设平面上一点M,其坐标为(x,y),若M落在圆心在坐标原点的单位圆上,则置key=1,落在圆外置key=2,落在圆内置key=0。#include<math.h>#include<stdio.h>void
main(){ floatx,y,r; intkey;
printf("inputx,y:");
scanf("%f,%f",&x,&y); r=sqrt(x*x+y*y); if(r>1) key=2; elseif(r==1) key=1; else key=0;
printf("(%.1f,%.1f):%d\n",x,y,key);}分析:①求点M到原点的距离r②比较r和单位圆半径的大小输入x、yr=x2+y2r>1?
是否
r=1?key=2是否
key=1key=0输出keyxy01M(x,y)rif(P1) if(P2)A elseBelse if(P3)C elseDP1真假P2P3真真假假ABCD§4.3if语句二、if语句的嵌套例4.7求平面上一点M(x,y)所在的相限。#include<stdio.h>void
main(){ floatx,y;
printf("inputx,y:");
scanf("%f,%f",&x,&y); if(x>0) if(y>0)printf("在第一相限\n"); elseprintf("在第四相限\n"); else if(y>0)printf("在第二相限\n"); elseprintf("在第三相限\n");}if(P1) if(P2)A elseBelse if(P3)C elseD§4.3if语句二、if语句的嵌套if(P1)Aelse if(P3)C elseDif(P1) if(P2)A elseBelseCif(P1) if(P2)Aelse if(P3)C elseDif(P1) if(P2)AelseC其它形式P1?P2?else应与最近的if匹配if(P1){ if(P2)A}elseCif(P1){if(P2)A}else if(P3)C elseD例4.8判定某年是否闰年。闰年:年份year能能被400整除或被4整除,但不能被100整除;#include<stdio.h>void
main(){intyear,leap;
printf("Whichyear?");
scanf("%d",&year);if(year%400==0)leap=1;else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0;if(leap==1)
printf("%d年是闰年\n",year);else
printf("%d年不是闰年\n",year);}例4.8判定某年是否闰年。#include<stdio.h>void
main(){ intyear,leap;
printf("Whichyear?");
scanf("%d",&year); if(year%400==0)leap=1; else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0; if(leap==0)
printf("%d年是闰年\n",year); else
printf("%d年不是闰年\n",year);}
if(year%400==0)leap=1; else if(year%4==0) if(year%100==0) leap=0; elseleap=1; elseleap=0;if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;闰年:年份year能被4整除,但不能被100整除;或能被400整除形式:e1?e2:e3执行过程:①计算e1②若e1值为真,计算并返回e2的值;否则,计算并返回e3的值如: y=x==0?1:sin(x)/x等价于:if(x==0)y=1; elsey=sin(x)/x;结合方向:右结合优先级:高于赋值运算,低于算术、关系、逻辑运算§4.4条件运算符与条件表达式右结合:a>b?a:b=c>b?c:b相当于
a>b?a:(b=c>b?c:b)例4.9读程序,分析程序的功能找出a、b两个数中的最大数#include<stdio.h>voidmain(){ inta,b,max;
printf("Entertwonumber:");
scanf("%d,%d",&a,&b); max=a>b?a:b;
printf("Themaxis%d\n",max);}printf("Themaxis%d\n",a>b?a:b);printf("Themaxis%d\n",max=a>b?a:b);#include<stdio.h>void
main(){ charch;
printf(“Pleaseinputaletter(a-zorA-Z):”);
ch=getchar();
ch=(ch>='A'&&ch<='Z')?ch+32:ch;
putchar(ch);
putchar('\n');}例4.10读程序,分析程序的功能ch=(ch>=65&&ch<=90)?ch+32:ch;结论:任意输入一个字符,如果是大写字母,将其转换成小写字母ch
为大写字母?ch=(ch>='A'&&ch<='Z')?ch+('a'-'A'):ch;亦称多分支选择语句。与if语句相比,程序结构清晰、易读。一、语句格式其中:表达式P一般为整型或字符型(整型)常量Ci的类型必须与表达式P
一致1.计算表达式P的值2.若与常量Ci
的值一致,则从语句Si
开始执行,直到遇到break
语句或switch语句的“}”3.若与任何常量的值均不一致,则从default开始执行;若无default语句,则直接执行“}”后的程序注意:常量Ci
仅起标号作用常量Ci
的值必须惟一的,没有先后次序多个case语句可共用一组执行语句
default可以省略,也可以出现在其他位置二、执行过程§4.5switch语句switch(P){ caseC1:S1 caseC2:S2 …. caseCn:Sn [default:Sn+1]}例4.11用switch语句重做例4.5(评价学生成绩)#include<stdio.h>void
main(){intscore;
printf("inputascore:");
scanf("%d",&score);
switch(score/10){case10:case9:printf("优\n");break;case8:printf("良\n");break;case7:printf("中\n");break;case6:printf("及格\n");break;default:printf("不及格\n");}}#include<stdio.h>main(){intscore;
printf("inputascore:");
scanf("%d",&score);
if(score>=90)printf("优");elseif(score>=80)printf("良");elseif(score>=70)printf("中");elseif(score>=60)printf("及格");elseprintf("不及格\n");}例4.12运输公司对用户计算运费。收费标准随距离s变化如下:
s<250km 不折扣
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 普通话训练与应用学习通超星期末考试答案章节答案2024年
- 学前儿童心理卫生与辅导学习通超星期末考试答案章节答案2024年
- 公共英语思政示范课程学习通超星期末考试答案章节答案2024年
- 中国劳动关系学院《社会调查研究方法》2021-2022学年第一学期期末试卷
- 《员工激励学员版》课件
- 中国劳动关系学院《劳动法与社会保障法》2023-2024学年期末试卷
- 上岗培训学习反思
- 上市药品安全性监测
- 中国矿业大学《运动训练学》2022-2023学年第一学期期末试卷
- 《元件保护概述》课件
- GB 12955-2024防火门
- 集装箱购销协议合同范本示例
- 求职面试技巧培训
- 室内装修施工安全方案
- 直播电商代运营服务协议(GMV计费模式)
- 工程询价合同模板
- 事业单位招聘《综合基础知识》考试试题及答案
- 2024年中国瓦楞包装纸箱市场调查研究报告
- 无锡风机吊装施工方案
- 第九章 职业健康安全与环境管理课件
- 2024年保安员证考试题库及答案(共260题)
评论
0/150
提交评论