C++复习题(2015)

  • 格式:doc
  • 大小:153.50 KB
  • 文档页数:32

《C++面向对象程序设计》复习资料一、填空题1.C++程序语言中程序从Main()位置开始执行。

2.设int a=7;float x=2.5,y=8.2;表达式x+a%3*(int)(y-x)%2/4的值是2.5 3.“判断整数x和整数y是否都为奇数”的C++语言表达式是x%2<>0&&y%2<>0。

4.将字符串s2连接到字符串s1后的函数调用是strcat(s1,s2)。

5设x=2,y=3,z=4;则z+=x++&&y++&&++z表达式执行后,x、y、z的值分别是3,4,6。

6.若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是3 。

7.已知字母a的ASCII码为十进制数97,ch为字符变量,则ch=’a’+’8’-’5’的值为d 。

8.设:int a[5]={10,20,30,40,50};int *p=&a[0];表达式++*p+*(a+3)的值是51 。

不懂9.若有宏定义: #define T(x,y,z) x*y*z/4cout<<T(3+4,2*4,4+4)<<endl;上述程序段运行结果为132 。

10.“判断整数a是否在闭区间[-10,10]之中”的C++语言表达式是a>=-10&&a<=10。

11.设有代码“static int a[3][4]={{1,2}, {0}, {4,6,8,10}};”则a[1][2]值为0 。

12.假定所有变量均已正确定义,下列程序段运行后x的值是3 。

a =b =c = 14; x = 35;if(!a)x--;else if(b);if(c)x = 3;else x = 4;13.类的成员函数可以在类体内定义,也可以在类体外定义。

14.如类中没有明确定义析构函数,清除对象的工作仍由析构函数来完成,原因是编译器自动提供缺省析构函数。

15.生成一个派生类对象时,先调用基类的构造函数,然后调用派生类的构造函数。

16.在继承关系中,一个派生类同时继承自多个基类的情形称为多重继承,一个派生类继承自一个基类的情形称为单继承。

不懂17.若在I/O流的输出中使用控制符setfill( )设置填充字符,应包含的头文件是iomanip.h。

18.在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问。

19在C++中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递。

不懂20.当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。

21.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。

对两个有相同名字的数据成员进行访问时,如果没有作用域分隔符限定时,对此数据成员的访问将出现歧义。

22.拷贝构造函数使用引用作为参数初始化创建中的对象。

23.在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变。

24.描述命题"A小于B或小于C"的表达式为A<B||A<C。

不懂25.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参的或缺省参数构造函数,否则应用程序会产生一个编译错误。

26.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象共享。

27.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与与最近的if 配对。

28.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是0 。

29.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。

30.在Visual C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同。

31.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~、析构函数没有参数、析构函数可以定义为虚函数。

不懂32.动态联编要满足两个条件,它们是被调用的成员函数是虚函数、用指针或引用调用虚函数。

不懂33.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。

34.在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,const成员函数不能修改类数据成员。

35.举出C++中两种用户自定义的数据类型:类、枚举。

36.C++中没有字符串类型,字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符\0 。

37.C++中没有输入输出语句,输入输出是通过输入输出库实现的,写出一条打印整型变量n的输出语句:cout<<n;38.举出C++中两种代码复用的方式:继承、复用。

39.C++程序有且只有一个main()。

40.若有变量定义int x = 7; float a = 2.5, c = 4.7;表达式a + (int)(x/3*(int)(c + 2)/2) % 4 的值是4.5。

41.“x或y中至少有一个小于z”的C++语言表达式是x<z || y<z。

???????42.将字符串s2拷贝到字符数组s1的函数调用是strcay(s1,s2)。

43.执行语句“x = (a = 4, b = a++);”后,变量x、a、b的值依次为4,5,4。

44.表述“x或y中有一个大于z”的C++语言表达式是x>z || y>z。

????????45.字符串str长度的函数调用是strlen(str)。

46.执行语句“y = (x = 3, z = --x);”后,变量的值依次为2,2,2。

不懂47.设#define a(x) x*x;cout<<a(4+6)<<endl;上述程序段运行结果为34。

48.设x为整型变量,表达数学关系式:13 < x < 19的C++语言表达式是11<x &&x>19。

49.设有代码“static int a[3][4]={{1,2}, {3}, {4,5,6}};”则a[1][1]值为0。

50.若有定义:char u; int b; float v; double d;则表达式u * b + d - v的值的类型为double。

51.假定所有变量均已正确定义,下列程序段运行后x的值是4。

a =b =c = 0; x = 35;if(!a)x--;else if(b);if(c)x = 3;else x = 4;52.类的构造函数的主要作用是对对象进行初始化53.C++将类继承分为单一继承和多重继承两种。

54.建立类对象时,为节省内存,系统一般只分配用于对象的内存。

55.派生类可以定义其基类中不具备的数据和操作。

56.operator是C++的一个关键字,它经常和C++的一个运算符连用,构成一个运算符函数名。

运算符函数的返回类型不能是void类型。

57.在继承机制下,当对象消亡时,编译系统先执行派生类的析构函数,然后再执行基类的析构函数。

58.C++文件的两种类型,分别是字符文件和二进制文件。

59.在保护继承关系下,基类有公有成员和保护成员将成为派生类中的保护成员,它们只能由派生类的成员来访问。

60.下面程序的运行结果是3。

#include <stdio.h>void main(){char a='a',b='j';float x;x=(b-a)/('F'-'A');//’j’-‘a’printf("%d\n",(int)(3.14*x));}61.下面程序的运行结果是2 5 8 11 14。

#include "iostream.h"void main( ){int i=1;while (i<=15){i++;if (i%3!=2) continue;else cout <<"i="<<i<<endl;}}62.下面程序的运行结果是________。

#include "iostream.h"class test{private:int num;float fl;public:test( );int getint( ){return num;}float getfloat( ){return fl;}~test( );};test::test( ){cout << "Initalizing default" << endl;num=0;fl=0.0;}test::~test( ){cout << "Desdtructor is active" << endl;}void main( ){test array[2];cout << array[1].getint( )<< " " << array[1].getfloat( ) <<endl; }Initalizing defaultInitalizing default0 0Desdtructor is activeDesdtructor is active不懂63.下面程序的运行结果是________。

#include <iostream.h>class A{public:A(){cout<<"A::A() called.\n";}virtual ~A(){cout<<"A::~A() called.\n";}};class B:public A{public:B(int i){cout<<"B::B() called.\n";buf=new char[i];}virtual ~B(){delete []buf;cout<<"B::~B() called.\n";}private:char *buf;};void fun(A *a){delete a;}void main(){A *a=new B(15);fun(a);}A::A() called.B::B() called.B::~B() called.A::~A() called.***64.下面程序的运行结果是________。