首页 > 编程资源分享区 > C/C++测试题 > C++练习之一选择题
2006
05-29

C++练习之一选择题

一、选择题


1.字符串常量”ME”的字符个数是__________.


A) 4    B)  3    C)  2   D)  1


2.下面对枚举类型的描述正确的是__________.


A)枚举类型的定义为:enum {Monday,Tuesday,Wednesday,Thursday,Friday} Day;


B)在C++语言中,用户自定义的枚举类型的第一个常量的默认值是1.


C)可以定义如下枚举类型:enum {Monday,Tuesday,Wednesday=5,Thursday,Friday=5};.


D)以上说法都不正确.


3.定义如下枚举类型:enum Number{one=1, two=2, four=4, eight=8}; ,则下列语句正确的是__________.


A)Number num=1;                                         B)Number num=Number(20);  


C)Number num=Number(eight|0xFF);             D)枚举类型Number的取值范围是0到15.


4.下列对字符数组进行初始化的语句正确的是__________.


A)char a[] =”Hello”;                                        B)char a[][]={‘H’,’e’,’l’,’l’,’o’};


C)char a[5]= “Hello”;                                       D)char a[2][5]={ “Hello”,”World”};


5.下列描述正确的是__________.


A)不是每个C++程序都必须包含预处理命令#include<iostream.h>.


B)C++程序必须有return语句.


C)C++程序中的变量必须定义在主程序内部.


D)C++程序中所使用的符号常量可以不进行定义.


6.对于语句const int x=10;的描述正确的是__________.


A)该语句不允许定义为int const x=10;


B)在程序中可以重新对x赋值.


C)变量x不能使用++运算符.


D)const关键字只能用来修饰常量.


7.执行完C++程序中的下列三条语句之后c指向__________.


 int a,b,*c=&a;              int *p=c;             p=&b;


A)p         B)c         C)b         D)a


8.有如下定义语句:   typedef char *PCHAR; ,下列语句正确的是__________.


A)语句PCHAR p定义了一个字符变量


B)PCHAR p=’a’;


C)PCHAR p;  char  name[5]=”jone”;     p=name;               


D)PCHAR p=”hello”; cout<<p;的输出结果是’h’.


9.下列对变量的引用中错误的是__________.


A)int a; int &p=a;                                   B)char a; char &p=a;


C)int a; int &p; p=a;                      D)float a; float &p=a;


10.下列程序段循环__________次.


int x=-10;


while(++x){}


A)9                B)10              C)11                     D)无限


11.当一个函数无返回值时,函数的类型应为__________.


A)任意           B)void             C)int              D)char


12.一个函数带有参数说明时,则参数的默认值应该在__________中给出.


A)函数定义           B)函数声明           C)函数定义或声明              D)函数调用


13.在C++语言中函数返回值的类型是由__________决定的.


A)调用该函数时系统临时


B)return语句中的表达式类型


C)定义该函数时所指定的函数类型


D)调用该函数时的主调函数类型


14.若有以下函数调用语句:


f(m+n,x+y,f(m+n,z,(x,y)));


在此函数调用语句中实参的个数是__________.


A)    6            B)5         C)4         D)3


15.在C++语言中,对函数参数默认值的描述正确的是__________.


A)函数参数的默认值只能设定一个


B)一个函数的参数若有多个,则参数默认值的设定可以不连续


C)函数参数必须设定默认值


D)在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值


16.不能作为函数重载判断依据的是__________.


A)const                 B)返回类型           C)参数个数          D)参数类型


17.不能实现函数之间数据传递的是__________.


A)全局变量           B)局部变量           C)函数接口          D)函数返回值


18.一个函数为void f(int, char=’a’),另一个函数为 void f(int),则它们__________.


A)不能在同一个程序中定义


B)可以在同一程序中定义并可重载


C)一个定义在main函数中,一个定义在子函数中


D)以上说法均不正确


19.函数定义为Fun(int &i),变量定义 n=100,则下面调用正确的是__________.


A) Fun(20)            B) Fun(20+n)             C) Fun(n)                     D) Fun(&n)


20.对类的构造函数和析构函数描述正确的是__________.


A)构造函数可以重载,析构函数不能重载


B)构造函数不能重载,析构函数可以重载


C)构造函数可以重载,析构函数可以重载


D)构造函数不能重载,析构函数不能重载


21.假定MyClass为一个类,则执行MyClass a, b(2), *p; 语句时,自动调用该类构造函数__________次.


A)    2            B)3         C)4         D)5


22.下面对于友元函数描述正确的是__________.


A)友元函数的实现必须在类的内部定义


B)友元函数是类的成员函数


C)友元函数破坏了类的封装性和隐藏性


D)友元函数不能访问类的私有成员


23.在C++中,数据封装要解决的问题是__________.


A)数据的规范化           B)便于数据转换          


C)避免数据丢失           D)防止不同模块之间数据的非法访问


24.一个类的友元函数或友元类能够通过成员操作符访问该类的__________.


A)私有成员           B)保护成员           C)公有成员          D)所有成员


25.下面对静态数据成员的描述中,正确的是__________.


A)静态数据成员可以在类体内进行初始化


B)静态数据成员不可以被类的对象调用


C)静态数据成员不能受private控制符的作用


D)静态数据成员可以直接用类名调用


26.下面对静态数据成员的描述中,正确的是__________.


A)静态数据成员是类的所有对象共享的数据


B)类的每个对象都有自己的静态数据成员


C)类的不同对象有不同的静态数据成员值


D)静态数据成员不能通过类的对象调用


27.假定MyClass为一个类,则执行MyClass a[3],*p[2]; 语句时,自动调用该类构造函数_____次.


A) 2               B) 3                   C) 4                   D) 5


28.对于常数据成员,下面描述正确的是_____.


A)常数据成员可以不初始化,并且不能更新


B)常数据成员必须被初始化,并且不能更新


C)常数据成员可以不初始化,并且可以被更新


D)常数据成员必须被初始化,并且可以被更新


29.对下列语句正确的描述是_____.


const int *x;   //①


int * const x;   //②


A)语句①的含义是指针变量x不能更改


B)语句②的含义是指针变量x所指向的值不能更改


C)语句②的含义是指针变量x不能更改


D)语句①和②相同含义的不同定义方式


30.关于new运算符的错误的描述是_____


A)使用运算符new创建对象数组时必须定义初始值


B)使用运算符new创建对象时,会调用类的构造函数


C)运算符new可以用来动态创建对象和对象数组


D)使用new运算符创建的对象可以使用运算符delete删除


31.下列关于运算符重载的描述中,正确的是_____.


A)运算符重载可以改变运算符的操作数的个数


B)运算符重载可以改变优先级


C)运算符重载可以改变优先级


D)运算符重载不可以改变语法结构


32.C++语言建立类族是通过_____实现的。


A)类的嵌套                  B)虚函数              C)类的继承              D)抽象类


33.继承具有_____,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类成员.


A)规律性                     B)传递性              C)重复性          D)多样性


34.下列对基类和派生关系的描述中,错误的是_____.


A)派生类是基类的具体化


B)派生类是基类的子集


C)派生类是基类定义的延续


D)派生类是基类的组合


35.下列对派生类的描述中,错误的是_____.


A)一个派生类可以作为另一个派生类的基类


B)派生类至少有一个基类


C)派生类的缺省继承方式是private


D)派生类只继承了基类的公有成员和保护成员


36.下列关于继承的描述中,错误的是_____.


A)析构函数不能被继承      


B)派生类是基类的组合


C)派生类的成员除了它自己的 成员外,还包含了它的基类的 成员


D)派生类中继承的基类成员的访问权限到派生类保持不便


37.派生类的 对象对它的基类成员中_____是可以访问的.


A)公有继承的成员                     B)公有继承的私有成员             


C)公有继承的保护成员              D)私有继承的公有成员


38.派生类的构造函数的成员初始化列表中,不能包含_____.


A)基类的构造函数


B)派生类中子对象的初始化


C)基类中子对象的初始化


D)派生类中一般数据成员的初始化


39.关于多继承二义性的描述中,错误的是_____.


A)一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性


B)解决二义性的最常用的方法是对成员名的限定法


C)基类和派生类中同时出现的同名函数,也存在二义性问题


D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性


40.下面_____的叙述不符合赋值兼容规则.


A)派生类的对象可以赋值给基类的对象


B)基类的对象可以赋值给派生类的对象


C)派生类的对象可以初始化基类的引用


D)派生类的对象的地址可以赋值给指向基类的指针


41.下列程序中,编译时不会出错的语句是_____.


#include<iostream.h>


class Base


{


public:


       Base(){}


       Base(int i){ data=i; }


private:


       int data;


};


class Derived:public Base


{


public:


       Derived():Base(0){}


       Derived(int x):Base(x){}


};


void main()


{


       Derived d1(1);


       Base *pb,b1;


       pb=&d1;             //A


       d1=b1;               //B


       Base &refB=d1      


       Derived d2=*pb      //C


       Derived &refD=refB; //D


}


42.下列关于动态联编的描述中,错误的是_____.


A)动态联编是以虚函数为基础的


B)动态联编是在运行时确定所调用的函数代码的


C)动态联编调用函数操作是指向对象的指针或对象引用


D)动态联编是在编译时确定操作函数的


43.关于虚函数的描述中,正确的是_____.


A)虚函数是一个静态成员函数


B)虚函数是一个非成员函数


C)虚函数既可以在函数说明时定义,也可以在函数实现时定义


D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型.


44.实现运行时的多态性要使用_____.


A)重载函数           B)构造函数           C)析构函数          D)虚函数


45.要实现动态联编,必须通过_____调用虚函数.


A)对象指针           B)成员名限定              C)对象名                  D)派生类名


46.在派生类中重新定义虚函数时,除了_____方面,其他方面都必须与基类中相应的虚函数保持一致.


A)参数个数           B)参数类型           C)函数名称          D)函数体


47.下面关于构造函数和析构函数的描述,错误的是_____.


A)析构函数中调用虚函数采用静态联编


B)对虚析构函数的调用可以采用动态联编


C)当基类的析构函数是虚函数时,其派生类的构造函数也一定是虚函数


D)构造函数可以声明为虚函数


48.关于纯虚函数和抽象类的描述中,错误的是_____.


A)纯虚函数是一种特殊的虚函数,它没有具体的实现


B)抽象类是指具有纯虚函数的类


C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类


D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出


49.下面的描述,正确的是_____.


A)virtual可以用来声明虚函数


B)含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类


C)即使基类的构造函数没有参数,派生类也必须建立构造函数


D)静态数据成员可以通过成员初始化列表来初始化


50.在下面程序中,A,B,C,D四句编译时不会出现错误的是_____.


#include<iostream.h>


class Base


{


public:


       Base(){}


       Base(int c):count(c){}


       virtual void print() const=0;


private:


       int count;


};


class Derived:public Base


{


public:


       Derived():Base(0){}


       Derived(int c):Base(c){}


       void print() const { cout<<”Derived”<<endl;}


};


void main()


{


       Derived d(10);


       Base *pb;


       pb=&d;              //A


       Base &cb=d;


       Derived dd=*pb;     //B


       Derived &cd=cb;     //C


       Base bb=d;          //D


}    


51.模板式实现类属机制的 一种工具,其功能非常强大,它既允许用户构造类属函数,即_____;也允许用户构造类属类,即_____.


A)模板函数           B)函数模板           C)模板类             D)类模板


52.类模板的模板参数_____.


A)只可作为数据成员的类型                     B)只可作为成员函数的返回类型


C)只可作为成员函数的参数类型             D)以上三者皆可


53.下列对模板的声明,正确的是_____.


A) template <T>                                   B) template <class T1,T2>


C) template <class T1,class T2>      D) template <class T1;class T2>


54.cout是I/O流库预定义的_____.


A)    类                  B)    对象              C)       包含文件              D)       常量


55.与C语言printf(“Hello world\n”);语句功能相同的C++语句是_____.


A) cout>>”Hello world\n”;               B)cin>>”Hello world\n”;


C)cout<<”Hello world\n”;               D)cin<<”Hello world\n”;


56.已知int a,*pa=&a;,输出指针pa十进制的地址值的方法是_____.


A)cout<<pa;          B)cout<<*pa;             C)cout<<&pa;                 D)cout<<long(&pa);


 


C++练习之一选择题》有 4 条评论

  1. ningweidong 说:

    1.B

    2.A

    3.无答案

    4.A

    5.A

    6.C

    7.D

    8.C

    9.C

    10.B

    11.B

    12.B

    13.C

    14.D

    15.A

    16.B

    17.B

    18.D

    19.C

    20.A

  2. ningweidong 说:

    21.a

    22.c

    23.a

    24.d

    25.d

    26.a

    27.b

    28.b

    29.c

    30.a

    31.a

    32.c

    33.b

    34.b

    35.d

    36.d

    37.a

    38.a

    39.c

    40.b

  3. ningweidong 说:

    41.a

    42.b

    43.d

    44.d

    45.a

    46.d

    47.a

    48.c

    49.c

    50.a

     

  4. ningweidong 说:

    51.b d

    52.d

    53.c

    54.b

    55.c

    56.b

留下一个回复