第章C程序设计课件.ppt

上传人:rrsccc 文档编号:9219862 上传时间:2021-02-08 格式:PPT 页数:75 大小:743.50KB
返回 下载 相关 举报
第章C程序设计课件.ppt_第1页
第1页 / 共75页
第章C程序设计课件.ppt_第2页
第2页 / 共75页
第章C程序设计课件.ppt_第3页
第3页 / 共75页
第章C程序设计课件.ppt_第4页
第4页 / 共75页
第章C程序设计课件.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《第章C程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第章C程序设计课件.ppt(75页珍藏版)》请在三一文库上搜索。

1、第章C程序设计,5.1关系运算符和关系表达式 5.2逻辑运算符和逻辑表达式 5.3if语句 5.4switch语句 5.5程序举例,第5章 选择结构程序设计,第章C程序设计,在第3章中已介绍了选择结构,它是三种基本结构之一。在大多数程序中都会包含选择结构。它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。在本章中介绍如何用c语言实现选择结构。在c语言中选择结构是用if语句实现的。if语句最常用的形式是 if (关系表达式)语句1 else 语句2 例如: if ( x0 ) y=1; else y=-1; 其中x0是一个关系表达式。“”是一个关系运算符。,第章C程序设计,5.

2、1 关系运算符和关系表达式,关系运算是逻辑运算中比较简单的一种。所谓“关系运算”实际上是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。例如,a3是一个关系表达式,大于号()是一个关系运算符,如果a的值为5,则满足给定的“a3”条件,因此关系表达式的值为“真”(即“条件满足”);如果a的值为2,不满足“a3”条件,则称关系表达式的值为“假”。,第章C程序设计,5.1.1 关系运算符及其优先次序,C语言提供6种关系运算符: 优先级相同 (高): (小于) =(小于或等于) (大于) =(大于或等于) 优先级相同 (低): = = (等于) !=(不等于) 关于优先次序: (1

3、) 前4种关系运算符(,=,=)的优先级别相同,后两种也相同。前4种高于后2种。例如,“”优先于“=”。而“”与“”优先级相同。,第章C程序设计,(2) 关系运算符的优先级低于算术运算符。 (3) 关系运算符的优先级高于赋值运算符。 以上关系见图5.1。 例如: cab等效于 c(ab) ab=c 等效于(ab)=c a=bc 等效于a=(bc) a=bc 等效于a=(bc),图5.1,第章C程序设计,5.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达 式、字符表达式)连接起来的式子,称关系表达式。例如,下面都是合法的关系表达式: ab,abb

4、c,(a=3)(b=5),ab,(ab)(bc) 关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5=3”的值为“假”,“5=0”的值为“真”。c语言没有逻辑型数据(Pascal语言以True表示“真”,以false表示“假”。PascaL和FORTRAN等语言都有逻辑型变量和逻辑型常,第章C程序设计,量),以1代表“真”,以“0”代表“假”。例如,a=3,b=2,c=1,则: 关系表达式“ab”的值为“真”,表达式的值为1。 关系表达式“(ab)=c”的值为“真”(因为ab的值为1,等于c的值),表达式的值为1。 关系表达式“bca”的值为“假”,表达式的值为0。 如果有以下

5、赋值表达式: d=abd的值为1。 f=abcf的值为0 (因为“”运算符是自左至右的结合方向,先执行“ab”得值为1, 再执行关系运算“1c”,得值0,赋给f)。,第章C程序设计,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。在basic和Pascal语言中有以下形式的逻辑表达式(AND是逻辑运算符): (ab)AND(xy) 如果ab且xy,则上述逻辑表达式的值为“真”。下面介绍c语言中的逻辑运算符和逻辑运算。 5.2.1 逻辑运算符及其优先次序 C语言提供三种逻辑运算符:,5.2 逻辑运算符和逻辑表达式,第章C程序设计,(1) else if(number300)cost

6、=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05; elsecost=0; 说明: (1) 三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。例如,if(a=b else 各有一个分号 printf(%f,-x); 这是由于分号是c语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。如果无此分号,则出现语法错误。但应注意,不要误认为上面是两个语句(if语句和else语句)。它们都属于同一个if语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。,第章C

7、程序设计,(3) 在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。如: if(abc printf(area=62f,area); else printf(it is not a trilateral); 注意在第3行的花括号“”外面不需要再加分号。因为内是一个完整的复合语句,不需另附加分号。,第章C程序设计,例5.1输入两个实数,按代数值由小到大的次序输出这两个数。 这个问题的算法很简单,只需要作一次比较即可。对类似这样简单的问题可以不必先写出算法或画流程图,而直接编写程序。或者说,算法在编程者的脑子里,相当于

8、在算术运算中对简单的问题可以“心算”而不必在纸上写出来一样。 程序如下: main() float a,b,t; scanf(f,f, else realpart=-b(2*a);,第章C程序设计,imagpart=sqrt(-disc)(2*a); printf(has comPlex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); 程序中用disc代表b2-4ac,先计算disc的值,以减少以后的重复计算。对于判断b2-4ac是否等于0时,要注意一个问题:由

9、于disc(即b2-4ac)是,第章C程序设计,实数,而实数在计算和存储时会有一些微小的误差,因此不能直接进行如下判断:if(disc=0)因为这样可能会出现本来是零的量,由于上述误差而被判别为不等于零而导致结果错误。所以采取的办法是判别disc的绝对值(fabs(disc)是否小于一个很小的数(例如10-6),如果小于此数,就认为disc=0。程序中以realpart代表实部P,以imagpart代表虚部q,以增加可读性。 运行结果如下: 1,2,1 The equation has two equalroots-10000,第章C程序设计, 1,2,2 The equation has c

10、omplex roots: -1000010000i -10000-10000i 2,6,1 The equation has distinct real roots:-0.1771 and =2.8229 例5.7运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:,第章C程序设计,s250km没有折扣 250S500 2折扣 500S1000 5折扣 1000S2000 8折扣 2000S3000 10折扣 3000S 15折扣 设每公里每吨货物的基本运费为P(Price的缩写),货物重为w(weight的缩写),距离为S,折扣为d(discount的缩写),则总运费f(fr

11、eight的缩写)的计算公式为f=P*w*S*(1-d)分析此问题,折扣的变化是有规律的:从图5.15可以看到,折扣的“变化,第章C程序设计,点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以在横轴上加一种坐标c,c的值为S/250。c代表250的倍数。当c1时,表示S250,无折扣;1c2时,表示250S500,折扣d=2;2c4时,d=5;4c8时,d=8;8c12时,d=10;c12时,d=15。,图5.15,第章C程序设计,据此写出程序如下: main() int c,S; float P,w,d,f; scanf(f,f,d,&P,&w,&S);

12、 if(S=3000) c=12; elsec=S250; switch(c) case0d=0;break;,第章C程序设计,case1d=2;break; case2 case3d=5;break; case4 case5 case6 case7d=8;break; case8 case9 case10 case11d=10;break;,第章C程序设计,case12d=15;break; f=P*w*S*(1-d1000); printf(freight=154f,f); 运行情况如下: 100,20,300 freight= 588000.0000 请注意:c、S是整型变量,因此c=S

13、250为整数。当S3000时,令c=12,而不使c随S增大,这是为了在Switch语句中便于处理,用一个case可以处理所有S3000的情况。,第章C程序设计,习题 5.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 5.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 5.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) abc & b=c (2) a|bc & b-c (3) !(ab) & !c|1 (4) !(x=a) & (y=b) & 0 (5) !(ab)c-1 & bc2,第章C程序设计,5.4 有3个整数a、b、c,由键盘输入,输

14、出其中最大的数。 5.5 有一函数: x (x1) y = 2x-1 (1x10) 3x-11(x10) 写一程序,输入x,输出y值。 5.6 给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为321,应输出123。,第章C程序设计,图5.16,第章C程序设计,5.7 企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10;利润高于10万元,低于20万元(100000I200000)时,低于10万元的部分按10提成,高于100000元的部分,可提成75;200000I400000时,低于20万的部分仍按上述办法提成(下同)。高于20万元的部职?提成;400000I600000时,高于40万元的部分按3提成;600000I1000000时,高于60万的部分按15提成;I1000000时,超过100万元的部分按1提成。从键盘输入当月利润I,求应发奖金总数。 要求:(1)用if语句编程序;(2)用Switch语句编程序。,第章C程序设计,5.8 有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。见图5.16。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1