c++复习题 看了肯定挂科

来源:互联网 发布:mp3歌曲批量下载软件 编辑:程序博客网 时间:2024/06/10 08:52

一、单项选择题

1、下列各项中不能用于声明类的成员访问控制权限的关键字是(  D)。

A.private      B.protected      C.public      D.static

2、下列关于构造函数的说法错误的是(  B)。

A.构造函数的名字必须与类的名字相同

B.构造函数可以定义为void类型

C.构造函数可以重载、可以带有默认参数

D.构造函数可以由用户自定义也可以由系统自动生成

3、有如下类声明:

class student 

{

int age;

char *name; 

};

则student类的成员age是( B )。

A.公有数据成员       B.私有数据成员      

C.保护数据成员       D.私有成员函数

4、有如下类定义

#include<iostream.h>

class point

{

int x,y;

public:

point():x(0),y(0){}

point(int x1,int y1=0):x(x1),y(y1){}

};

若执行语句

point a(2),b[3],*c;

则point类的构造函数被调用的次数是( c。

A.2次      B.3次      C.4次      D.5次

5、下列数据类型不是C++语言基本数据类型的是(D   )。

A. 字符型    B.整型     C.浮点型    D.类

6、预处理命令在程序中都是以(  B  )符号开头的。

A. |       B. #      C. &      D. @

7、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(  C )的构造函数。

A.自己所属类、对象成员所属类、基类

B.对象成员所属类、基类、自己所属类

C.基类、对象成员所属类、自己所属类

D.基类、自己所属类、对象成员所属类

8、在定义一个派生类时,默认的继承方式为(  A )方式。

A. 私有继承       B. 非私有继承     

C. 保护继承       D. 公有继承

9、当保护继承时,基类的( B  )在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。

A.任何成员               B.公有成员和保护成员 

C.保护成员和私有成员     D.私有成员

10、对于公有继承,基类中的私有成员在派生类中将 (C )。

A. 能够直接使用成员名访问        B. 能够通过成员运算符访问

C. 仍然是基类的私有成员          D. 变为派生类的私有成员

11、类的析构函数是在( C )调用的。

A.类创建时     B.创建对象时    C.删除对象时      D.不自动调用

12、友元的作用是( A)。

A.提高程序的运用效率;       B.加强类的封装性;

C.实现数据的隐藏性;         D.增加成员函数的种类;

13、下列字符列中,合法的八进制常量是(D   )。

A.473     B.0931    C.0abc    D.0010

14、以下有关抽象类的叙述错误的是(  C )。

A.抽象类是至少包含一个纯虚函数的类;

B.抽象类不能实例化;

C.能创建抽象类的指针和引用,并且能指向抽象类的对象;

D.能创建抽象类的指针和引用,并且能指向抽象类的派生类的对象。

15、在关键字private后面定义的成员为类的(  A )成员。

A. 私有      B. 公用      C. 保护      D. 任何

16、C++源程序文件的缺省扩展名是(  A)。 

A..cpp        B..exe        C..obj        D..lik

17. 在循环语句中使用continue语句的作用是( A )。

A.结束本次循环   B.结束该层循环 

C.结束所有循环   D.结束程序执行

18、假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为( A )。

A.  a      B.  AA::a      C.  a()      D.  AA::a()

19、在int a=3,int *p=&a;中,*p的值是(  D  )

A.变量a的地址值             B.无意义

C.变量p的地址值             D.3

20、下列定义的变量名合法的是(C  )。

A.2FC     B.c-4a     C.INT    D.void

21、运算符&在不同场合下不能作为( D )。

A. 取址符  B. 位运算符 C. 引用符 D. 静态限定符

22、关于new运算符的下列描述中,(D )是错误的。

A.它可以用来动态创建对象和对象数组;

B.使用它创建的对象或对象数组可以使用运算符delete删除;

C.使用它创建对象时要调用构造函数;

D.使用它创建对象数组时必须指定初始值。

23、 静态数据成员初始化的位置是(C)。

A.类的外部   B.类的内部    C.主函数main中    D.视情况而定

24、this指针的正确说法是(  C )。

A.没有具体的意义。

B. 指向任意一个类对象。

C. 指向当前发生调用的类对象。

D.指向当前类本身。 

25、若char x=97;则变量x包含几个字符(A  )。

A.1个  B.2个   C.4个   D.8个

26、在一个类的定义中,包含有( D  )成员的定义。

A. 数据     B. 函数      C. 数据和函数    D. 数据或函数

27、C++语言是从早期的C语言逐渐发展演变来的,与C语言相比,它在求解问题方法上进行最大改进的是( B ) 

A.面向过程    B.面向对象     C.安全性    D.复用性

28、下列声明数组正确的是:(  C)

A. int char[];         B. char[]=“123”; 

C. char a[]=”hello”; D. int a[2][]={2,34,4,67,14,607};

29、关于数组正确的说法是( D )

A. 可以定义不定长度的数组。

B. 一个数组的元素类型可以不一致。

C.所有类型的数组都不能整体输入和输出。

D.数组名代表该数组的首地址。

30、下列字符串属于标识符的是(  A    )。

A、INT   B、5_student   C、long   D、!DF 

31、若一个类中含有纯虚函数,则该类称为( D  )

A.基类     B.纯基类    C.派生类     D.抽象类

32、下列描述中,表达错误的是(  B  )。

A.公有继承的基类中的public成员在派生类中仍是public的

B.私有继承的基类中private成员在派生类中仍是private的

C.公有继承的基类中的protected成员在派生类中仍protected的

D.私有继承的基类中public成员在派生类中是private的

33、下列有关重载函数的说法中正确的是(   C。

A.重载函数必须具有不同的返回值类型

B.重载函数参数个数必须相同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

34、以下叙述中正确的是(  A  )。

A.C++程序中注释部分可以出现在程序中任意合适的地方

B.花括号"{"和"}"只能作为函数体的定界符

C.构成C++程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C++语句之间的分隔符,不是语句的一部分

35、下列数据类型不是C++语言基本数据类型的是(  D  )。

A.字符型    B.整型     C.浮点型    D.数组

36、下列数中(  B  )是合法的八进制数。

A.0x1g       B.010      C.080      D.01b

37、在循环语句中使用break语句的作用是(  B )。

A.结束本次循环      B.结束该层循环    

C.结束所有循环      D.结束程序执行

38、下列声明数组正确的是(   C )。

A. int char[];          B. char[]={’a’,’b’,’c’}; 

C. char a[]=”hello”;  D. int a[2][]={2,34,4,67};

39、关于“引用”不正确的说法是( A  )。

A. 系统需要为引用变量分配单独的内存空间

B.引用变量与原变量本质是同一变量

C. 引用传递方式可以使形参回传给实参

D.引用变量必须进行初始化

40、关于new与delete说法不正确的是(  B )。

A. delete只能释放由new分配的内存

B.通过new分配内存肯定会成功

C.通过new分配的内存系统不会自动回收

D.如果delete不及时释放new分配的内存,则会发生内存泄露

41、下列关于this指针的正确说法是( C  )。

A.没有具体的意义              B. 指向任意一个类对象

C. 指向当前发生调用的类对象    D.指向当前类本身。 

二、填空题

1、C++类内部是通过____修饰符

private私有

public公有

protected受保护的_______来设置访问权限的。

2、可以通过____小括号__来改变运算优先级。

3、C++语言标示符是以字母或____下划线______开头的,由字母、数字、下划线组成。

4、进行字符串连接的函数是____strcat___。

5、在内存中,存储字符‘x’占用1个字节,存储字符串“x”要占用___2_____个字节。//有个回车

6、空字符串的长度是____1___。

7、结构化程序设计的三种基本结构是__顺序结构、选择结构、循环结构

8、十六进制的整型常量应以___ 0x__开头,八进制的整型常量应以__0____开头。

9、定义友元函数的关键词是__friend____。

10、如果函数的返回类型是非void型的,那么在函数体中必须要有__return___语句作为该函数的返回值。

11、所有c++程序共有的函数是_____main函数_。

12、类的成员函数可以在类体内定义也可以在类体外定义。在类体外定义时,函数名前要加______类名_和___::____。

13、int *p; *p=2;其中后面的*符号的作用是___取值___。

14、字符串的结束符是_“/0”______。

15、在C++语言中,char型数据在内存中的占用_____1___个字节。

16、把一个局部变量的生命期延长到程序结束的方法是在变量类型前加上关键字___exter  n__。

17、如果函数的返回类型是非void型的,那么在函数体中必须要有     return语句作为该函数的返回值。

18、int *p=new int; *p=2;其中后面的“*”符号的作用是  取值      。

19、多个关系表达式可以通过  and&&

     运算符连接起来。

20、在C++语言中,char型数据在内存中占用   1   个字节。

21、用于输出表达式的标准输出流对象是  cout       ,用于从键盘上为变量输入值的标准输入流对象是  cin       。

三、判断下列描述的正确性,正确的打√,错误的打×。

1、值传递方式不能把形参回传给实参。(  √ )

2、子类可以继承父类的所有成员。(  √  )

3、子类可以改造从父类继承的成员。( √   )

4、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。(  √   )

5、默认的继承方式是private。( √   )

6.指针变量中存储的是地址值。(  √  )

7. 任何非成员函数都不能访问类内数据成员。(×   )

8. 在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。(√   )

9. 静态函数可以访问类体外的非成员函数和全局变量。(  ×)

10. 函数重载的二义性会带来程序的错误。(√   )

11、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(  × )

12、一个数组定义后分配的空间大小是随机的。(   ×)

13、前缀自加与后缀自加效果是一样的。( ×  )

14、析构函数没有任何参数。  (  √ )

15、一个派生类可以有多个基类。( √  )

四、程序分析题:(12分)写出每题程序运行后的输出结果。

1、

#include<iostream.h>

void main()

{

int a=2,b=4,i=0,x;

  x=a>b&&++i;

cout<<"x:"<<x<<endl;

cout<<"i:"<<i<<endl;

}

X=0;i=0

2、

#include<iostream.h>

#include<iomanip.h>

class MyClass{

public:

MyClass(){cout<<'A';}

MyClass(char c){cout<<c;}

~MyClass(){cout<<'B';}

};

void main()

{

MyClass p1,*p2;

p2=new MyClass('X');

delete p2;

}

A X B B

3、

#include<iostream.h>

class s

int n;

 public:

s(int i) {n=i;}

  void print() {cout<<”1:n=”<<n<<endl;}  

void print() const {cout<<”1:n=”<<n<<endl;}

};

void main()

s a(10);

 s const b(20);

 a.print();

b.print(); 

}

4、

#include<iostream.h>

int n=1;

void fun();

void main()

{

n++;

fun();

if(n>0)

int n=5;

cout<<"block:n="<<n<<endl;

}

cout<<"main:n="<<n<<endl;

}

void  fun()

{

int n=10;

cout<<n<<endl;

}

五、程序填充题:在题中_____处填入正确的内容。

1、

#include <iostream.h>

class data 

{

int x;

public:

     data    (int x)   //定义构造函数

{

    x      =x;       //为数据成员赋值

}

};

class a

{

data d1;

public:

a(int x): data(x)      

{

cout<<"class a"<<endl;

}

};

class b:public a

{

data d2;

public:

b(int x):    a(x)        

{

cout<<"class b"<<endl;

}

};

void main()

{

b obj(5);

}

2、下面程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请填空。

#include <iostream.h>

float fun(float,float);

void main()

{

float x,y,z, sum=0    ;

cout<<"input x,y,z:";

cin>>x>>y>>z;

sum= __(x+y)/(x-y)+(z+y)/(z-y)____;

cout<<"sum="<<sum<<endl;

}

float fun(float a,float b)

{

float value;

value=__(a,b);____;

return      value    ;

}

3. #include<iostream.h>

 void main()

{

 int  a=10;

 int  *p=_&__a;

 int  b=20;

 ___*p=b;

}

六、程序设计题

1. 定义一个长度为5的实型数组,元素值通过键盘输入。实现以下功能:

(1)用下标法输出数组中的元素;

(2)将数组中下标为奇数的元素的值改为原值的三分之一,其余元素的值改为原值的平方根。将修改以后的数组中的元素以指针法输出。(7分)

#include<iostream.h>

#include<math.h>

void main()

{

  int a[5];

  cout<<"请输入五个整数"<<endl;

  for(int i=0;i<5;i++)

  {

   cin>>a[i];

   cout<<"a["<<i<<"]="<<a[i]<<endl;

   if((i+1)%2!=0)

   {

   double m;

      m=a[i]/3;

     cout<<" 下表为奇数除3 "<<m<<endl;

   }

   else

   { 

  int k=sqrt(a[i]);

       cout<<" 为偶数开方 "<<k<<endl;

   } 

   int *p=&a[i];

   cout<<"  "<<*p<<endl;

}

   

  }

  

  

2. 定义一个圆类(Circle),私有数据成员为半径(radius)、圆周长和面积,共有成员函数为输入半径;计算周长、面积;输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和复制构造函数。再主函数中创建2个对象,一个通过构造函数初始化,一个通过复制构造函数初始化,并输出三个圆对象的半径,周长和面积。(9分)

#include<iostream.h>

const double p=3.14;

class Circle

{

private:

double radius,c,s;

public:

Circle(double r=0)

{

radius=r;

cout<<"构造函数调用"<<endl;

cout<<"输入半径的直"<<endl;

cin>>radius;

}

double result()

{

    cout<<"半径="<<radius<<endl;

c=p*2*radius;

        cout<<"周长="<<c<<endl;

s=p*radius*radius;

cout<<"面积="<<s<<endl;

return radius;

}

Circle(Circle &p);

};

Circle::Circle(Circle &p)

{

  radius=p.radius;

  cout<<"拷贝构造函数调用"<<endl;

}

void f(Circle &p)

{

cout<<p.result()<<endl;

}

Circle g()

{

Circle a(1.0);

return a;

}

void main()

{

Circle a(2.0);

Circle b(a);

cout<<b.result()<<endl;

f(b);

b=g();

cout<<b.result()<<endl;

}

3.设计一个学生类,包含姓名,性别,年龄,籍贯,班级数据信息,定义3个类对象,请以友元函数实现输出年龄大于20的学生信息。

 

原创粉丝点击