1、c+练习题带答案一、选择题1. C+语言属于( C )。A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言2. 下面选项中不属于面向对象程序设计特征的是(C) 。A)继承性 B)多态性 C)相似性 D)封装性3. 可用作C+语言用户标识符的一组标识符是( B )。A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof4. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a21的值为(A)。A) 0 B) 4 C) 8 D) 65. 下列情况中,哪一种情况不会调用拷贝构造
2、函数 ( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6. 以下哪一关键字可用于重载函数的区分( C )A)extern B)static C)const D)virtual7. 下列有关数组的叙述中,正确的是( B )A)C+中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名下标表达式;8. 下列有关继承和派生的叙述中,正确的是( C )A)派生类不
3、能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9. 实现运行时多态的机制是( A )A)虚函数 B)重载函数 C)静态函数 D)模版函数10. 若有下面的函数调用:fun(a+b, 3, max(n-1, b);其中实参的个数是( A )A)3 B)4 C)5 D)611. 下列关于this指针的说法正确的是( B )A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this
4、指针是指向类的函数成员的指针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
5、); cout k;A)13 B)14 C)15 D)1615. 下面的程序段的运行结果为( D )char str = job, *p = str;cout *(p+2) endl;A)98 B)无输出结果 C)字符b的地址 D)字符b16. 下面程序的输出结果是( 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
6、 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,217. 下面程序的输出结果是( 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 Bas
7、e2: virtual public Base 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)134
8、122 B)123412 C)14302012 D)14321218. 下面程序的输出结果是( 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 f(); p-g(); A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19. 下面程序的输出结果是( C )#include using nam
9、espace std;class Sample friend long fun (Sample s) 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; i4; i+) sum += fun(Sample(i); cout sum; A)12 B)16 C)10 D)3420. 以下程序的输出结果是:(D )#include using namespace std;int
10、 fun(char *s) char *p=s;while (*p!=0) p+;return (p-s);void main()coutfun(abc)endl;A0 B. 1 C. 2 D. 321. 有如下程序段:int i=1;while(1)i+;if (i=10) break;if(i%2=0) coutGetValue() D) x.GetValue( )25. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。A) int AA:a( ) B) int AA:a() C) AA:a() D) AA:int a()26. 有
11、如下程序:#include using namespace std;class Testpublic:Test() Test()cout#;int main()Test temp2, *pTemp2; return 0;执行这个程序输出星号(#)的个数为(B )。A)1 B)2 C)3 D)427. 有如下程序:#include using namespace std;class MyClass public: MyClass(int i=0)cout1;MyClass(const MyClass&x)cout2;MyClass& operator=(const MyClass&x)cout3
12、; return *this; MyClass()cout4;int main()MyClass obj1(1),obj2(2),obj3(obj1);obj1=obj2;return 0;运行时的输出结果是( A)。A)1123444 B)11114444 C)121444 D)1131444428. 有如下程序: #include using namespace std;class point public: static int number; public:point() number+;point() number-; int point:number=0; void main()
13、point *ptr; point A,B; point *ptr_point=new point3; ptr=ptr_point; point C; delete ptr;cout1)#include using namespace std;int f(int);int main()int n,s; coutn; s= f(n) ; coutThe result is sendl; return 0; int f(int n) /递归法求立方和函数 if ( n=1 ) return 1; else return ( f(n-1)+n*n*n );3. 请将下列程序补充完整,使得输出结果为“
14、Destructor Derived Destructor Base”。#include using namespace std;class Base public: virtual Base () cout “Destructor Base” endl; ;class Derived : public Base public: Derived() cout “Destructor Derived” endl; ;void main () Base *pBase = new Derived; delete pBase ; 三、阅读程序,写出运行结果1.#include#includeusing
15、 namespace std;class CD char name20; int number;public: void Init(char* aa, int bb) strcpy(name,aa); number=bb; char* Getname () return name; int Getnumber () return number; void Output() cout name number endl; CD dx;void main() CD dy; dx.Init(歌唱祖国,30); dy.Init(义勇军进行曲,3*dx.Getnumber ()+5); dx.Output
16、(); dy.Output();歌唱祖国 30义勇军进行曲 952#include using namespace std; int f(int a) return +a; int g(int& a) return +a; void main() int m=0,n=0; m+=f(g(m); n+=f(f(n); coutm=mendl; coutn=nendl; 3. #include using namespace std;class Demopublic: Demo()coutdefault constructorn; Demo(const Demo &x)coutcopy const
17、ructorn;Demo userCode(Demo b)Demo c(b);return c;void main() Demo a,d; coutcalling userCode()n; d = userCode(a);执行上面的程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是多少次?五、编写程序1、编写函数计算y=1!+2!+3!.n! ,n作为参数传递,在主函数调用该函数并输出结果。2、编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最大值与最小值。测试结果。3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。要求有参数的构造函数及复制构造函数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1