1.关系运算符<= 与 == 的优先级相同。请问这句话的说法是正确的吗?
A.正确 B.错误
正确答案: B
解析:==的优先级小于<=。
2.以下数据中,不正确的数值或字符常量是()。
A.c B.66 C.0xaa D.50
正确答案: A
解析:带单引号才是字符常量,A应为'c'。
3.派生类对象可以访问基类成员中的()?
A.公有继承的私有成员
B.私有继承的公有成员
C.公有继承的保护成员
D.以上都错
正确答案: D
解析:
4.以下描述错误的是()。
A.函数的形参在函数未调用时不分配存贮空间
B.若函数的定义出现在主函数之前且仅被主函数使用,则可以不必再说明
C.若一个函数(非主函数)没有return语句,返回类型是void
D.一般来说,函数的形参和实参的类型应该一致
正确答案: C
解析:构造函数和析构函数都没有返回类型,也没有return语句。
5.已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。
A.void print( ) const;
B.const void print( );
C.void const print( );
D.void print(const);
正确答案: A
解析:const在后面,是用来修饰对象中的this,表明这个成员函数不能修改this指向的值,即不能修改对象的值。
A.pfun2 = add失败,需要显示定义为pfun2 = add<int>
B.pfun1 = add
C.pfun3 = add失败,add无法正确推导
D.pfun4 = add<int>失败,函数指针不可赋值
正确答案: BC
解析:
A:pfun2 = add的错误提示不是pfun2 = add,而是 no matches converting function 'add' to type 'const int (*)(int&, int&);
B:pfun1的参数和返回值一致,可以自动推导,正确赋值;
C:pfun3 = add赋值失败,失败原因和A一样;
D:pfun4 = add显示的指定类型T为int型,赋值正确。
1
2
|
char
x[]=
"abcdefg"
;
char
y[]={
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
};
|
A.数组X和数组Y等价
B.数组X和数组Y长度相同
C.数组X的长度大于等于数组Y的长度
D.数组X的长度小于等于数组Y的长度
正确答案: D
解析:strlen函数以'\0'为结尾判断符,char x[]="abcdefg";定义x数组默认追加结尾符'\0',char y[]={'a','b','c','d','e','f','g'};没有结尾符,strlen(y)的结果是遇到第一个'\0',是一个未定值,因此答案是数组x的长度小于等于y的长度
1
2
3
4
5
6
|
int add( int *x, int *y, int *z){
*x += *x;
*y += *x;
*z += *y;
return *z;
}
|
A.4 B.5 C.6 D.7
正确答案: D
解析:(注意x,y,z指针可能指向同一地址,也可能指向不同的地址。)
有以下5中情况:
1.int x=1,y=1,z=1,add(x,y,z)return 4
2.int x=y=1,z=1,add(x,y,z)return 5
3.int x=z=1,y=1,add(x,y,z)return 5
4.int y=z=1,x=1,add(x,y,z)return 6
5.int x=y=z=1,add(x,y,z)return 8
(可上机自行验证)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
int main()
{
bool first= true ;
int sum=0;
int value;
unsigned short i=0xFFFF;
for (;i>=0;--i)
{
if (first)
{
value=65536;
sum+=value%3;
first= false ;
}
else {
sum+=--value%3;
if (value<=0)
{
cout<<sum<< "," <<i;
break ;
}
}
}
return 0;
}
|
A.65535,65535
B.65535,65536
C.65535,1
D.65536,65535
正确答案: D
解析:(注意i的类型为unsigned short)
10.如下代码的输出结果是()。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
int
function2(
int
a[],
int
b,
int
e)
{
if
(e-b<=1)
return
abs
(a[b]-a[e])>=3?a[b]:a[e];
int
l = 0, r = 0;
l = function2(a, b, b + (e - b) / 2);
if
(l % 2 == 0)
r = function2(a, b + (e - b) / 2 + 1, e);
else
return
l;
if
(l | r)
return
l | r;
else
return
r;
}
int
main()
{
int
a[] = { 10,5,8,4,5,20,2,3 };
cout << function2(a, 0,
sizeof
(a) /
sizeof
(1)) << endl;
int
b[] = { 3,5,8,4,8,30,2,3 };
cout << function2(b, 0,
sizeof
(b) /
sizeof
(1)) << endl;
return
0;
}
|
A.15,5
B.10,5
C.20,3
D.其他
正确答案: A
解析:(考察递归)