二级C语言-运算符与表达式

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

二级C语言-运算符与表达式

(总分:60.00,做题时间:90分钟)

一、{{B}}选择题{{/B}}(总题数:38,分数:38.00)

1.设变量已正确定义并赋值,以下合法的C语言赋值语句是______。

∙ A.x=y==5

∙ B.x=n%2.5

∙ C.x+n=i

∙ D.x=5=4+1

(分数:1.00)

A. √

B.

C.

D.

解析:[解析] 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C和D错误。“%”运算符两侧都应当是整型数据,选项B错误。

2.在x值处于-2~2、4~8时值为“真”,否则为“假”的表达式是______。

∙ A.(2>x>-2)||(4>x>8)

∙ B.!(((x<-2)||(x>2))&&((x<=4)||(x>8)))

∙ C.(x<2)&&(x>=-2)&&(x>4)&&(x<8)

∙ D.(x>-2)&&(x>4)||(x<8)&&(x<2)

(分数:1.00)

A.

B. √

C.

D.

解析:[解析] 本题是考查关系运算和逻辑运算的混合运算。要给出此题的正确答案,首先需要了解数学上的区间在C语言中的表示方法,如x在[a, b]区间,其含义是x既大于等于a又小于等于b,相应的C语言表达式是x>=a&&x<=b。本例中给出了两个区间,一个数只要属于其中一个区间即可,这是“逻辑或”的关系。在选项A中,区间的描述不正确。选项B把“!”去掉,剩下的表达式描述的是原题中给定的两个区间之外的部分,加上“!”否定正好是题中的两个区间的部分,是正确的。选项C是恒假的,因为它的含义是x同时处于两个不同的区间内。选项D所表达的也不是题中的区间。

3.sizeof(double)是______。

∙ A.一种函数调用

∙ B.一个整型表达式

∙ C.一个双精度表达式

∙ D.一个不合法的表达式

(分数:1.00)

B. √

C.

D.

解析:[解析] sizeof是一个C语言关键字,有着特定的功能。在C语言中,一个函数的调用格式是:函数名(参数列表)。虽然“sizeof(double)”与函数调用有着相同的格式,但sizeof是一个C语言关键字,因此,它不是一个函数调用。sizeof在C语言中是表示求一个变量或数据类型所占用的内存字节数的运算符,所以“sizeof(double)”表示求双精度浮点型数据占用内存的字节数。显然,该表达式返回的是一个整数,而不是一个双精度数。

4.对于条件表达式(M)? (a++):(a--),其中的表达式M等价于______。

∙ A.M==0

∙ B.M==1

∙ C.M!=0

∙ D.M!=1

(分数:1.00)

A.

B.

C. √

D.

解析:[解析] 因为条件表达式e1?e2:e3的含义是e1为真时,其值等于表达式e2的值,否则为表达式e3的值。“为真”就是“不等于假”,因此M等价于M!=0。

5.设变量已正确定义并赋值,以下正确的表达式是______。

∙ A.x=y*5=x+z

∙ B.int(15.8%5)

∙ C.x=y+z+5, ++y

∙ D.x=25%5.0

(分数:1.00)

A.

B.

C. √

D.

解析:[解析] 求余运算符“%”两边的运算对象必须是整型数据,而选项B和D中“%”两边的运算对象有浮点整型数据,所以选项B和D是错误的表达式。在选项A中赋值表达式两边出现相同的变量x,也是错误的。选项C是一个逗号表达式,所以正确的答案为C。

6.设变量已正确定义为整型,则表达式n=i=2,i=n+1,i+n的值为______。

∙ A.2

∙ B.3

∙ C.4

∙ D.5

(分数:1.00)

B.

C.

D. √

解析:[解析] 本题考查的是C语言逗号表达式相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔的各表达式的值,整个逗号表达式的值等于其中的最后一个表达式的值。本题中,首先i和n被赋值为2,i再加上n和1为3,最后i+n等于2+3=5。本题答案为D。

7.若已定义x和y为double类型,则表达式“x=1, y=x+3/2”的值是______。

∙ A.1

∙ B.2

∙ C.2.0

∙ D.2.5

(分数:1.00)

A.

B.

C. √

D.

解析:[解析] 本题中的表达式为逗号表达式,此表达式的结果为y=x+3/2的值。y=x+3/2的运算次序为:先进行3/2运算,两个运算数均为整型量,结果也为整型量,等于1,此结果将与double类型数进行相加,要转换为1.00...00。最后将x的值1转换成double型,与1.00...00相加。

8.设变量已正确定义并赋值,以下正确的表达式是______。

∙ A.x=y*5=x+z

∙ B.int(15.8%5)

∙ C.x=y+z+5, ++y

∙ D.x=25%5.0

(分数:1.00)

A.

B.

C. √

D.

解析:[解析] 求余运算符“%”两边的运算对象必须是整型,而选项B、D中“%”两边的运算对象有浮点整型数据,所以选项B、D是错误的表达式。在选项A中赋值表达式的两边出现相同的变量“x”,也是错误的。选项C是一个逗号表达式,所以正确的答案为C。

9.现有定义int a;double b;float c;char k;,则表达式a/b+c-k的值的类型为______。

∙ A.int

∙ B.double

∙ C.float

∙ D.char

(分数:1.00)

A.

相关文档
最新文档