85.设有定义语句“char ch='\77';”,则下列说法中正确的是( )
A.ch中含有1个字符
B.ch中含有2个字符
C.ch中含有3个字符
D.语法出错
【解析】从定义语句中可以看出,变量ch是字符型变量,显然只能存放单个字符,所以备选答案B和C是错误的说法。再分析赋予的初值,'\77'是在“\”符号的后面跟有2位的人进制数,所以'\77'是转义字符,转义字符是单个字符,所以本题答案应选A。
【参考答案】 A
86.设有函数调用语句“f(x1,x1+x2,(x1,x2));”,正确的说法是( )
A.调用的实际参数是2个
B.调用的实际参数是3个
C.调用的实际参数是4个
D.调用时会出现语法错误。
【解析】对函数调用来说,实际参数一般都是表达式,而表达式之间必须用逗号来分隔,所以只要区分调用时的表达式数目,即是实妹参数的数目。对本题来说,第1个表达式是“x1”、第2个表达式是“x1+x2”、第3个表达式是一个逗号表达式“x1,x2”,所以本题的函数调用时,表达式的数目为3,当然实际参数的数目就是3,所以本题答案应选B。
【参考答案】B
87.计算平方数时不可能引起二义性的宏定义是( )
A.#define SOR(x)x*x
B.#define SQR(x)(x)*(x)
C.# define SQR(x)(x*x)
D.# define SQR(x)((x)*(x))
【解析】分析备选答案A:如果宏引用是“SQR(2+3)”,则宏替换后的结果是“2+3*2+3”,结果是错误的,因此这个答案可能引起二义性。分析备选答案B:如果宏引用是“ 3/SQR(2+3)”,则宏替换后的结果是“3/(2+3)*(2+3)”,结果也是错误的,因此这个答案可能引起二义性。分析备选答案C:如果宏引用是“SQR(2+3)”,则宏替换后的结果是“(2+3*2+3)”,结果也是错误的,因此这个答案可能引起二义性。只有备选答案D不会引起二义性。所以本题答案应选D。
【参考答案】D
88.执行下列程序段后,x的位是( )
int a=8,b=7,c=6,x=1;
if(a>6)if(b>7)if(c>8)x=2;else x=3;
A.0
B.1
C.2
D.3
【解析】按照"else"只和前面最近的"if"配对的原则,上述程序段可以写成下列更为清晰的程序清单:
int a=8,b=7,c=6,x=1;
if(a>6)
if(b>7)
if(c>8)
x= 2:
else
x=3:
依据a、b、c的值,很容易看出第1个“if语句”的条件“a>6”是成立的,接着执行第2个“if语句”,该语句的条件“b>7”,是不成立的,所以下面的“if-esle”语句不执行,因此x的值不变,仍为1。所以本题答案应选B。
【参考答案】B
89.执行下列程序段后,变量y的值为( )
int x[]={1,2,3,4},y,*p=&x[1];
y=(*--P)++;
A.1
B.2
C.3
D.4
【解析】从数据定义语句中可以得出下列结论:指针变量P指向的数组元素是x[1]。再来分析赋值句的右边表达式“(*--p)++”,其中的“--”优先于“*”先计算“--p”,使得p指向数组元素x[0];所以“(*--p)”就是数组元素a[0],再计算其后的“++”,由于“++”是后缀,所以表达式的值就是数组元素x[0]的值,为1,然后再对数组元素x[0]加1。因此变量y的值是1。本题答案应选A。
【参考答案】A
90.能正确表达逻辑关系“-1<x<1并且-1<y<1”的表达式是( )
A.(-1<x<1)&&(-1<y<1)
B.(-1<x<1)&(-1<y<1)
C.((-1<x)??(x<1))&&((-1<y)??( y<1))
D.(-1<x)&&(x<1)&&(-1<y)&&(y<1)
【解析】注意数学中的“-1<x<1”含义是“-1<x同时x<1”,搞清楚这一点后,再来分析给出的备选答案。对于答案A:其中的-1<x<1不能表示“-1<x同时x<1”,例如,当x为0时,“-1<