《《C语言程序设计》基本知识点解答(三)》由会员分享,可在线阅读,更多相关《《C语言程序设计》基本知识点解答(三)(14页珍藏版)》请在金锄头文库上搜索。
1、C语言程序设计基本知识点解答(三)第五章 选择结构程序设计Q116如何进行选择结构的程序设计?(选择结构)A116“选择结构”也可以叫做“分支结构”。在一个合理的“选择结构”中,总是先进行某个条件的判断,然后根据判断的结果选择执行预先设定的操作。其流程图如下:可见,要想实现“选择结构”,需要2个条件: 能表达条件判断的运算符:即关系运算符和逻辑运算符 能实现判断并选择的控制语句:即if和switch语句Q117什么是关系运算符?(关系运算符)A117关系运算符也叫“比较运算符”,用于对两个数据进行比较判断的。C语言中一共有6种关系运算符,分别是 小于、 大于、= 大于等于、= 等于、!= 不等
2、于。用这6种运算符按规定把运算量连接起来构成的式子就是关系表达式。其中,参与关系运算的数据可以是常量、变量或任何合法的表达式。比如:a * a 5 的值就等于0,而关系表达式5 3 的值就等于1。有了这样的处理,一个关系表达式就可以作为其它表达式的一部分从而构成更复杂的表达式了。比如:(3 5) + ( 3 != 5)、x = (y = z) 等等。Q119当a=3, b=2, c=1时,为什么关系表达式a b c 的值却是“假”的?(关系表达式)A119计算机语言中的表达式并不是数学表达式。如果是一个数学式子a b c,它表示b同时大于c和小于a,的确是对的。但是在C语言中,这个关系表达式实
3、际上等价于(a b) c。这样计算一下:(a b)是“真”,值为1;1 c 当然是“假”。Q120什么是逻辑运算符?(逻辑运算符)A120逻辑运算实际上是复合的关系运算,即要判断一个大命题的成立与否,不仅要判断其中的各个小命题是否成立,还取决于每个小命题的成立与否是如何影响大命题的成立的。C语言有3种逻辑运算符,分别是 & 逻辑与(双目)、| 逻辑或(双目)、 !逻辑非(单目)。Q121逻辑运算符的运算规则是什么?(逻辑运算符)A121逻辑运算是关系比较运算结果之间进行的运算,所以参与逻辑运算的运算量必须是逻辑量(即值为“真”或“假”的量),而逻辑运算的结果也必然是逻辑值(“真”或“假”,以下
4、分别用“True”或“False”代表)。l &逻辑与的运算规则是:全部运算量都为“T”,逻辑与运算才为“T”;只要有一个运算量为“F”,逻辑与运算即为“F”比如想判断x的绝对值是否小于5,那么对应的逻辑表达式是:x -5 & x 5。l |逻辑或的运算规则是:全部运算量都为“F”,逻辑或运算才为“F”;只要有一个运算量为“T”,逻辑或运算即为“T”比如想判断x的绝对值是否大于5,那么对应的逻辑表达式是:x 5。l !逻辑非的运算规则是:运算量为“T”,逻辑非运算则为“F”;运算量为“F”,逻辑非运算则为“T”比如关系表达式 x 0,实际上和逻辑表达式 ! (x 0) sign = 1;其执行
5、过程如右图所示 使用成对的if和else。其形式为if (表达式) 语句1;else 语句2;比如:if (x 0) sign = 1; else sign = -1;其执行过程如左图所示其中的“语句”、“语句1”、“语句2”称之为if或else的内嵌语句。注意:C语言规定,if或else的内嵌语句只能是一个语句,不能超过一个语句。Q125什么叫if嵌套语句?(if)(嵌套)A125在if或else的内嵌语句中又包含一个或多个if语句时,称为if语句的嵌套。常用于多重条件,多个分支的选择判断控制。比如:if (x != 0) if (x 0) y = 1; else y = -1; else
6、y = 0;其执行流程图如图所示:Q126else能否单独使用构成选择结构?(else)(嵌套)A126绝对不能。else必须和if在一起构成选择结构语句。也就是说,有一个else就必须有一个if和它配对。其实道理很简单,没有“如果”哪有“否则”呢?Q127什么是if嵌套语句中if和else的配对问题?(if)(嵌套)A127正如上个问题所言,else是不能单独出现的,而if却可以单独构成一个语句,那么,在if嵌套语句中就存在else和if如何配对的问题。即是说,当if和else的数目不相等时,到底每个else和哪个if在一起组成一个语句的问题。在C语言中,if与else的配对原则是:从if嵌
7、套语句的最里层的else开始向外,依次将else与在它前面的离它最近的还未配对的if 配对。比如:if (x != 0) if (x 0) y = 1; else y = -1; else y = 0;其配对结果是:if (x != 0) if (x 0) y = 1; else y = -1; else y = 0;而如果是如下语句:if (x != 0) if (x 0) y = 1;else y = 0;则配对结果是:if (x != 0) if (x 0) y = 1;else y = 0;如果不注意上述配对原则,那么就很有可能出现这样的情况:编译系统的理解和程序员的本意发生偏差,使程
8、序运行结果出错。这样的错误也是很难发现的。Q128那么,如何避免在if嵌套语句中出现实际的配对和所设计的配对发生误差的情况?(if)(嵌套)A128仔细分析一下就会发现,在if嵌套语句中之所以会发生配对误差,根本的原因在于if可能单独出现。实际效果就是if的数目大于else的数目。针对问题出现的原因,有以下解决办法:只把要嵌套的语句放在else后面,这样由于每个else前面只有一个if,所以不会出错。比如:y = 0;if(x = 0) if(x 0) y = 1;else y = -1; 容易出错,而if(x 0) y = 1; else y = 0;不易出错。如果嵌套语句必须放在if 后面
9、,就把它用大括号括起来,或给每个if语句都加上else。比如:y = 0;if(x = 0) if(x 0) y = 1;else y = -1; y = 0;if(x = 0) if(x 0) y = 1; else ;else y = -1; 都不易出错。Q129什么是switch语句?(switch)A129switch语句是多条件多分支选择语句,类似于if 语句的第三种形式,即if嵌套语句。switch语句中会使用4个C关键字:switch、case、default和break。其语法构成如下:switch(表达式) case 常量表达式1 : 语句1; break; case 常量表
10、达式2 : 语句2; break; . case 常量表达式n : 语句n; break; default : 语句n+1;其中,粗体部分是必不可少的。switch语句的执行流程图如下:从流程图可见,关键字 break的作用是结束它所在的switch语句的执行。Q130switch语句使用中有何注意事项?(switch)A130switch的语法相对比较复杂,使用中需注意以下几点:(1)switch语句中,switch后的表达式可以是任何类型的表达式,系统求解它的具体值而不是逻辑值。这一点是和if语句不一样的。对于if语句,系统求解其后的表达式的逻辑值。(2)每一个case后面的表达式只能是常量表达式,即能求解