09年C++专升本考试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1.设char ch;下正确的赋值语句是_______。
A.ch=…123‟;
B.ch=…\xff';
C.ch=…\08‟;
D.ch=…\‟;
答:D
2.在int b[][3]={{1),{3,2),{4,5,6},{0}};中a[2][2]的值是_______。
A.0
B.5
C.6
D.2
答:C
3.在int a=3,*p=&a;中,*P的值是_______。
A.变量a的地址值
B.无意义
C.变量P的地址值
D.3
答:D
4.对于int *pa[5];的描述,_______是正确的。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
答:D
5.下列关于指针的运算中,_______是非法的。
A.两个指针在一定条件下,可以进行相等或不等的运算
B.可以用一个空指针赋值给某个指针
C.一个指针可以加上两个整数之差
D.两个指针在一定条件下,可以相加
答:D
6.指针可以用来表示数组元素,下列表示中_______是错误的。
已知:int a[3][7];
A.*(a+1)[5]
B.*(*a+3)
C.*(*(a+1))
D.*(&a[0][0]+2)
答:A
7.设int x=2,y=3,z=4,则下面的表达式中值为l的表达式是_______。
A.‟x‟&&‟Z‟
B.(!y==1)&&(!z==0)
C.(x<y)&&!z||1
D.x||y+y&&z-Y 答:B
8.设char ch;下正确的赋值语句是_______。
A.ch=…123‟;
B.ch=…\xff';
C.ch=…\08‟;
D.ch=…\‟;
答:D
9.在int b[][3]={{1),{3,2),{4,5,6},{0}};中a[2][2]的值是_______。
A.0
B.5
C.6
D.2
答:C
10.在int a=3,*p=&a;中,*P的值是_______。
A.变量a的地址值
B.无意义
C.变量P的地址值
D.3
答:D
11.对于int *pa[5];的描述,_______是正确的。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
答:D
12.下列关于指针的运算中,_______是非法的。
A.两个指针在一定条件下,可以进行相等或不等的运算
B.可以用一个空指针赋值给某个指针
C.一个指针可以加上两个整数之差
D.两个指针在一定条件下,可以相加
答:D
13.指针可以用来表示数组元素,下列表示中_______是错误的。
已知:int a[3][7];
A.*(a+1)[5]
B.*(*a+3)
C.*(*(a+1))
D.*(&a[0][0]+2)
答:A
14.设int x=2,y=3,z=4,则下面的表达式中值为l的表达式是_______。
A.‟x‟&&‟Z‟
B.(!y==1)&&(!z==0)
C.(x<y)&&!z||1
D.x||y+y&&z-Y 答:B
15.以下程序段。
int x=-l;
do
{x=x*x;}
while(ix);
A.是死循环B.循环执行二次
C.循环执行一次D.有语法错误
答:C
16.下列语句段中不是死循环的是____。
A.int i=100;
while(1)
{i=i%100+1;
if(i==20)break;
)
B.int i,sum=0;。
for(i=1;;i++) sum=sum+l;
C.int k=0:
do{++k;
}while(k>=0);
D.int s=3379;
while(s++%2+3%2)s++:
答:A
17.在一个被调用函数中,关于return语句使用的描述,错误的是。
A.被调用函数中可以不用return语句
B.被调用函数中可以使用多个return语句
C.被调用函数中,如果有返回值,就一定要有r~turn语句
D.被调用函数中,一个return语句可返回多个值给调用函数
答:D ‘
18.若有以下函数调用语句:
fun(a+b,(x,y),fun(n+k,d,(a,b)));
在此函数调用语句中实参的个数是。
A.3
B.4
C.5
D.6
答:A
19.有以下类的说明,请指出错误的地方__。
class CSample
{
int a=2.5; (A)
CSample(); (B)
public:
CSample(int val); (C)
~CSample(); (D)
};
答:A
20. 假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构造函数的次数为( )。
A. 5
B. 6
C. 3
D. 4
答:D
21. 引入友元的主要目的是为了()。
A. 增强数据安全性
B. 提高程序的可靠性
C. 提高程序的效率和灵活性
D. 保证类的封装性
答:C
22.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以
用______提供对全局变量的访问。
A.域运算符
B.类运算符
C.重载
D.引用
答:A
23.__不是构造函数的特征。
A.构造函数的函数名与类名相同.
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
答:D
24.通常拷贝初始化构造函数的参数是__。
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
答:C
25.已知一个类A,__是指向类A成员函数的指针。
假设类有三个公有成员:void
f1(int),void f2(int)和int a。
A.A *p
B.int A::*pc=&A::a
C.void A::*pa
D.A *pp
答:C
26.已知f1(int)是类A的公有成员函数,p是指向成员函数fl()的指针,采用__是
确的。
A.p=fl
B.P=A::f1
C.P=A::f1()
D.p=f1()
答:B
27.己知:类A中一个成员函数说明如下:
void Set(A&a);
其中,A&a的含义是__。
A.指向类A的指针为a
B.将a的地址值赋给变量Set
C.a是类A的对象引用,用来作函数Set(、)的形参
D.变量A与a按位相与作为函数Set(、)的参数答:C
28.下列定义中,__是定义指向数组的指针p。
A.int *p[5]
B.int(*p)[5]
C.(int *)p[5]
D.int *p[]
答:B
29.关于delete运算符的下列描述中,__是错误的。
A.它必须用于new返回的指针
B.它也适用于空指针
C.对一个指针可以使用多次该运算符
D.指针名前只用一对方括号符,不管所删除数组的维数答:C
30.若类A和类B的定义如下:
class A
{
int i,j;
public:
void get();
//...;
};
class B:A
{
int k;
public:
void make();
//…
};
void B::make()
{
k=i*j;
则上述定义中,__是非法的表达式。
.A.void get(); B.int k; C.void make(); D.k=i.j;
答:D .
31.派生类的构造函数的成员初始化列表中,不能包含__。
A.基类的构造函数
B.派生类中子对象的初始化
C.基类的子对象初始化
D.派生类中一般数据成员的初始化
答:C
32.有4个类:data为基类,它含有一个需传递一个参数的构造函数,用它来为其私有成员x 赋值,并显示一句话;类a中含有一个data类的成员对象;类b为类a 的派生类,并在其中也含有一个data类的成员对象;类c是类b的派生类。
类的构造如下,请填写出正确的输出结果。
#include<iostream.h>
class data
I
int x;
public:
data(int x);
{
data::x=x;
cout<<“class data”<<endl;
}
};
class a
{
data d1;
public:
a(int x):d1(x)
{
cout<<“class a"<<endl;
}
};
class b:public a
{
data d2;
public:
b(int x):a(x),d2(x)
{
cout<<“class b”<<endl;
}
};
class c:public b
public:
c(int x):b(x}
{
cout<<“class c”<<endl;
}
);
void main()
{
c obj(5);
)
运行结果为:
_①一
_②一
. ③
④
⑤一
A.classdam
B.class a
C.classb
D.class c
答:①A ②B ③A ④C ⑤D
33.下列运算符中,——运算符在C++中不能重载。
A.?:B.+ C.- D.<=
答:A
34.阅读下面的程序,在空白处填写出程序运行后的结果。
#include<iostream.h>
class Point
{
int x,y;
public:
Point(int vx,int vy){X=VX;y=vy;}
Point(){x=O;y=O;}
Point operator+(Point p1)
{
Point P;
int px=x+p1.x;
int py=y+p1.y;
return Point(px,PY);
}
Point operator一(Point p1)
{
Point p;
int px=x-p1.x;
int pY=y-p1.y;
return Point(px,PY);
)
void print()
{
cout<<x<<”,”<<Y<<endl;
}
};
void main()
pl=pl+p2;
p1.print();
}
运行结果为:①,②。
A.10 B.20 C.30 D.40
答:①C ②C
看程序写结果:
1.
#include <iostream.h>
class Base
〔
public:
Base(int x,int y){a=x;b=Y;}
void Show() { cout<<"Base: "<<a<<","<<b<<endl;} private:
int a,b;
};
class Derived:pubtic Base
{
public:
Derived(int x,int y,int z):Base(x,y),c(z) {}
void Show() ( tout+"Derived: "+c<Cendl; } pnvate:
int c;
};
void main()
{
Base b(50,50),*pb;
Derived d(10,20,30};
ph=&b;
pb->Show{);
pb=&cd;
pb->ShowQ;
}。