C++复习题库+C++试题库.doc_第1页
C++复习题库+C++试题库.doc_第2页
C++复习题库+C++试题库.doc_第3页
C++复习题库+C++试题库.doc_第4页
C++复习题库+C++试题库.doc_第5页
免费预览已结束,剩余64页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+习题1下列字符列中,可作为C+语言程序自定义标识符是( )。 A.switch B.file C.break D.do 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. 字符串”vmx43np102qu”的长度是( )。A. 8 B. 9 C. 16 D. 17 5.设有代码“int a = 6;”,则执行了语句“a + = a - = a*a;”后,变量a的值是( )。A.0 B. -24 C. -40 D. 606. void main() int x=-1;do x=x*x;while(!x);下列说法正确的是( )。A是死循环 B循环执行两次C循环执行一次 D有语法错误7.下面有关for循环的正确描述是( )。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环体Dfor循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段( 从右到左x=2为真1时)。x=3;do y=x-; if(!y) cout”x”; continue;cout”#”;while(1=x=2);(1=x) = 1,0 bool 型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=a;则( )不是对a数组元素的正确引用(其中0i10)。ApiB*(*(a+i)Cap-aD*(&ai)13. 以下程序的输出结果是( )。#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 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. 下列声明结构体变量错误的是( )。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 name16; char name16; ; ; struct st1,st2; student st1,st2;15. 对类的构造函数和析构函数描述正确的是( )。A构造函数可以重载,析构函数不能重载B构造函数不能重载,析构函数可以重载C构造函数可以重载,析构函数也可以重载D构造函数不能重载,析构函数也不能重载16. 下面对于友元函数描述正确的是( )。A友元函数的实现必须在类的内部定义 B友元函数是类的成员C友元函数破坏了类的封装性和隐藏性 D友元函数不能访问类的私有成员17. 派生类的对象对它的基类成员中( )是可以访问的。A公有继承的公有成员 B公有继承的私有成员 C公有继承的保护成员 D私有继承的公有成员18. C+类体系中,不能被派生类继承的有( )。A构造函数 B虚函数 C静态成员函数 D赋值操作函数19以下( )成员函数表示虚函数。Avirtual int vf(int); Bvoid vf(int)=0; C纯虚函数,不用定义virtual void vf()=0; Dvirtual void vf(int) ;20. 下面对静态数据成员的描述中,正确的是( )。A静态数据成员可以在类体内进行初始化B静态数据成员不可以在类体内进行初始化C静态数据成员不能受private控制符的作用D静态数据成员可以直接用类名调用?21. 继承具有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A规律性 B传递性 C重复性 D多样性22.若有以下定义,则释放指针所指内存空间的操作是 ( )。 float r=news float10;A.delete r ; B.delete *r;C.delete r; D.delete r;23.若有以下定义,则对字符串的操作错误的是( strcat(s1, s2):add s2 to s1s tail.)。 char s10=”Program”,t=”test”; A.strcpy(s,t);Copy t to s B.coutt;24.在if语句中的表达式是( )。A.只能是表达式 B.只能是关系表达式和逻辑表达式C.只能是逻辑表达式 D.可以是任意表达式25.在用关键字class定义的类中,以下叙述正确的是( )。A. 在类中,不作特别说明的数据成员均为私有类型B. 在类中,不作特别说明的数据成员均为公有类型C. 类成员的定义必须是成员变量定义在前,成员函数定义在后D. 类的成员定义必须放在类定义体内部参考答案:123456789101112131415BCCBDCDCDBBBBCA16171819202122232425CAADBBCCDA公共基础知识 一、选择题 ()下列关于栈的叙述正确的是A)栈是非线性结构B)栈是一种树状结构C)栈具有先进先出的特征D)栈具有后进先出的特征 ()结构化程序设计所规定的三种基本控制结构是A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数()结构化程序设计的一种基本方法是A)筛选法B)递归法C)归纳法D)逐步求精法()如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:A)选择B)投影C)连接D)并一:选择题:(1) D (2) C (3) D (4) BC+语言程序设计一、选择题()C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()A)面向过程B)面向对象C)安全性D)复用性()C+语言的跳转语句中,对于break和continue说法正确的是()A)break语句只应用与循环体中B)continue语句只应用与循环体中C)break是无条件跳转语句,continue不是D)break和continue的跳转范围不够明确,容易产生问题()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)构造函数可以是内联函数;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()_ file:/显示调用基类的函数fun()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+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()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(参数)答案: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 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; 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) 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,正确的调用语句是 。 A) func(x,&y); B) func(&x,y); C) func(&x,&y); D) func(x,y); (10) 要使字符串变量str具有初值Lucky,正确的定义语句是 debug. A)没有休止符。 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定义为 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 *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) 66,67,68 (19) 类的默认的拷贝构造函数 。 A) 在任何情况下都存在 B) 仅当未定义拷贝构造函数时存在 C) 仅当未定义有参构造函数时存在 D) 仅当未定义任何构造函数时存在 (20) 语句ofstream f(SALARY.DAT,ios:nocreate | ios:trunc); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且 。 A) 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件。 B) 若文件存在,将其截为空文件;若文件不存在,打开失败。 C) 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件。 D) 若文件存在,打开失败;若文件不存在,建立一个新文件。答案: 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,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);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=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. 下列结构体定义,正确的是 。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. 关于友元函数的描述中,( )是错的。A 友元函数是成员函数,它被说明在类体内 B 友元函数可直接访问类中的私有成员C 友元函数破坏封装性,使用时尽量少用D 友元类中的所有成员函数都是友元函数17. 下列对派生类的描述中,( )是错误的。A 一个派生类可以作为另一个派生类的基类B 派生类至少应有一个基类C 基类中成员访问权限继承到派生类中都保持不变D 派生类的成员除了自已定义的成员外,还包含了它的基类成员18. C+类体系中,能被派生类继承的有( )。A构造函数 B虚函数 C友元函数 D析构函数19关于下列虚函数的描述中,( )是正确的。A虚函数是一个static存储类的成员函数 B虚函数是一个非成员函数C基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D派生类的虚函数与基类的虚函数应具有不同的类型或个数20. 以下有关静态数据成员函数的叙述不正确的是( )。A静态成员函数属于整个类B对静态成员函数的引用不允许使用对象名C在静态成员函数中不能直接引用类的非静态成员D使用类名可以直接调用其静态成员函数21. 下列有关运算符重载的描述中,( )是正确的。A运算符重载可改变其优先级 B运算符重载不改变其语法结构 C运算符重载可改变其结合性 D运算符重载可改变其操作数的个数22.对new运算符的下列描述中,( )是错误的。A. 它可以动态创建对象和对象数组B. 用它创建对象数组时必须指定初始值C. 用它创建对象时要调用构造函数D. 用它创建的对象可以使用运算符delete来释放23.下列是为字符数组赋字符串的语句组,其中错误是( )。 A.char s数组名字是指针常量,不可改变10; s=”program”; B.char s=”program”;C.char s10=”Hello!”; D.char s10;strcpy(s,”hello!”);24.当调用函数时,实参是一个一维数组名a,则向函数传送的是( )。A.数组的长度 B.数组所有元素的值C.数组元素a0的值 D.数组元素a0的地址25. 下列有关类的说法不正确的是( )。A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似答案: 15: BADBC 610:DBBDC 1115:BBACC 1620:ACBCB 2125:BBADC1: 指出下列对定义重载函数的要求中,哪些是错误的提法。A 要求参数的个数相同。 B.要求参数中至少有一个类型不同。C 求函数的返回值不同。 D. 要求参数的个数相同时,参数类型不同。 答案:C2:下列运算符中,( )运算符在C+中不能重载。A.?:B.C.newD.&答案:A3:下面关于友元的描述中,错误的是( )。A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承答案:D4:下述静态成员的特性中,( )是错误的。A. 静态成员函数不能利用this指针B. 静态数据成员要在类体外进行初始化C. 引用静态数据成员时,要在静态数据成员名前加和作用域运算符D. 静态数据成员不是所有对象所共有的答案:D5:关于虚函数的描述中,( )是正确的。A. 虚函数是一个静态成员函数B. 虚函数是一个非成员函数C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型答案:D6:下列关于动态联编的描述中,错误的是()。 A动态联编是以虚函数为基础 B动态联编是运行时确定所调用的函数代码的 C动态联编调用函数操作是指向对象的指针或对象引用 D动态联编是在编译时确定操作函数的答案:D8:下面4个选项中,( )是用来声明虚函数的。 Avirtual Bpublic Cusing Dfalse答案:A9: 编译时的多态性可以通过使用( )获得。A虚函数和指针 B重载函数和析构函数 C虚函数和对象 D虚函数和引用答案:A10: 关于纯虚函数和抽象类的描述中,错误的是( )。 A纯虚函数是一种特殊的虚函数,它没有具体的实现 B抽象类是指具体纯虚函数的类 C一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类 D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出答案:B11: 下列描述中,( )是抽象类的特征。 A可以说明虚函数 B可以进行构造函数重载 C可以定义友元函数 D不能说明其对象答案:D12: 以下( )成员函数表示虚函数。 Avirtual int vf(int); Bvoid vf(int)=0; Cvirtual void vf()=0; Dvirtual void vf(int) ; 答案:D13: 如果一个类至少有一个纯虚函数,那么就称该类为( A )。 A抽象类 B虚函数 C派生类 D以上都不对答案:A14: 要实现动态联编,必须通过( )调用虚函数。 A对象指针 B成员名限定 C对象名 D派生类名 答案:A15: 下面描述中,正确的是( )。 Avirtual可以用来声明虚函数 B含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类抽象类不能创建对象,只能使用该类作为其他类的基类 C即使基类的构造函数没有参数,派生类也必须建立构造函数 D静态数据成员可以通过成员初始化列表来初始化答案:A16: 已知int a, *pa=&a;输出指针pa十进制的地址值的方法是( )。Acoutpa;Bcout*pa;Ccout&pa;Dcoutlong(&pa);答案:D17:关于read()函数的下列描述中,( )是对的。A. 函数只能从键盘输入中获取字符串B. 函数所获取的字符多少是不受限制的C. 该函数只能用于文本文件的操作中D. 该函数只能按规定读取所指定的字符数答案:D18:下列一维数组定义正确的是( 数组维数只能包含整形字面值常量、枚举常量或者常量表达式)。A.x=6;int numx; B.const int x=6;float ax;B.const float x=6;int bx; D.const int x=6;int cx;答案:B,19:下面选项中等价的是( )。Aint a23=1,0,2,2,4,5与int a2= 1,0,2,2,4,5;Bint a3= 1,0,2,2,4,5与in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论