C语言程序设计谭浩强编选择结构程序设计学时.pptx
《C语言程序设计谭浩强编选择结构程序设计学时.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计谭浩强编选择结构程序设计学时.pptx(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1C语言程序设计谭浩强编语言程序设计谭浩强编 选择选择(xunz)结结构程序设计学时构程序设计学时PPT课件课件第一页,共37页。n n5.1.2 5.1.2 关系表达式关系表达式n n 用关系运算符将两个表达式连接起来的式子,用关系运算符将两个表达式连接起来的式子,称为称为(chn(chn wi)wi)关系表达式。下面为一些合法的关系关系表达式。下面为一些合法的关系表达式:表达式:n na+bb+ca+bb+c(a=3)(b=5)(a=3)(b=5)ab abn n 关系表达式的结果只有两种:真或假;在关系表达式的结果只有两种:真或假;在C C语语言中,言中,“真真”的值为的值为1 1
2、代表,代表,“假假”的值为的值为0 0代表。代表。n n 例:假设例:假设a=3,b=2,c=1a=3,b=2,c=1,则:,则:n n (ab)=c (ab)=c 结果为:表达式的值为真;结果为:表达式的值为真;n n d=ab d=ab 结果为:结果为:d d的值为的值为1 1;n n f=abc f=abc 结果为:结果为:f f的值为的值为0 0;第1页/共37页第二页,共37页。n n 5.2 5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n n5.2.1 5.2.1 逻辑运算符及其优先逻辑运算符及其优先(yuxin)(yuxin)次序次序n nC C语言提供三种逻辑运算符:语
3、言提供三种逻辑运算符:(1)&逻辑(lu j)与(与运算符)(2)|逻辑(lu j)或(或运算符)(3)!逻辑(lu j)非(非运算符)说明(shumng):1)“&”和“|”为双目运算符,“!”为单目运算符;2)逻辑运算的结果只有两种:真或假。逻辑运 算的真值表详细情况见书P89表5.1。第2页/共37页第三页,共37页。n n几种几种(j(j zh zh n n)运算符的优先次序为:运算符的优先次序为:!(!(非非)(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)例:!a&b|xy&c 第3页/共37页第四页,共37页。n n5.2.2 5.2
4、.2 逻辑表达式逻辑表达式n n C C语言编译系统在给出逻辑运算结果时,语言编译系统在给出逻辑运算结果时,“真真”的的值为值为1 1,“假假”的值为的值为0 0。但是在判断一个量是否为。但是在判断一个量是否为“真真”时,以时,以0 0代表代表(dibi(dibi o)“o)“假假”,以非,以非0 0代表代表(dibi(dibi o)“o)“真真”。n n例:例:1 1)若)若a=4a=4,则,则!a=0!a=0;n n 2 2)若)若a=4a=4,b=5 b=5 则则 a&b=1 a&b=1;a|b=1a|b=1;!a|!a|b=1b=1;n n 3 3)53&2|83&2|8b)&(n=c
5、d)后m和n的值分别是多少?在逻辑表达式的求解(qi ji)中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。第4页/共37页第五页,共37页。n n一个重要的例子:n n 判断某一年是否为闰年的方法。而为闰年的条件是符合下面(xi mian)两者之一:n n (1)能被4整除,但不能被100整除;n n (2)能被4整除,又能被400整除;n n首先分析逻辑结构:n n 1、条件(1)和条件(2)的关系应该是“或”;n n 2、而每个条件内部应该为“与”关系;n n 3、条件(2)内,满足被400整除的一定满足被4整除,因此只需一个逻辑表
6、达式即可;n n所以最后的逻辑表达式为:n n(year%4=0)&(year%100!=0)|(year%400=0)n n根据运算符的优先级关系,上式可简化为:n nyear%4=0&year%100!=0|year%400=0第5页/共37页第六页,共37页。5.3 if 5.3 if 语句语句语句语句 if if语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足语句是用来判断所给的条件是否满足(m(m nz)nz),根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两,根据判定的结果决定执行给出的两
7、种操作之一。种操作之一。种操作之一。种操作之一。n n5.3.1 if 5.3.1 if 语句语句(y(y j)j)的三种形式:的三种形式:n n1.if (1.if (表达式)语句表达式)语句(y(y j)j)n n执行过程,如左图:执行过程,如左图:n n if(xy)printf(“%d”,x);if(xy)printf(“%d”,x);表达式表达式语句语句(yj)(yj)假(0)真(非0)xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)第6页/共37页第七页,共37页。n n2.if (2.if (表达式)语句表达式)语句(y(y j)1 else j
8、)1 else 语句语句(y(y j)2j)2n n例如:例如:n nif(xy)printf(“%d”,x);if(xy)printf(“%d”,x);n nelse printf(“%d”,y);else printf(“%d”,y);表达式表达式语句语句(yj)1(yj)1假(0)真(非0)语句语句(yj)2(yj)2xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(非0)printf(“%d”,y)printf(“%d”,y)第7页/共37页第八页,共37页。n n3.if(3.if(表达式表达式1)1)语句语句(y(y j)1 j)1 n n else if
9、(else if(表达式表达式2)2)语句语句(y(y j)2j)2n n else if(else if(表达式表达式3)3)语句语句(y(y j)3j)3n n n n else if(else if(表达式表达式m)m)语句语句(y(y j)mj)mn n else else 语句语句(y(y j)nj)n表达式表达式1 1语句语句1 1假真表达式表达式2 2语句语句2 2真假表达式表达式3 3语句语句3 3语句语句4 4真假表达式表达式4 4语句语句5 5假真第8页/共37页第九页,共37页。n n例:n nif(number500)cost=0.15;n nelse if(numbe
10、r300)cost=0.10;n n else if(number100)cost=0.075;n n else if(number50)cost=0.05;n n else cost=0;number500number500cost=0.15cost=0.15假真cost=0.10cost=0.10真假cost=0.075cost=0.075cost=0.05cost=0.05真假cost=0cost=0假真number300number300number100number100number50number50第9页/共37页第十页,共37页。n n说明:说明:n n1 1)if if 语句
11、中在语句中在if if后面都有表达式,如果表达式的后面都有表达式,如果表达式的值为值为0,0,则按则按“假假”处理,如果为非处理,如果为非0 0,则按,则按“真真”处理;处理;n n例如:例如:if(3)printf(“O.K.”);if(3)printf(“O.K.”);直接执行直接执行(zhxng)(zhxng)打印打印“O.K.”“O.K.”n nif(a)printf(“%d”,a);if(a)printf(“%d”,a);打印打印aa的的ASCIIASCII码码9797n n2 2)注意在)注意在if if 语句第二、三形式中每个语句后都有语句第二、三形式中每个语句后都有分号;分号;
12、n n if (number500)if (number500)cost=0.15 cost=0.15;elseelse if(number300)if(number300)cost=0.10 cost=0.10;else else if(number100)if(number100)cost=0.075 cost=0.075;elseelse if(number50)if(number50)cost=0.05 cost=0.05;else else cost=0 cost=0;第10页/共37页第十一页,共37页。n n3)在if 和else后面只能含一个内嵌的操作语句,当有多个操作语句,此
13、时须用花括号“”将几个语句括起来成为(chngwi)一个复合语句。n n例:if(ab)n n m=a;n n printf(“The MAX number is%d”,m);n nn n elsen n m=b;n n printf(“The MAX number is%d”,m);n n第11页/共37页第十二页,共37页。n n#例5.1:输入两个实数,按代数值由小到大的次序输出这两个数;n n分析:这是一个简单(jindn)而重要的程序,算法的关键在与设 n n 置一个中间交换变量,用于比较两个实数的大小n n 后进行次序的变换;n n main()n n n n float a,b,
14、t;n n scanf(“%f,%f”,&a,&b);n n if(ab)n n t=a;a=b;b=t;n n printf(“%5.2f,%5.2f”,a,b);n n 5t3abt535第12页/共37页第十三页,共37页。n n*例5.2 输入3个数a、b、c,要求(yoqi)按由小到大的顺序输出;n n分析:此题算法比上题稍微复杂一些。上题为两个变量n n 比较大小,只需进行一次比较,而本题为三个变n n 量,则需进行三次比较。其伪代码算法为:n n if ab 将a和b对换 (对换之后,a比b小)n nif ac 将a和c对换 (对换之后,a比c小,a为最小)n n if bc 将
15、b和c对换 (对换之后,b比c小,b为次小)n n 经过三次比较和变换后:a为最小值,b为次小值,n n c为最大值。n n 程序可写为:第13页/共37页第十四页,共37页。n n#includen nmain()n n n n float a,b,c,t;n n scanf(“%f,%f,%f”,&a,&b,&c);n n if(ab)n n t=a;a=b;b=t;n n if(ac)n n t=a;a=c;c=t;n n if(bc)n n t=b;b=c;c=t;n n printf(“%5.2f,%5.2f,%5.2f”,a,b,c);n n第14页/共37页第十五页,共37页。5
16、.3.2 if5.3.2 if语句的嵌套语句的嵌套语句的嵌套语句的嵌套 在在在在 if if 语句又包含一个或多个语句又包含一个或多个语句又包含一个或多个语句又包含一个或多个(du(du )if)if语句语句语句语句称为称为称为称为if if语句的嵌套语句的嵌套语句的嵌套语句的嵌套.n n一般形式(xngsh):n nif()n n if()语句1n n else 语句2n nelsen n if()语句3n n else 语句4n n注意:if与else的配对关系。else总是与它上面的最近的if n n 配对。第15页/共37页第十六页,共37页。n nif()n n if()语句(yj)
17、1n nelsen n if()语句(yj)2n n else 语句(yj)3n nif()n n if()语句(yj)1 n nelsen n if()语句(yj)2n n else 语句(yj)3此此if,elseif,else配对配对此此if,elseif,else配对配对它们共同构成第它们共同构成第一个一个If If的内嵌语句的内嵌语句加上一个花括符,限定了内嵌加上一个花括符,限定了内嵌if if语句的范围语句的范围(fnwi)(fnwi),可避免上述错误的出现,可避免上述错误的出现第16页/共37页第十七页,共37页。*例例5.3 5.3 有一函数:有一函数:编一程序,输入一个编一程
18、序,输入一个x x值,输出值,输出(shch)y(shch)y值。值。算法算法1:1:若若x0 y=-1x0 y=1x0 y=1 输出输出(shch)y(shch)ymain()main()int x,y;int x,y;scanf(“%d”,&x);scanf(“%d”,&x);if(x0)y=-1;if(x0)y=1;if(x0)y=1;printf(“x=%d,y=%dn”,x,y);printf(“x=%d,y=%dn”,x,y);y=-1 (x0)开始开始(kish)(kish)输入输入(shr)x(shr)xx0 x0 x0Y YN N第17页/共37页第十八页,共37页。开始开始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 谭浩强编 选择 结构 程序设计 学时
限制150内