C语言 第三章 选择结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章选择结构

一、选择题

1.【B】

分析:此题主要考察逻辑运算。首先x=1, y=1,那么!x为0,y--是--在后,则先使用后自减,y的值就是表达式y--的值,为1。因此!x||y--等价于0||1,结果为1。

2.【D】

分析:此题主要是考语句的特征。一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。if(b==0) m=1;是条if语句,n=2;是条赋值语句。

3.【D】

分析:此题主要是考逻辑运算和关系运算的优先级别.掌握!、算术运算符和&&的优先级别依次降低。

4.【A】

分析:此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和算术运算的优先级别后,就不难了。A 选项中!a为0,所以!a==1为假,那么就不用计算&&后面的表达式了,因为0“与”任何数均为假;B项中先计算出a

5.【D】

分析:此题是考真假条件的转换,其中D项中只有k为0时,!k%2==1才成立,显然和A、B、C三项不同。

6.【A】

分析:此题主要是考逻辑运算符!、&&和||之间的优先级别。!最高,&&次之,||最低。先求得!a为0,所以不必计算!b的值,即!a&&!b的值为0,由c=0,!c=1,而0||1=1,所以选A。

7.【C】

分析:此题考到了关系运算和逻辑运算及一定数学知识。|x-y|<10可等价为-10

8.【C】

分析:此题主要是考查逻辑运算符||,当计算机碰到a||b, 先计算表达式a的值,若为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则0||b必为0。题中b>a 为真,所以(n=b>a)为1,那么将不会去计算m=a

9.【D】

分析:此题考到if-else语句。A、B、C三项都是表示a为真时输出x,为假时输出y,而D则是a为假时输出x,为真时输出y。

10.【C】

分析:此题主要是考查if-else-if和if语句。A选项,c

11.【A】

分析:此题主要是考查if语句和条件表达式的转化。只要理解了if语句和条件表达式的

运算规则的话,就很容易选出A。

12.【D】

分析:见教材例题。

13.【B】

分析:此题主要是考查if-else-if以及关系表达式的运算。首先判断第一个条件a>b>c的值为0,所以不执行其后的语句;在判断第二个条件,c-1>=d表达式的结果为真,所以执行其下面的语句,那么将输出d+1的值为3 ,所以选答案B。

14.【D】

分析:此题主要考查if,else的配对问题。这里在if后面跟了两条语句,其中第一条是if的子句,第二条是条独立的语句,这样第二条语句就夹在了if和else之间,使得else 找不到和它配对的if。所以程序会出错。

15.【C】

分析:请大家记住:else总是和之前与其最近的且不带else的if配对。

16.【A】

分析:此题考查的是条件表达式的求解顺序。参照附录可知,它的结合方向是自右至左,所以先求得右边一个条件表达式的值为2,再求得左边一个的值为1,即选A。17.【B】

分析:此题考查的是条件表达式求解问题。先看第一个条件表达式语句,ac为假,所以条件表达式等价于k=k;所以答案选B。

18.【C】

分析:此题考查的是真假条件的等价问题。x-y为真表示x-y是非0的,也即x-y<0或x-y>0。所以答案选C。

19.【C】

分析:此题主要是考查条件表达式和条件运算符。首先求括号内条件表达式a>c?a:c的值为c,那么整个表达式就等价于d=a>b?c:b;求解这个条件表达式得d=c,所以答案选C 。20.【D】

分析:此题主要是考查在switch语句中break和default的作用及break的适用范围。break 语句可以在switch语句中使用也可以在循环结构中使用,只能在这两个地方使用。switch 语句中可以有default也可以没有。switch语句中可以有break语句也可以没有。21.【D】

分析:此题主要考查switch语句的语法规则。A选项错在swich(a+b); 这里多了一个分号。请大家注意switch后圆括号中的表达式的值必须是整型或字符型,不能为实型。B 选项错在有两个case3。C选项case后面只能是常量表达式,而这里出现变量,所以错误。答案选D。

22.【C】

分析:同21题。

23.【A】

分析:此题主要考查if和else配对问题。此题关键就是else是与第二个if配对组成一条if-else语句。因此首先判断a>b为假,那么跳过其子句,即if-else语句,直接执行最后一条printf语句,将d输出。因此答案选A。

二、填空题

1.10 20 0

分析:此题多数同学会得到的答案是10 20 1,显然是没有弄清楚第三条赋值语句:c=(a%b<1)||(a/b>1).这是将后面一个逻辑表达式的值给c。先计算第一个圆括号里面的内容,a%b的值是10(而不是0),所以10<1为假;a/b的值为0,0>1为假。在逻辑或运算的时候,两个运算对象都为假,则结果为假。所以c的值为0.答案是:10 20 0 2.0

分析:此题主要考查关系表达式。我们主要就是要计算a>b>c的值,首先a>b为真,其值为1,那么1>c为假,所以整个表达式为假,其值为0。所以d为0。

3.585858

分析:此题考查if语句。首先scanf语句使a的值为58,接着执行后面三条if语句,这三个if结构是相互独立的,是互不相关的,只要他们的条件成立,就要执行其子句。a>50、a>40、a>30、都为真,所以执行printf三次,a被输出3次。

4.yes

分析:此题考查if-else语句。赋值表达式c=a+b的值就是左边变量的值,为4,那么表达式为真,所以执行其后的printf语句,将yes输出。

5.20,0

分析:此题关键点if的子句只能是一条语句或一条复合语句,表达式x==y为假,跳过if子句t=x;,接着继续执行x=y;y=t;,因此最后x为20,y为0。

6.4,5,99

分析:同上题。

7.-4

分析:此题考查if语句。首先第一条if语句n=0那么!n为真,执行x-=1;使x值为1,接着第二条if语句m为1条件为真,执行x-=2;使x值为-1,再执行第三条if语句,x 为-1条件为真,执行x-=3;使x值为-4。最后执行printf将-4输出。

8.4

分析:从键盘得到x的值为5,那么判断表达式x--<5,x--的值为5,所以为假,判断了之后x的值变为4。此时执行else子句,将x++输出,为4。

9.3

分析:此题主要考查条件运算符。程序要输出(P/3>0?p/10:p%3)这个条件表达式的值。P为30,所以p/3=10,10>0显然为真,所以整个表达式的值应该是p/10的值,p/10得3。10.1

分析:此题考查if-else语句。因为a为5,a!=0为真,所以p=a!=0等价与p=1,整个表达式p=a!=0为真,执行if子句,将p输出,输出为1。

11.2 1

分析:此题考查switch语句的嵌套。x为1,则外层switch语句选择case1,case1又是一个switch语句,y为0,执行case0的a++使a的值变为1,然后执行break语句跳出内层的switch的语句,接着执行外层switch语句的case2,a++;b++;使a的值变为2,b 的值变为1,然后执行break语句跳出外层的switch语句。最后执行printf语句将a,b输出,输出为2 1。

12.a+b>c&& a+c>b&& b+c>a

分析:此题是逻辑预算和if语句的结合。题目的提示很明显,构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a,程序中的if的条件就是构成三角形的条件,所以我们填入a+b>c&& a+c>b&& b+c>a。这里大家注意同时满足条件我们需要用与逻辑,任意满足一个条件我们需要用或逻辑。

相关文档
最新文档