《江苏省计算机二级模拟考试(VC++)(试卷3)》.doc
江苏省计算机二级模拟考试(VC++)
(试卷3)
【程序设计理论】
1.[题号:42](单选题) (知识点:成员函数)
分值:2
下列不能作为C++函数返回值类型的是__________。
A. void
B. int *
C. new
D. int &
【答案:C】
2.[题号:43](单选题) (知识点:成员的访问控制)
分值:2
为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义
为__________。
A. public
B. protected
C. private
D. private或 protected
【答案:A】
3.[题号:44](单选题) (知识点:对象的声明与使用)
分值:2
假设A为一个类,x为该类的对象,则访问x对象中数据成员a的方式为__________。(假设成员a
可直接访问)
A. x(a)
B. x[a]
C. x->a
D. x.a
【答案:D】
4.[题号:45](单选题) (知识点:类的定义与使用)
以下关于类和对象的描述中,错误的是__________。
分值:2
A.类为结构体类型,对象为结构体变量
B.类和对象之间的关系是抽象和具体的关系
C.对象是类的实例,一个对象必定属于一个已知的类
D.类是对具有共同行为的若干对象的抽象
【答案:A】
5.[题号:46](单选题) (知识点:数组作为函数参数)
分值:2
对于数组名作函数的参数,下面描述正确的是__________。
A.函数调用时将实参数组的各元素逐个复制给形参数组
B.形参数组和实参数组共用同一存储单元
C.形参数组说明时数组长度不能省略
D.函数中形参数组元素值的改变不影响实参数组
【答案:B】
6.[题号:47](填空题<2空>) (知识点:if语句)
分值:4
[程序]
#include
void main()
{
int a=2,b=3,c=0;
if(a+b>9)
c=a*b;
else
c=3*a+b;
if(c<=15)
cout<
else
cout<<3+c-4;
cout<
a=a+b;
b=a+b;
c+=a+b;
cout<
}
程序输出的第一行是__________,第二行是__________。
【答案:】
[第1空答案1]:(分值:2)
81
[第2空答案1]:(分值:2)
A=5, b=8, c=22
7.[题号:48](填空题<3空>) (知识点:函数的递归)
分值:6
[程序]
#include
class Sample {
public:
long fun(Sample s) {
if(s.x<3)
return 1;
return s.x * fun(Sample(s.x-2));
}
Sample(long a) {
x=a;
}
private:
long x;
};
void main() {
int sum=0;
Sample s(1);
for (int i=0; i<5; i++) {
sum+=s.fun(sum);
if(sum>=3)
cout << sum<
}
}
程序输出的第一行是__________,第二行是__________,第三行是__________。
【答案:】
[第1空答案1]:(分值:2)
3
[第2空答案1]:(分值:2)
6
[第3空答案1]:(分值:2)
30
8.[题号:49](填空题<3空>) (知识点:虚函数)
[程序]
分值:6
#include
class Base {
public:
virtual void set(int b) {
x=b;
}
int get() {
return x;
}
private:
int x;
};
class Derived: public Base {
public:
void set(int d) {
y=d;
}
int get() {
return y;
}
private:
int y;
};
void main( ) {
Base B_obj;
Derived D_obj;
Base *p=&B_obj;
p->set(100);
cout<get()<
p=&D_obj;
p->set(200);
p->Base::set(300);
cout<Base::get()<
p->set(p->get()+200);
cout<