收藏 分享(赏)

北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt

上传人:kpmy5893 文档编号:7862906 上传时间:2019-05-28 格式:PPT 页数:50 大小:356.50KB
下载 相关 举报
北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt_第1页
第1页 / 共50页
北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt_第2页
第2页 / 共50页
北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt_第3页
第3页 / 共50页
北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt_第4页
第4页 / 共50页
北京航空航天大学C语言c第三讲(第五章) 选择结构程序设计.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、#include “stdafx.h“ #include int main() float c,F;c =5/9*(F-32);printf(“Please F temperature:“);scanf(“%f“, ,#include “stdafx.h“ #include int main() float c,F;c =5/9*(F-32);printf(“Please F temperature:“);scanf(“%f“, ,Exercise 4.9,已知:华氏温度F 求: 摄氏温度CC=5/9*(F-32),作业要求: 建立一个根目录,以学号_unit01为名,每道小题再建立一个子目录

2、,以习题编号为名;如:建立39151101_unit01目录,再建立ex5_4子目录,在子目录中保留习题的原文件(.c或.cpp)、目标文件(.obj)和执行文件(.exe) ; 2. 将根目录打包,生成*.rar(或*.arj)文件,发送到wanglu_ 3,在根目录下写出实验中的问题和实验总结写到readme.txt文件, 助教将根据其中的问题给与答复。 4,收作业时间截止到周日晚上12点。,如: 39151101_unit01 39151101_unit01.arj|l-l-l-l-l ex5_4 ex5_5 ex5_8 ex5_10 readme.txt|l-l-lex5_5.cpp

3、ex5_5.obj ex5_5.exe,工作空间(Workspace)工程(Project)1 工程2 工程n(C源程序)源程序1 源程序2 源程序n(.cpp或.c)只有一个main(),VC+6.0 工作空间结构:,如何去掉stdafx.h,单击Workspace名称:1Project(s) 单击主菜单Project-settings 选择C/C+-Category:Precompiled Headers-not using precompiled headers 删除 #include 和 stdafx.cpp、stdafx.h 以上操作后不产生.pch文件,好习惯,1)一个好的习惯是把

4、编程中的所有警告都排除掉,让程序一点警告都没有。2)当程序进行编译时,可能会出现一大堆的错误,这时应该先找第一条错误,解决后立刻编译,如发现还有问题,则继续解决第一条错误,再编译,第五章 选择结构程序设计,教 学 目 标,掌握关系运算式和逻辑运算式 掌握if和if- else语句的使用 if else 的嵌套使用 掌握switch语句的使用 掌握简单的上机操作,有效输入: 1,每条边的值0 2,任意两边之和第三边,#include #include void main() float a,b,c,s,area;printf(“input a,b,cn“); scanf(“%f,%f,%f“,

5、,例:求三角形面积,要求考虑有效输入。,变量说明,头文件,输入或赋值语句,计算部分,输出语句,主函数,输出语句,if (关系表达式) 语句1 else 语句2,5.1 关系运算符和关系表达式,1,关系运算实际上是两个量的比较运算,比较的结果只有两种可能:真、假 例如: 求 a 3 的运算结果 ? 当a=5时,比较的结果为真, 当a=1时,结果为假。 2,六种关系运算符 ,=, =, !=3,优先级 ,= 为同一级别,= 和!= 为同一级别. 在同一级别中,采取由左至右的结合方向.,算术运算符 - 关系运算符 - 赋值运算符 4,关系表达式用关系运算符将两个表达式连接起来叫关系表达式。 例:关系

6、运算的优先级举例ca+b 等效于 c(a+b) ab!=c 等效于 (ab)!=ca=bc 等效于 a = (bc),合法的关系表达式:ab a+bb+c (a=3)(b=5) (a=3)(b=5)ab)(b=0的值为真(1)。,思考题:求以下关系运算的结果, 若a=3,b=2,c=1,则: ab ab =c b+cb f=abc,值为1 值为真(即1) 值为0 值为 值为,5.2 逻辑运算符和逻辑表达式,逻辑运算-产生真假值的运算 & 逻辑与 | 逻辑或 ! 逻辑非 “&”和“|”是双目运算符,它要求两个运算量。 如:(ab) & (xy) (ab)|(xy) “!”是一元运算符,也叫单目运

7、算符,只要求一个运算量。 如:!ab,逻辑运算符,逻辑运算 a & b a,b同时为真,则表达式为真 a | b a,b只要有一个为真,表达式为真 !a a为真,则表达式为假 真值表,例如:c=da+b 等效于 c=(d(a+b)c=da+b&ab c=(d(a+b)&(ab),逻辑运算符的优先级 ! & | 逻辑运算符 “&” 和 “|” 低于关系运算符, “!”高于算术运算符 ab & xy 相当于: (ab) & (xy) a=b|x=y 相当于: (a=b) | (x=y) !a | ab 相当于: (!a ) | (ab),逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的表达式。

8、在C语言中,当判断一个量的真假时,一切非数均被当成真来处理。 例如: 若a=4,!a的值为 若a=4, b=5, 则a & ba | b!a | b4 & 0|2,逻辑运算的结果是或,非0即1,参加逻辑运算的量可以是和非数。 例:区分下面的表达式中算术运算量,关系运算量和逻辑运算量。注意:对于一个变量, 做算术运算时,关心的是它的实际数值 做逻辑判断时,关心的是0还是非0,5 3 & 2 | 8 4 - !0,例:判断某一年是否是闰年,满足下列条件之一:能被4整除,但不能被100整除;能被400整除。用year表示年份,判断闰年的逻辑表达式为:(year%4=0 & year%100 != 0

9、)|(year % 400 =0)如果给year输入一个的值,使上面的表达式的值为时,则year所代表的年份就是闰年。,课堂练习 1. 判断一个点是否落入圆形中 2. 求落入阴影部分的任意一点(小园的半径为1.),x*x+y*y=100,(x-2)*(x-2)+(y-2)*(y-2)=1)| (x-2)*(x-2)+(y+2)*(y+2)=1)| (x+2)*(x+2)+(y-2)*(y-2)=1)| (x+2)*(x+2)+(y+2)*(y+2)=1),: 写出逻辑表达式。,X,Y,(x,y),5.3 if 语句,if 用来判断给定的条件的真假, 并决定执行哪一种操作。 if 语句的三种形式

10、 1. if (表达式) 语句 条件满足时执行表达式后面的语句,然后继续执行以下的语句。 条件不满足时,越过if表达式后面的语句,往下执行. 例如:如果输入的是正数,则打印出来。if (x0) printf(“%d”,x);,C,Y,N,A,B,条件满足时执行语句A,然后继续执行if以下的语句。 条件不满足时,执行语句B,然后继续执行if以下的语句。例如:输出两个数中较大的一个if (xy) printf(“%d”,x);else printf(“%d”,y);,2. if (表达式) 语句A else 语句B,3. if (表达式1) 语句1else if (表达式2) 语句2else if

11、 (表达式3) 语句3else if (表达式4) 语句4else 语句5,例:根据消费量, 计算优惠率。 商场促销, 购物500元以上,8折 购物300元以上,85折 购物100元以上,9折 购物50元以上,95折 购物50元以下,不打折,分析:设: 商品价值 money折扣率 cost实际花费 priceprice=money*cost,if (money=500) cost=0.8; else if (money=300) cost=0.85; else if (money=100) cost=0.9 else if (money=50) cost=0.95; else cost=1.0

12、; price=money*cost;,另外一种写法(枚举条件):if (money=500) cost=0.8; if ( (money=300) ) cost=0.85; if ( (money=100) ) cost=0.9; if ( (money=50) ) cost=0.95; if ( money50 ) cost=1.0;,cost=1.0;,else cost=1.0;,说明: (1)表达式是指关系表达式或逻辑表达式,条件满足指的是表达式的值为真,即表达式的值是一个非值。 例如: if (3) printf(“O.K”); 输出O.K(永真) if (a) printf(“%

13、d”,a); 输出97 (永真) if (0) printf(“false”); 不执行printf语句(永假),if (表达式) 语句1 else 语句2,(2)if的条件满足后执行的语句并非指单一的一条语句,可以是多个语句,只要用 括起即可。,if ( ( a+bc) ,例:求三角形面积。, 复合语句,说明:,缩排格式,例5.1 输入两个数,按数值大小次序 排列输出. #include void main() float a,b,t;scanf(“%f,%f“, ,输入: 3.6, -3.2 输出: -3.20, 6.20,两个数交换,例5.2 输入三个数,按由小到大次序排列,并输出。,i

14、nput a,b,c 1,7,5 1.00,5.00,7.00,if (a)if (b) 语句1else 语句2 else if (c) 语句3else 语句4,内嵌if,内嵌if,if ( a )if ( b ) 语句1 else if ( c ) 语句2 else 语句3,什么条件执行语句1,什么条件执行语句2,3 ?,if 语句的嵌套,else总是从最内层开始结合,即靠近的那个if,if ( a )if ( b ) 语句1else if ( c ) 语句2 else 语句3,当条件区间不能一次划分时,要逐步划分。 第一种算法,先将x=0划分出来,再判x0,剩下的自然为x0。,#inclu

15、de void main() int x,y;scanf(“%d“, ,算法1:,输入:4,输出:x=4,y=1,#include void main() int x,y;scanf(“%d“, ,算法2:,输入:4,输出:x=4,y=1,y 表达式1 n,条件运算符 ? 表达式1 ? 表达式2 : 表达式 3 条件运算符是三目运算符 例:max=(ab)?a:b; 条件表达式 当(ab)为真时,表达式取a的值 当(ab)为假时,表达式取b的值,表达式2 表达式3,将大写转换为小写的算法: AZ - 6590, az - 97122char=32+CHAR,例5.4 输入一个字符,判断大小写,

16、若是大写,则转换成小写,并输出。,int main() char ch;scanf(“%c“, ,if (ch=A ,5.4 多分支选择 switch 语句,一般形式:switch (表达式) case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;.case 常量表达式n:语句n;break;default:语句n+1,例:根据成绩等级打出成绩范围。,void main() char grade;printf(“Enter your graden“);scanf(“%c“, ,如: case 85100:prinf(“An”); (错,因为case不能表示范围

17、,成绩不能表示成常数表达式)。,常量表达式,(接上页) 例:根据成绩等级打出成绩范围。,关于 switch 的说明 switch后面的表达式一般情况下应该是有序型的量,目前学到的有序型是整数、字符。 常量表达式的值必须互不相同。 必须用break语句终止多个case连续执行,否则只要有一个case满足后,以下的语句全部无条件执行。,(接上页) 例:根据成绩等级打出成绩范围。,例: 输入年月,判断该月有几天 根据历法 1,3,5,7,8,10,12月每月31天, 4,6,9,11月每月30天, 2月份闰年29天,平年28天。 设计思想:采用switch语句实现多种选择分支。 case 中常量表达

18、式1,3,5,7,8,10,12 共用一条语句 days=31; case 中常量表达式 4,6,9,11 共用一条语句 days=30; 闰年采用前面讲授的算法,#include void main() int year,mon,days;printf(“请输入年/月:“);scanf(“%4d %2d“,case 4:case 6:case 9:case 11:days=30;break;case 2: /* 闰年算法*/printf(“%d 年 %d 月 %dn“,year,mon,days); ,例5.6 求 ax2+bx+c=0 方程的解1、a=0, 退化方程,不是二次方程2、b=0

19、, 退化方程,求平方根3、b2-4ac=0, 有两个相等的实根4、b2-4ac0, 有两个不相等的实根5、b2-4ac0, 有两个共轭复根Tips: 如何判断实数为零?,fabs(x) # include ,特殊条件的处理,思考:如何判断两实数相等?,定义变量:int a,b,c;float x1,x2,realpart,imagpart,disc;1、a=0, 方程不是二次方程;if (a=0 ,2、b=0, 方程退化为求平方根;if (b=0)x1=sqrt(-c/(float)a);x2=-sqrt(-c/(float)a);printf(“b=0时, x1=%f x2=%fn”,X1,

20、x2); ,3、b2-4ac=0, 有两个相等的实根;disc=b*b-4*a*c;if (disc=0)x=-b/(2.0*a);printf(“两个相等的实根,根为x=%fn”,X); ,4、b2-4ac0,有两个不相等的实根;disc=b*b-4*a*c;if (disc=0)x1 =(-b+sqrt(disc)/(2.0*a) ;x2=(-b-sqrt(disc)/(2.0*a);printf(“两个实根”,x1=%f,x2=%fn”,X); ,5、b2-4ac0,有两个共轭复根;disc=b*b-4*a*c;if (disc=0)realpart =-b/(2*a);imagpart

21、 = sqrt(-disc)/(2*a); printf(“has complex roots:n“) ;printf(“两个共轭复根”,realpart=%f,imagpart=%fn”,X); ,void main() int a,b,c;float disc,x1,x2,realpart,imagpart; scanf(“%d,%d,%d“, else, disc=b*b-4*a*c; if (fabs(disc)0.0) x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a); printf(“有两个不相等的实根%f,%fn”,x1,x2); e

22、lse realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a); printf(“虚根 realpart%f,imagpart%fn”,realpart,imagpart) ; ,课堂练习: 编写一个运算器程序,输入两个操作数和一个符号,输出结果,注意0不能做除数。,void main() int num1,num2,result ; char op;printf(“Please enter two numbersn“);scanf(“%d%d“, ,#include,本节要点,判断就是设定条件,用关系运算式和逻辑运算式表示,用&,|,!, ,=,=,=,!=

23、运算符。 掌握各逻辑运算符和关系运算符的优先级,判断的结果非0既1, 1表示满足条件,0表示不满足条件 if语句有三种表示方法,掌握它们在程序中的应用. 多层if语句的嵌套可用switch语句实现。 在switch语句中注意break的运用,目的: 掌握 if else语句的三种使用方式 掌握 switch 语句 内容: 基本:page 111/ 5.4, 5.5, 5.8, 5.10 提高: 1,page 112/ 5.72,计算邮资。最低重量为1克,基本费为0.80元,每增加1克,增加邮费0.50元,加快费为2.00元。3,编写一个运算器程序,输入两个操作数和一个符号,输出结果,注意0不能做除数。,第一次上机实验 (周六8:0010:00,F332,F333),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报