《最新C++复习题库.doc》由会员分享,可在线阅读,更多相关《最新C++复习题库.doc(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品资料C+复习题库.1下列字符列中,可作为C+语言程序自定义标识符是(B )。 A.switch B.file C.break D.do 2 运算符 +、=、=、% 中,优先级最低的运算符是( C )。 A. + B.= C.= D.% C3 设变量m,n,a,b,c,d均为0,执行(m = a=b)|(n=c=d)后,m,n的值是( )。 A.0,0 B. 0,1 C. 1,0 D. 1,14. 字符串”vmx43np102qu”的长度是( B )。A. 8 B. 9 C. 16 D. 17 5.设有代码“int a = 6;”,则执行了语句“a + = a - = a*a;”后,变量a的
2、值是( D )。A.0 B. -24 C. -40 D. 606. void main() int x=-1;do x=x*x;while(!x);下列说法正确的是( C )。A是死循环 B循环执行两次C循环执行一次 D有语法错误7.下面有关for循环的正确描述是( D )。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环体Dfor循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段( C )。x=3;do y=x-; if(!y) cout”x”; continue;cout”#”;whi
3、le(1=x=2);(1=x) = 1,0 bool 型A将输出# B将输出#*C是死循环 D含有不合法的控制表达式9.以下正确的说法是( D )。A用户若需要调用标准函数,调用前必须重新定义B用户可以直接调用所有标准库函数 C用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数10.在参数传递过程中,对形参和实参的要求是(B)。A函数定义时,形参一直占用存储空间B实参可以是常量、变量或表达式C形参可以是常量、变量或表达式D形参和实参类型和个数都可以不同11对数组名作函数的参数,下面描述正确的是(B)。A
4、数组名作函数的参数,调用时将实参数组复制给形参数组B数组名作函数的参数,主调函数和被调函数共用一段存储单元C数组名作参数时,形参定义的数组长度不能省略D数组名作参数,不能改变主调函数中的数据12. 若有语句int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则( B )不是对a数组元素的正确引用(其中0i10)。ApiB*(*(a+i)Cap-aD*(&ai)13. 以下程序的输出结果是( B )。#include void main()char s=12134211,*p;int v1=0,v2=0,v3=0,v4=0; v1 v2 v3 v4for (p=s;*p;p+) 2
5、 4 3 4switch(*p)case 1:v1+;case 3:v3+;case 2:v2+; default: v4+;coutv1,v2,v3,v4endl;A4,2,1,1 B4,7,5,8 C7,3,2,1D8,8,8,814. 下列声明结构体变量错误的是( C )。Astruct student B struct student int no; int no;char name16; char name16; st1,st2; ;struct student st1,st2;Cstruct student D struct student int no; int no;char
6、name16; char name16; ; ; struct st1,st2; student st1,st2;15. 对类的构造函数和析构函数描述正确的是( A )。A构造函数可以重载,析构函数不能重载B构造函数不能重载,析构函数可以重载C构造函数可以重载,析构函数也可以重载D构造函数不能重载,析构函数也不能重载16. 下面对于友元函数描述正确的是( C)。A友元函数的实现必须在类的内部定义 B友元函数是类的成员C友元函数破坏了类的封装性和隐藏性 D友元函数不能访问类的私有成员17. 派生类的对象对它的基类成员中( A )是可以访问的。A公有继承的公有成员 B公有继承的私有成员 C公有继承
7、的保护成员 D私有继承的公有成员18. C+类体系中,不能被派生类继承的有(A )。A构造函数 B虚函数 C静态成员函数 D赋值操作函数19以下( D )成员函数表示虚函数。Avirtual int vf(int); Bvoid vf(int)=0; Cvirtual void vf()=0; Dvirtual void vf(int) ;20. 下面对静态数据成员的描述中,正确的是( B )。A静态数据成员可以在类体内进行初始化B静态数据成员不可以在类体内进行初始化C静态数据成员不能受private控制符的作用D静态数据成员可以直接用类名调用?21. 继承具有( B ),即当基类本身也是某一
8、个类派生类时,底层的派生类也会自动继承间接基类的成员。 A规律性 B传递性 C重复性 D多样性22.若有以下定义,则释放指针所指内存空间的操作是 ( C )。 float r=news float10;A.delete r ; B.delete *r;C.delete r; D.delete r;23.若有以下定义,则对字符串的操作错误的是( C )。 char s10=”Program”,t=”test”; A.strcpy(s,t); B.coutt;24.在if语句中的表达式是( D )。A.只能是表达式 B.只能是关系表达式和逻辑表达式C.只能是逻辑表达式 D.可以是任意表达式25.在
9、用关键字class定义的类中,以下叙述正确的是( A )。A. 在类中,不作特别说明的数据成员均为私有类型B. 在类中,不作特别说明的数据成员均为公有类型C. 类成员的定义必须是成员变量定义在前,成员函数定义在后D. 类的成员定义必须放在类定义体内部 一、选择题 ()下列关于栈的叙述正确的是 DA)栈是非线性结构B)栈是一种树状结构C)栈具有先进先出的特征D)栈具有后进先出的特征 ()结构化程序设计所规定的三种基本控制结构是 CA)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数()结构化程序设计的一种基本方法是 DA)筛选法B)递归法C)归纳法D)逐步求精法(
10、)如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:BA) 选择B)投影C)连接D)并B) C+语言程序设计一、选择题()C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()A)面向过程B)面向对象C)安全性D)复用性()C+语言的跳转语句中,对于break和continue说法正确的是()A)break语句只应用与循环体中B)continue语句只应用与循环体中C)break是无条件跳转语句,continue不是D)break和continue的跳转范围不够明确,容易产生问
11、题()for(int x=,y=o;!x& &y=5;y+)语句执行循环的次数是()A)B)C)D)无次数()考虑函数原型void test(int a,int b=7,char=*),下面的函数调用中,属于不合法调用的是()A)test(5); B)test(5,8); C)test(6,#) D)test(0,0.*);(5)下面有关重载函数的说法中正确的是()A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表D)重载函数名可以不同;()下列关于构造函数的描述中,错误的是()A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C
12、)构造函数可以是内联函数;D)构造函数不可以重载()下面描述中,表达错误的是()A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承是基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的()应在下列程序划线处填入的正确语句是()#includeclass Base public:void fun()coutBase:fun;class Derived:public Base void fun()_ 示调用基类的函数fun(
13、)coutDerived:funfun();(9)有如下程序:includeclass BASEchar c;public:BASE(char n):c(n)virtualBASE()coutc;class DERIVED:public BASEchar c;public:DERIVED(char n):BASE(n+1),c(n)DERIVED()coutc;int main() DERIVED(X);return 0;执行上面的程序将输出()A)XY B)YX C)X D)Y(10)在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名
14、称是()A)fail B)eof C)bad D)good一:选择题1-5 :B B C C C6-10:D B C A B1、下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。2、下面( )项是对构造函数和析构函数的正确定义。Avoid X:X(), void X:X()BX:X(参数), X:X()CX:X(参数), X:X(参数)Dvoid X:X(参数), void X:X(参数)
15、答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。3、( )的功能是对象进行初始化。 A析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C+编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C+编译系统自动调用析构函数注销该对象并进行善后工作;4、下列表达方式正确的是( )。Aclass P B class Ppublic: public:int x=15; int x; void show()coutx; void show()cout0 的值 。 A) 为true B) 为false
16、 C) 与x的值相同 D) 与x的值相反 (3) 执行语句序列 int n; cinn; switch(n) case 1: case 2: coutX; case 3: case 4: coutY; break; default:coutx; if(x250) coutX; if(x250) coutY; else coutX; 时,不可能出现的情况是 。 A) 显示:X B) 显示:Y C) 显示:XY D) 显示:XX (5) 要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是 。 A) int vect=30,50,-88;
17、 B) int vect=30,50,-88,0,0; C) int vect5=30,50,-88; D) int vect5=30,50,-88,0,0; (6) 已知某应用系统中已经定义了函数fun,其原形是 int fun(char=A); 则下列函数中,可以在同一系统中加以重载的是 。 A) int fun(); B) int fun(char); C) int fun(char,int); D) int fun(char,double=0.0); (7) 若指针p定义为 const char *p=Luchy!; 则 。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B)
18、 p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (8) 已知数组A和指针p定义为:int A2010,*p;,要使p指向A的首元素,正确的赋值表达式是 。 A) p=&A 或 p=A00 B) p=A 或 p=&A00 C) p=&A0 或 p=A00 D) p=A0 或 p=&A00 (9) 已知函数func的原形是 double func(doouble *pd,int &ri); 变量x和y的定义是 double x; int y; 把x和y分别作为第一参数和第二参数来调用函数func,正确的
19、调用语句是 。 A) func(x,&y); B) func(&x,y); C) func(&x,&y); D) func(x,y); (10) 要使字符串变量str具有初值Lucky,正确的定义语句是 。 A) char str=L,u,c,k,y; B) char str5=L,u,c,k,y; C) char str =Lucky; D) char str 5=Lucky; (11) 已知某函数的一个形式参数被说明为MAT310,在下列说明中,与此等效的形参说明是 。 A) int MAT10 B) int MAT3 C) int MAT103 D) int MAT (12) 若指针p定
20、义为 char * =Luchy!; 则 。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (13) 在下列表达式中,与下标引用Aij不等效的是 。 A) *(A+i+j) B) *(Ai+j) C) *(*(A+i)+j) D) (*(A+i)j (14) 要使语句p=new double20;能够正常执行,变量p应定义为 。 A) double p20; B) double p; C) double (*p)20; D) double
21、 *p;(15) 执行下列语句序列 struct AA int ival; char cval; struct BB int ival; AA ra; struct CC int ival; AA ra; BB rb; CC rc=66,rc.ival+1,rc.ra.ival+1,69,70,71; coutrc.ival,rc.ra.ival,ival=rc.ival+1; rc.ra-cval=rc.ra-ival+1; coutrc.ival,ival,rc.rb.ra.ival; 后,显示在屏幕上的是 。 A) 67,69,70 B) 66,67,70 C) 67,68,69 D)
22、66,67,68 (19) 类的默认的拷贝构造函数 。 A) 在任何情况下都存在 B) 仅当未定义拷贝构造函数时存在 C) 仅当未定义有参构造函数时存在 D) 仅当未定义任何构造函数时存在 (20) 语句ofstream f(SALARY.DAT,ios:nocreate | ios:trunc); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且 。 A) 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 B) 若文件存在,将其截为空文件;若文件不存在,打开失败。 C) 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。 D) 若文件
23、存在,打开失败;若文件不存在,建立一个新文件。答案: 15: DDACA 610:CADBC 1115: ADADC 1620:DDBBBC+试题21下列变量名中,( )是合法的。A.56A B._abc C.d-Ptr D.while 2下列各种运算符中,( )优先级最高。A. + B.& C.= D.*= 3设变量m,n,a,b,c,d均为0,执行(m = a=b)&(n=c=d)后,m,n的值是( )。A.0,0 B. 0,1 C. 1,0 D. 1,14. 字符串”tv0whichn”的长度是( )。A. 4 B. 10 C. 9 D. 字符串有非法字符,输出值不确定 5. 设a=2,
24、b=3,c=2;计算a+=b*=(+b-c+)中a、b、c的值( )。A.8、6、2 B. 2、4、2 C.10、8、3 D. 5、3、36. 已知:int i=5,下列do-while循环语句的循环次数为( )。docouti-endl; i-;while(i!=0);A0 B1 C5 D无限7.下面关于循环语句的描述中,( )是错误的。A循环体内可以包含有循环语句B循环体内必须同时出现break语句和continue语句C循环体内可以出现选择语句D循环体内可以是空语句8.下面程序段( )。x=3;do y=x-; if(!y) cout”x”; continue;cout=1 & x=2)
25、;A将输出# B将输出#C是死循环 D含有不合法的控制表达式9.在函数的定义格式中,下面各组成部分中,( )是可以省略的。A函数名 B函数体 C函数数据类型说明 D函数参数 10.在函数的引用调用时,实参和形参应该是使用( )。A变量值和变量 B地址值和指针C变量值和引用 D地址值和引用11以下关于文件操作的叙述中,不正确的是( )。A打开文件的目的是使文件对象与磁盘文件建立联系B文件读写过程中,程序将直接与磁盘文件进行数据交换C关闭文件的目的之一是保证将输出的数据写入硬盘文件D关闭文件的目的之一是释放内存中的文件对象12. 若有语句int a10=0,1,2,3,4,5,6,7,8,9,*p
26、=a;则( )不是对a数组元素的正确引用(其中0i10)。ApiB*(*(a+i)Cap-aD*(&ai)13. 以下程序的输出结果是( )。#include void main()char s=abcdefbcde,*p=s; int v1=0,v2=0,v3=0,v4=0; for (p;*p;p+) switch(*p) case a:v1+;break; case b:v3+;break; case e:v2+;break; default: v4+; coutv1,v2,v3,v4endl;A1,2,2,5 B4,7,5,8 C1,5,3,10D8,8,8,814. 下列结构体定义,
27、正确的是 。A. record B. struct record int no; int no; char num16; char num16;float score ; float score ; ; C. struct record D. struct record int no; int no char num16; char num16 float score ; float score ; 15. 下列是构造函数的特点,( )是错误的。A构造函数是一种成员函数,它具有一般成员函数的特点B构造函数的名称与其类名相同C构造函数必须指明其类型D一个类中可定义一个或多个构造函数16. 关于友
28、元函数的描述中,( )是错的。A 友元函数是成员函数,它被说明在类体内 B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数17. 下列对派生类的描述中,( )是错误的。A 一个派生类可以作为另一个派生类的基类B 派生类至少应有一个基类C 基类中成员访问权限继承到派生类中都保持不变D 派生类的成员除了自已定义的成员外,还包含了它的基类成员18. C+类体系中,能被派生类继承的有( )。A构造函数 B虚函数 C友元函数 D析构函数19关于下列虚函数的描述中,( )是正确的。A虚函数是一个static存储类的成员函数 B虚函数是一个非成员
29、函数C基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D派生类的虚函数与基类的虚函数应具有不同的类型或个数20. 以下有关静态数据成员函数的叙述不正确的是( )。A静态成员函数属于整个类B对静态成员函数的引用不允许使用对象名C在静态成员函数中不能直接引用类的非静态成员D使用类名可以直接调用其静态成员函数21. 下列有关运算符重载的描述中,( )是正确的。A运算符重载可改变其优先级 B运算符重载不改变其语法结构 C运算符重载可改变其结合性 D运算符重载可改变其操作数的个数22.对new运算符的下列描述中,( )是错误的。A. 它可以动态创建对象和对象数组B. 用它创建对象数组时必须指