c语言 第4章 选择结构程序设计.docx
- 文档编号:8487668
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:21
- 大小:59.54KB
c语言 第4章 选择结构程序设计.docx
《c语言 第4章 选择结构程序设计.docx》由会员分享,可在线阅读,更多相关《c语言 第4章 选择结构程序设计.docx(21页珍藏版)》请在冰豆网上搜索。
c语言第4章选择结构程序设计
第4章选择结构程序设计
4.1关系运算符和关系表达式
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。
比较两个量的运算符称为关系运算符。
4.1.1关系运算符
在C语言中有以下关系运算符:
1) <小于
2) <=小于或等于
3) >大于
4) >=大于或等于
5) ==等于
6) !
=不等于
4.1.2关系表达式
关系表达式的一般形式为:
表达式关系运算符表达式
例如:
a+b>c-d
x>3/2
‘a’+1 -i-5*j==k+1 都是合法的关系表达式。 由于表达式也可以又是关系表达式。 因此也允许出现嵌套的情况。 例如: a>(b>c) a! =(c==d) ◇关系表达式的值是真”和“假”,用“1”和“0”表示。 如: 5>0的值为“真”,即为1。 (a=3)>(b=5)由于3>5不成立,故其值为假,即为0。 关系运算符都是双目运算符,其结合性均为左结合。 ◇关系运算符的优先级低于算术运算符,高于赋值运算符。 <,<=,>,>=的优先级相同,高于==和! =; ==和! =的优先级相同。 c>a+b→c>(a+b) a>b==c→(a>b)==c a==b a=b>c→a=(b>c) 例: #include voidmain() { charc='k'; inti=1,j=2,k=3; doublex=3e+5,y=0.85; printf("%d%d\n",('a'+5 printf("%d%d\n",(1 printf("%d%d\n",(i+j+k==2),(k-1==j==i)); } 程序运行后输出: 10 11 01 说明: ◇在本例中求出了各种关系运算符的值。 字符变量是以它对应的ASCII码参与运算的。 ◇对于含多个关系运算符的表达式,如k-1==j==i,根据运算符的左结合性,先计算k-1==j,该式成立,其值为1,再计算1==i,也成立,故表达式值为1。 4.2逻辑运算和逻辑表达式 逻辑常和逻辑变量 逻辑量(布尔量)——用来描述两种对立状态的量称为逻辑量,如命题的成立与否、灯亮与灯灭、高与矮、肥与瘦、快与慢、长与短、阀门的开与关等,都可以有逻辑量来描述。 ◇逻辑量的取值只有两个,即: true(真)和false(假)。 注: 逻辑量在内存中占用一个字节,实际存储的是1和0,分别对应于true与false。 4.2.1逻辑运算 C语言中提供了三种逻辑运算符: &&与运算 ||或运算 ! 非运算 与运算符&&和或运算符||均为双目运算符。 具有左结合性。 非运算符! 为单目运算符,具有右结合性。 逻辑运算符和其它运算符优先级的关系可表示如下: ! (非)→&&(与)→||(或) “&&”和“||”低于关系运算符,“! ”高于算术运算符。 按照运算符的优先顺序可以得出: a>b&&c>d等价于(a>b)&&(c>d) ! b==c||d b)==c)||(d a+b>c&&x+yc)&&((x+y) ⑵逻辑运算的值 逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。 其求值规则如下: ①与运算&&: 参与运算的两个量都为真时,结果才为真,否则为假。 例如: 5>0&&4>2 由于5>0为真,4>2也为真,相与的结果也为真。 ② 或运算||: 参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。 例如: 5>0||5>8 由于5>0为真,相或的结果也就为真。 ③非运算! : 参与运算量为真时,结果为假;参与运算量为假时,结果为真。 例如: ! (5>0) 的结果为假。 注意: 各种类型的数据量都可以参加逻辑运算,在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。 例如: 由于5和3均为非“0”因此5&&3的值为“真”,即为1。 又如: 5||0的值为“真”,即为1。 例: #include voidmain() { inti=0,j=5,z; z=! i*j;//! 的优先级高于算术运算 printf("%d\n",z); } 4.2.2逻辑表达式 逻辑表达式的一般形式为: 表达式逻辑运算符表达式 表达式可以又是逻辑表达式,从而组成了嵌套的情形。 例如: (a&&b)&&c 根据逻辑运算符的左结合性,上式也可写为: a&&b&&c 逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。 例: #include voidmain() { charc='k'; inti=1,j=2,k=3; doublex=3e+5,y=0.85; printf("%d,%d\n",(! x*! y),(! ! ! x)); printf("%d,%d\n",(x||i&&j-3),(i printf("%d,%d\n",(i==5&&c&&(j=8)),(x+y||i+j+k)); } 程序运行后输出: 0,0 1,0 0,1 注意: 若f()是一个任意的表达式,返回一个确定的值,由于有: 0&&f()=0 1||f()=1 所以C++遇到这类情况不会对f()中的操作进行处理,而直接给出该逻辑运算的最终结果0或1。 例: #include voidmain() { inta=-1,b=4,k; k=(++a<0)&&(! (b--<=0)); printf("%d%d%d\n",k,a,b); } 程序运行后输出: 004 因为当计算到(++a<0)为假后,可以确定整个表达式的值为0,所以没有对&&之后的表达式进行处理。 4.3if语句 if语句的三种形式 1. if(条件表达式)语句——单分支结构 if(条件表达式)语句 其语义是: 如果条件表达式的值为真,则执行其后的语句,否则不执行该语句。 其过程可表示为下图。 例: 输入两个数,输出较大者。 #include voidmain() { inta,b,max; printf("inputtwonumbers: "); scanf("%d%d",&a,&b); max=a; if(a printf("Max=%d\n",max); } 2. if(条件表达式)语句1else语句2——双分支结构 if(条件表达式)语句1;else语句2; 其语义是: 如果条件表达式的值为真,则执行语句1,否则执行语句2。 其执行过程可表示为右图。 例4.2: 输入两个整数,输出其中的大数。 #include voidmain() { inta,b; printf("inputtwonumbers: "); scanf("%d%d",&a,&b); if(a>b) printf("Max=%d\n",a); else printf("Max=%d\n",b); } 改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。 例: 输入三个数,找出最小数。 可以只使用简单的if语句实现。 #include voidmain() { inta,b,c,min; printf("inputa,b,c\n"); scanf("%d%d%d",&a,&b,&c); if(a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言 第4章 选择结构程序设计 语言 选择 结构 程序设计