一、选择题(每题2分,计2 0分)
C 1、设有变量定义int x=5,n,*p1=&x,*p2;下列表达式正确的是( )。 A、p2=&p1 B、*p1=*p2 C、p2=p1 D、n=*p2 A 2、若有定义“int a[6],*p=a;”,则对a 数组元素地址的正确引用是( )。
A、p+5 B、*a+1
C、&a+1
D、*(p+2)
C 3、下列引用的定义中,正确的是( )。
A、int &j=new int; B、int &j=new int; j=10;
C、int &j=*new int(10); D、int &*j=new int; A 4、设有变量说明int a[3][4],(*p)[4]=a;则与表达式*(a+1)+2不等价的是( )
A、p[1][2] B、*(p+1)+2 C、p[1]+2 D、a[1]+2 D 5、关于类的访问特性的说明,下列说法正确的是( )
A 必须首先说明私有特性
B 成员数据必须说明为私有的
C 必须在每一个成员前单独标明访问特性
D 在同一个类中,说明访问特性的关键字可以多次使用 B 6、在定义类A时,下列( )不可以作为类的成员
A 指向类A的对象指针 B 类A的对象
C 指向另一个不同的类的对象指针 D 另一个不同类的对象
C 7、通常拷贝初始化构造函数的参数是( )。
A 某个对象 B 某个对象的成员名
C 某个对象的引用名 D 指向某个对象的指针名 B 8、设有如下类的定义:
class Ex{ int *p; public: ~Ex(){delete p;} Ex(int x=0){p=new int(x);}
};
则下列对象的定义中,不正确的是( )。 A、Ex ex; B、Ex ex1(50),ex2=ex1; C、Ex ex=Ex(50); D.Ex ex=50; D 9、下列说法中,( )是析构函数的特征
A 析构函数没有返回值,所以其类型定义为void
B 析构函数名与类名相同 C 析构函数必须有缺省的参数
D 析构函数不能重载
B 10、某结构体变量定义如下,对此结构体变量的成员的引用形式正确的是( )。
共8页,第1页
sstruct st{ int a,b; float x,y; }s1,*p; p=&s1; A、s1->a
B、p->b C、p.x
D、*p.y
二、填空题(每空2分,计60分) ? 基本概念题
1、结构体的缺省访问特性是 public ,而类的缺省访问特性 private 。 2、设有函数原型说明:void fun(int x,int y); 则指向该函数的指针变量f的定义形式为:void (*f)(int,int)。
3、当一个类对象的成员函数被调用时,该成员函数的this 指向调用它的对象。 4、当使用new运算符对指定类型对象动态分配内存并返回该类型的指针后,在对象使用完毕后必须使用delete运算符释放动态内存空间。 ? 阅读程序题
5、下列程序的运行结果是80。
[程序]
#include
if(k<=n)sub(x,n,3*k); *x+=k;
void main()
{ int x=0;sub(&x,27,2); cout< 6、下列程序的运行结果是 name is: man 。 [程序] #include char name[]=\ ptr=name; function(ptr); cout<<\ 共8页,第2页 } void function(char*ptr) { *(ptr+2)=*(ptr+2)+1; *(ptr+strlen(ptr)-1)='\\0'; } 7、执行下列程序后,程序的第一行输出为x=1,y=2,程序的第三行输出为 x=5,y=6 [程序] #include public: void get(int a,int b) { x=a; y=b; } void disp() { cout<<\}; void main() { sampl *p; p=new sampl[3]; p[0].get(1,2); p[1].get(3,4); p[2].get(5,6); for(int i=0;i<3;i++) delete p; } 8、执行下列程序后,程序的第三行输出为类C的构造函数,程序的第四行输出为2 3 4 ,程序的最后一行输出为类B的析构函数。 [程序] #include p[i].disp(); A(int x) { a=x; cout<<\类A的构造函数。\\n\int geta(){return a;} ~A(){cout<<\类A的析构函数。\\n\ 共8页,第3页 } }; class B{ int b; public: B(int x) { b=x; cout<<\类B的构造函数。\\n\ int getb(){return b;} ~B(){cout<<\类B的析构函数。\\n\}; class C{ int c; public: B b1; A a1; C(int x,int y,int z):b1(y),a1(x) { c=z; cout<<\类C的构造函数。\\n\ void show() {cout< { C c1(2,3,4); c1.show(); } 9、执行下列程序后,程序的第一行输出为25,程序的第二行输出为6,4,1。 [程序] #include int x; int fun(int); }; int x=3; int fun(int &x) { ++x; return 1; } int X::fun(int y) { x=y*y; ::x++; return x; } void main() { int x=5; X t; cout< cout< 共8页,第4页

