logo资料库

c++练习题(带答案).doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
一、选择题
一、选择题 1. C++语言属于( C )。 A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言 2. 下面选项中不属于面向对象程序设计特征的是(C) 。 A)继承性 B)多态性 C)相似性 D)封装性 3. 可用作 C++语言用户标识符的一组标识符是( B )。 A) void define +WORD B) a3_b3 _123 YN C) for -abc Case D) 2a DO sizeof 4. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素 a[2][1]的值为(A)。 A) 0 B) 4 C) 8 D) 6 5. 下列情况中,哪一种情况不会调用拷贝构造函数 ( B ) A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时 D)函数的返回值是类的对象,函数执行返回调用者时 6. 以下哪一关键字可用于重载函数的区分( C ) A)extern B)static C)const D)virtual 7. 下列有关数组的叙述中,正确的是( B ) A)C++中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从 1 开始,至数组长度 n 结束 D)数组指针的语法形式为:类型名 *数组名[下标表达式]; 8. 下列有关继承和派生的叙述中,正确的是( C ) A)派生类不能访问通过私有继承的基类的保护成员 B)多继承的虚基类不能够实例化 C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 9. 实现运行时多态的机制是( A ) A)虚函数 B)重载函数 C)静态函数 D)模版函数 10. 若有下面的函数调用: 1 1
fun(a+b, 3, max(n-1, b)); 其中实参的个数是( A ) A)3 B)4 C)5 D)6 11. 下列关于 this 指针的说法正确的是( B ) A)this 指针存在于每个函数之中 B)在类的非静态函数中 this 指针指向调用该函数的对象 C)this 指针是指向虚函数表的指针 D)this 指针是指向类的函数成员的指针 12. 在下列关于 C++函数的叙述中,正确的是( C ) A)每个函数至少要有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 13. 下列运算符中,不能重载的是 ( C ) A)&& B)!= C). D)-> 14. 下面程序的输出结果是( B ) #include using namespace std; int i = 0; int fun(int n) { static int a = 2; a++; return a+n; } void main() { int k = 5; { int i = 2; k += fun(i); } k += fun(i); cout << k; } A)13 B)14 C)15 D)16 15. 下面的程序段的运行结果为( D char str[] = "job", *p = str; cout << *(p+2) << endl; ) A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’ 2 2
16. 下面程序的输出结果是( C ) #include using namespace std; class A { public: A (int i) { x = i; } void dispa () { cout << x << “,”; } private : int x ; }; class B : public A { public: B(int i) : A(i+10) { x = i; } void dispb() { dispa(); cout << x << endl; } private : int x ; }; void main() { B b(2); b.dispb(); } A)10,2 B)12,10 C)12,2 D)2,2 17. 下面程序的输出结果是( C ) #include using namespace std; class Base { public: Base(int i) { cout << i; } ~Base () { } }; class Base1: virtual public Base { public: Base1(int i, int j=0) : Base(j) { cout << i; } ~Base1() {} }; class Base2: virtual public Base { 3 3
public: Base2(int i, int j=0) : Base(j) { cout << i; } ~Base2() {} }; class Derived : public Base2, public Base1 { public: Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a) { cout << b; } private: Base2 mem2; Base1 mem1; }; void main() { Derived objD (1, 2, 3, 4); } A)134122 B)123412 C)14302012 D)143212 18. 下面程序的输出结果是( C ) #include using namespace std; class Base { public: virtual void f() { cout << “f0+”; } void g() { cout << “g0+”; } }; class Derived : public Base { public: void f() { cout << “f+”; } void g() { cout << “g+”; } }; void main() { Derived d; Base *p = &d; p->f(); p->g(); } A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+ 19. 下面程序的输出结果是( C ) #include using namespace std; class Sample { friend long fun (Sample s) { 4 4
if (s.x < 2) return 1; return s.x * fun(Sample(s.x-1)); } public: Sample (long a) { x = a; } private: long x; }; void main() { int sum = 0; for (int i=0; i<4; i++) { } sum += fun(Sample(i)); cout << sum; }A)12 B)16 C)10 D)34 20. 以下程序的输出结果是:(D ) #include using namespace std; int fun(char *s) { char *p=s; while (*p!='\0') p++; return (p-s); } void main(){ cout<
{ i++; if (i==10) break; if(i%2==0) cout<<’*’; } 执行这个程序段输出字符*的个数是(C) A. 10 B. 3 C. 4 D.5 22. 下列关于虚基类的描述中,错误的是(C) A. 使用虚基类可以消除由多继承产生的二义性 B. 构造派生类对象时,虚基类的构造函数只被调用一次 C. 声明 class B:virtual public A 说明类 B 为虚基类 D. 建立派生类对象时,首先调用虚基类的构造函数 23. 有下类定义 Class A { Char *a; Public: A():a(0){} A(char *aa) {//把 aa 所指字符串拷贝到 a 所指向的存储空间 A=___________________; Strcpy(a,aa); ~A() {delete [] a;} }; 正确的选择是(A) A. new char[strlen(aa)+1] B. char[strlen(aa)+1] C. char[strlen(aa)] D. new char[sizeof(aa)-1] 24. 假定 AA 为一个类,a 为该类私有的数据成员,GetValue( )为该类公有函数成员, 它返回 a 的值,x 为该类的一个对象,则访问 x 对象中数据成员 a 的格式为( X )。 A) x.a B) x.a() C) x->GetValue() D) x.GetValue( ) 25. 假定 AA 为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外 定义,则函数头为( A )。 A) int AA::a( ) B) int AA:a() 6 6
C) AA::a() D) AA::int a() 26. 有如下程序: #include using namespace std; class Test{ public: Test(){} ~Test(){cout<<'#';} }; int main(){ Test temp[2], *pTemp[2]; return 0; } 执行这个程序输出星号(#)的个数为(B )。 A)1 B)2 C)3 D)4 27. 有如下程序: #include using namespace std; class MyClass{ public: MyClass(int i=0){cout<<1;} MyClass(const MyClass&x){cout<<2;} MyClass& operator=(const MyClass&x){cout<<3; return *this;} ~MyClass(){cout<<4;} }; int main(){ MyClass obj1(1),obj2(2),obj3(obj1); obj1=obj2; return 0; }运行时的输出结果是( A)。 A)1123444 B)11114444 C)121444 D)11314444 28. 有如下程序: 7 7
#include using namespace std; class point { public: static int number; public: point() { number++;} ~point() {number--;} }; int point::number=0; void main() { point *ptr; point A,B; { } point *ptr_point=new point[3]; ptr=ptr_point; point C; delete[] ptr; cout<1) 8 8
分享到:
收藏