分享
C++选择题汇总_题库 (电子版).doc
下载文档

ID:3263282

大小:125KB

页数:28页

格式:DOC

时间:2024-02-08

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
C+选择题汇总_题库 电子版 C+ 选择题 汇总 题库 电子版
重庆大学学长QQ1964907139,全校各院专业课考研资料有售 一二章 1.下列C++标点符号中表示行注释开始的是 C 。 A)# B); C)// D)} 2.下列字符串中可以用作C++标示符的是 A 。 A)_256 B)class C)delete D)5char 3.下列关于C++函数的描述中正确的是 C 。 A)主函数是程序的入口,它是由用户定义的函数调用。 B)函数是C++中面向对象程序设计框架的基本组成元素。 C)函数在调用前必须先被声明。 D)每个用户定义函数只能被其他函数调用一次。 4.下列关于C++关键字的说法中正确的是 D 。 A)关键字是用户为程序中各种需要命名的“元素”所起的名字。 B)关键字是对程序中的数据进行操作的一类单词。 C)关键字是在程序中起分割内容和界定范围作用的一类单词。 D)关键字是C++中预先定义并实现一定功能的一类单词。 5.每个C++程序都必须有且仅有一个 B 。 A)预处理命令 B)主函数 C)函数 D)语句 6.下面关于对象概念的描述中, A 是错误的。 A)对象就是C语言中的结构变量 B)对象代表着正在创建的系统中的一个实体 C)对象是一个状态和操作(或方法)的封装体 D)对象之间的信息传递是通过消息进行的 7.C++对C语言做了很多改进,下列描述中 D 使得C语言发生了质变,即从面向过程变成面向对象。 A)增加了一些新的运算符 B)允许函数重载,并允许设置默认参数 C)规定函数说明必须用原型 D)引进类和对象的概念 8.下面关于类概念的描述中, D 是错误的。 A)类是抽象数据类型的实现 B)类是具有共同行为的若干对象的统一描述体 C)类是创建对象的样板 D)类就是C语言中的结构体类型 9.C++语言是以 B 语言为基础逐渐发展而演变而成的一种程序设计语言。 A)Pascal B)C C)Basic D)Simula67 10.C++语言中规定函数的返回值的类型是由 D 。 A)return语句中的表达式类型所决定的 B)调用该函数式的主调用函数类型所决定的 C)调用该函数式系统临时确定的 D)在定义该函数式所指的数据类型所决定的 11.下列关于C++与C语言关系的描述中错误的是 C 。 A)C++是C语言的超集 B)C++是C语言进行了扩充 C)C++和C语言都是面向对象的程序设计语言 D)C++包含C语言的全部语法特征 12.下列字符串中可以用做C++标示符的是 A 。 A) _521 B)computer~1 C)case D)3var 13.面向对象程序设计思想的主要特征中不包括 D 。 A)封装性 B)多态性 C)继承性 D)功能分解,逐步求精 14.下列C++标点符号中表示一条预处理命令开始的是 A 。 A)# B)// C)} D); 15.下列关于C++类的描述中错误的是 C 。 A)类与类之间可以通过一些手段进行通信和联络 B)类用于描述事物的属性和对事物的操作 C)类与类之间必须是平等的关系,而不能组成层次关系 D)类与类之间可以通过封装而具有明确的独立性 16.下列C++标点符号中表示一条语句结束的是 A 。 A); B)// C)# D){ 17.下列C++标点符号中表示复合语句结束的标记符是 C 。 A)# B)// C)} D); 18.下列C++标点符号中表示复合语句开始的标记符是 A 。 A){ B)// C)} D); 19.下列关键字中, B 即在C语言中使用,又在C++语言中使用。 A)inline B)break C)private D)public 20.下列字符串中不可以用作C++标示符的是 C 。 A)_521 B)computer123 C)int D)flower 21.下列不正确的选项是 D 。 A)C++语言是一种面向对象的程序设计语言,它支持面向对象思想中的3个主要特征 B)标点符号是在程序中起分割内容和界定范围作用的一类单词 C)iostream是一个标准的头文件,定义了一些输入输出流对象 D)类与类之间不可以进行通信和联络 22.下列不正确的选项是 B 。 A)封装是一种信息隐藏技术 B)标识符是由字母、数字、下划线组成的字符串,必须以数字或下划线开头 C)编译是由源程序文件转换到目标文件的过程 D)一个C++程序可以认为是函数串 23.下列与流程控制有关的关键字是 A 。 A)goto B)static C)int D)sizeof 24.下列正确的选项是 A 。 A)继承是创建一个具有别的类的属性和行为的新类的能力 B)C语言支持面向对象的程序设计 C)空白符是一种可以被编译的符号 D)标示符不宜过长,一般设定为16个字符 25.下列关于C++语言的发展说法错误的是 C 。 A)C++语言起源于C语言 B)C++语言最初被称为“带类的C” C)在1980年C++被命名 D)在1983年C++被命名 27.下列表示引用的方法中, A 是正确的。 已知:int k=1000; A)int &x=k; B)char &y; C)int &z=1000; D)float &t=&k; 28.下列程序的执行结果为 A 。 #i nclude<iostream.h> void mian() { int n=10; int* pn=&n; int* &rn=pn; (*pn)++; cout<<"n="<<n<<endl; (*rn)++; cout<<”n=”<<n<<endl; } A) n=11 n=12 B) n=11 n=11 C) n=10 n=11 D) n=11 n=10 29.下列引用的定义中, B 是错误的。 A)int i; int &j=i; B)int i; int &j; j=i; C)float i; float &j=i; C)char d; char &k=d; 30. B 是给对象取了一个别名,他引入了对象的同义词。 A)指针 B)引用 C)枚举 D)结构 31.下列表示引用的方法中, A 是正确的。 已知:int m=10; A)int &x=m; B)int &y=10; C)int &z; D)float &t=&m; 32.下面程序的运行结果是 A 。 #i nclude<iostream.h> void fun(int &a,int &b) { int p; p=a; a=b; b=p; } void exchange(int &a,int &b,int &c) { if(a<b)fun(a,b); if(a<c)fun(a,c); if(b<c)fun(b,c); } void main() { int a,b,c; a=12; b=639; c=78; exchange(a,b,c); cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl; } A)a=639,b=78,c=12 B)a=12,b=639,c=78 C)a=639,b=12,c=78 D)a=78,b=12,c=639 33.下面的程序输出结果为 C 。 #include<iostream.h> void main() { int *ir; int i; ir=&i; i=17; cout<<"int i="<<i<<endl; cout<<"int ir="<<*ir<<endl; } A)int i=17 int ir=0 B)int i=0 int ir=17 C)int i=17 int ir=17 D)程序语法错误,没有输出结果 34.对定义重载函数的下列要求中, D 是错误的。 A)要求参数的个数不同 B)要求参数中至少有一个类型不同 C)要求参数个数相同时,参数类型不同 D)要求函数的返回值不同 35.下面函数调用语句中实参的个数是 A 。 xxx((v1,v2),(v3,v4,v5),v6); A)3 B)4 C)5 D)6 36.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是 D 。 A)参数个数 B)参数的类型 C)函数名称 D)函数的类型 37.若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 D 。 A)extern B)register C)auto D)static 38.在C++中,关于下列设置参数默认值的描述中,正确的是 C 。 A)不允许设置设置参数的默认值 B)设置参数默认值只能在定义函数时设置 C)设置参数默认值时,应该事先设置右边的再设置左边的 D)设置参数默认值时,应该全部参数都设置 39.若有下面函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a+b))); 在此函数调用语句中实参的个数是 A 。 A)3 B)4 C)5 D)6 40.下列对重载函数的描述中, A 是错误的。 A)重载函数中不允许使用默认参数 B)重载函数中编译时根据参数表进行选择 C)不要使用重载函数来描述毫无相干的函数 D)构造函数重载将会给初始化带来多种方式 41.在函数声明时,下列 D 项是不必要的。 A)函数的类型 B)函数参数类型 C)函数的名字 D)返回值表达式 42.在函数的返回值类型与返回值表达式的类型的描述中,错误的是 B 。 A)函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的 B)函数返回值的类型就是返回值表达式的类型 C)函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型 D)函数返回值类型确定了返回值表达式的类型 43.下面变量和函数说明: #i nclude<iostream.h> char ch='*'; void sub(int x,int y,char ch,double *z) { switch(ch) { case '+':*z=x+y;break; case '-':*z=x-y;break; case '*':*z=x*y;break; case '/':*z=x/y;break; } } 下面合法的函数调用语句是 B 。 A) sub(10,20,ch,y); B) sub(1.2,3.2,'+',&z); C) sub(sub(1,2,'+',&y),sub(3,4,'+',&x),'-',&y); D) sub(a,b,&x,ch); 44.下列程序的输出结果是 B 。 #include<iostream.h> void sub1(char a,char b) { char c; c=a; a=b; b=c; } void sub2(char *a,char b) { char c; c=*a; *a=b; b=c; } void sub3(char *a,char *b) { char c; c=*a; *a=*b; *b=c; } void main() { char a,b; a='A'; b='B'; sub1(a,b); putchar(a); putchar(b); a='A'; b='B'; sub2(&a,b); putchar(a); putchar(b); a='A'; b='B'; sub3(&a,&b); putchar(a); putchar(b); putchar('\n'); } A)ABABAB B)ABBBBA C)ABBABA D)ABABBA 45.下面程序的正确执行结果为 D 。 #include<iostream.h> int f(int); void main() { int a=2,i; for(i=0;i<3;i++) cout<<f(a)<<" "; cout<<endl; } int f(int a) { int b=0; static int c=3; b++; c++; return (a+b+c); } A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9 46.下面程序的正确执行结果为 C 。 #i nclude<iostream.h> void fun(char * *m) { m++; cout<<*m<<endl; } void main() { static char *a[]={"MORNING","AFTERNOON","EVENING"}; char * *n; n=a; fun(n); } A)为空 B)MORNING C)AFTERNOON D)EVENING 47.下面程序的输出结果 B 。 #i nclude<iostream.h> int fun(char *s) { char *p=s; while(*p!='\0') p++; return (p-s); } void main() { cout<<fun("ABCDEF")<<endl; } A)3 B)6 C)8 D)0 48.当一个函数无返回值时,函数的类型应定义为 A 。 A)void B)任意 C)int D)无 49.下面叙述中不正确的是 D 。 A)在函数中,通过return语句传回函数值 B)在函数中,可以有多条return语句 C)主函数名main()后面的一对圆括号中也可以带有形参 D)调用函数必须在一条独立的语句中完成 50.下列 D 的调用方式是引用调用。 A)形参是指针,实参是地址值 B)形参和实参都是变量 C)形参是数组,实参是变量 D)形参是引用,实参是变量 51.在C++中,函数原型不能标识 D 。 A)函数的返回类型 B)函数参数的个数 C)函数参数类型 D)函数的功能 52.下列标识符中, C 是文件级作用域的。 A)函数形参 B)语句标号 C)外部静态类标识符 D)自动类标识符 53.在传值调用中,要求 C 。 A)形参和实参类型任意,个数相等 B)实参和形参类型都完全一致,个数相等 C)实参和形参对应的类型一致,个数相等 D)实参和形参对应的类型一致个数任意 54.有一个int型变量,在程序中频繁使用,最好定义它为 A 。 A)register B)auto C)extern D)static 55.考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中不合法的 C 。 A)testDefaulParam(5); B)testDefaulParam(5,8); C)testDefaulParam(5,'#'); D)testDefaulParam(0,0,'*'); 56.采用函数重载的目的在于 D 。 A)实现共享 B)减少空间 C)提高速度 D)使用方便,提高可靠性 57.要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选 用 A 。 A)内联函数 B)重载函数 C)递归函数 D)嵌套函数 58.下面程序的输出结果是 D 。 #i nclude<iostream.h> void fun(int i); int main() { int n=2; fun(n); return 0; } void fun(int i) { static int x=1; int y=1; if(i>0) { ++x; ++y; cout<<x<<' '<<y<<' '; fun(i-1); } } A)语法错误,不能输出正确结果 B)2 2 2 2 C)2 2 3 3 D)2 2 3 2 59.下面程序的输出结果为 B 。 #i nclude<iostream.h> void prt(int *x,int *y,int *z) { cout<<+ + *x<<","<<+ + *y<<","<<*(z++)<<endl; } int a=10; int c=20; int b=40; void main() { prt(&a,&b,&c); prt(&a,&b,&c); } A)11,42,31 12,21,41 B)11,41,20 12,42,20 C)11,21,40 11,21,41 D)11,41,21 12,42,22 60.下面程序的正确运行结果为 C 。 #i nclude<iostream.h> fun(int a,int b) { static int m=1,i=2; i+=m+1; m=i+a+b; return(m); } void main() { int k=5,m=2,p; p=fun(k,m); cout<<p<<","; p=fun(k,m); cout<<p<<endl; } A)11,22 B)12,23 C)11,23 D)10,23 61.下面程序的输出结果是 D 。 #i nclude<iostream.h> void fun(int *s,int *y) { static int t=3; *y=s[t]; t--; } void main() { int a[]={1,2,3,4}; int i,x=10; for(i=0;i<4;i++) { fun(a,&x); cout<<x<<","; } cout<<endl; } A)1,2,3,4 B)0,0,0,0 C)4,4,4,4 D)4,3,2,1 62.下面程序的输出结果是 A 。 #i nclude<iostream.h> int fun(char *s) { char *p=s; while(*p!='\0') p++; return (p-s); } void main() { cout<<fun("ABCDEFGHIJKLMNIPQRST")<<endl; } A)20 B)6 C)19 D)0 63.下面程序的输出结果是 C 。 #i nclude<iostream.h> int x=10; void fun(int c); void main() { fun(x); cout<<"x="<<x<<endl; } void fun(int x) { x=1; } A)x=0 B)x=1 C)x=10 D)语法错误,不能输出正确结果 64.下面程序的执行结果是 B 。 #i nclude<iostream.h> void main() { void swap(); extern int a,b; a=3; b=10; swap(); cout<<"a="<<a<<",b="<<endl; } int a,b; void swap() { int temp; temp=a; a=b; b=temp; } A)a=3,b=10 B)a=10,b=3 C)a=temp,b=temp D)语法错误,不能输出正确结果 65.下列程序的输出结果是 A 。 #i nclude<iostream.h> void f() { static int i=15; i++; cout<<"i="<<i<<endl; } void main() { for(int k=0;k<2;k++) f(); } A)i=16 i=17 B)i=16 i=15 C)i=15 i=16 D)i=15 i=17 66.在横线处填上适当的语句 C ,使下面程序执行结果是13,18,23。 #include<iostream.h> int add(int x,int y=8); void main() { ; cout<<add(a)<<","; cout<<add(a,add(a))<<","; cout<<add(a,add(a,add(a)))<<endl; } int add(int a,int b) { int s=a+b; return s; } A)int a=3 B)int b=3 C)int a=5 D)int b=5 67.在横线处填上适当的语句A ,使下面的程序的执行结果是19 24 30 37 45。 #include<iostream.h> int fun(int a) { static int x=10; int y=1; x+=a; a++; y++; return(x+y+a); } void main() { int i=3; while(i<8) ; cout<<endl; } A)cout<<fun(i++)<<" " B)cout<<fun(i)<<" " C)cout<<fun(i++)<<" ," D)cout<<fun(i)<<" ," 68.在C++语言中,局部变量的隐含存储类型是 D 。 A)auto B)static C)extern D)无存储类型 69.下面程序的输出结果为 D 。 #include<iostream.h> int fun(char *s); int main() { cout<<fun("hello"); return 0; } int fun(char *s) { char *t=s; while(*t!='\0') t++; return(t-s); } A)语法错,不能输出正确结果 B)0 C)6 D)5 第三章一、选择题 1.有关类的说法不正确的是 D 。 A)类是一种用户自定义的数据类型. B)只有类中的成员函数才能存取类中的私有成员. C)在类中,如果不做特别说明,所指的数据均为私有类型. D)在类中,如果不做特别说明,所指的成员函数均为公有类型。 2.类A是类B的友元,类B是类C的友元,则____ D ______是正确的. A)类B是类A的友元 B)类C是类A的友元 C)类A是类C的友元 D)以上都不对 3.有下面类的说明,有错误的语句是____ A ______。 class X { A) int a=2; B) X(); public: C) X(int val): D) ~X(); }; 4.有关析构函数的说法不正确的是_____ B _____。 A) 析构函数有且仅有一个 B) 析构函数和构造函数一样可以有形参 C) 析构函数的功能是用来释放一个对象 D) 析构函数无任何函数类型 5.已知一个类X, _____C_____是定义指向类X成员函数的指针,假设类有3个公有成员: void f1(int), void f2(int)和int a. A)X*P B) int X::*pc=&X::a C) void(X::*pa)() D)X*p[10] 6.下列的各类函数中,____C______不是类的成员函数 A)构造函数 B)析构函数 C)友元函数 D)拷贝构造函数 7.下列定义中,x是一个类, ______B____是定义指向对象数组的指针p. A)x *p[4] B)x (*p)[4] C)(x*)p[4] D)x *p[] 8.已知p是一个指向类X数据成员m的指针,s是类X的一个对象。如果要给m赋值为3, __ C _____是正确的. A)s.p=3 B)s - >p=3 C)s.*p=3 D)*s.p=3 9.已知f1(int)是类X的公有成员函数,p是指向成员f1()的指针,采用它赋值, ____ B ______是正确的. A)p=f1 B)p=X::f1 C)p=x::f1 D)p=f1() 10.已知类X中的一个成员函数说明如下: Void Set(x &a); 其中,X &a的含义是______ C ____. A)指向类X的指针为a B)将a的地址赋给变量Set C)a是类X的对象引用,用来做为Set()的形参 D)变量X是a按位相与作为函数Set()的参数 11.一个类的友元函数能够访问该类的______ D ____. A)私有成员 B)保护成员 C)公有成员 D)所有成员 12.有关类和对象的说法不正确的是______ B ____. A)对象是类的一个实例 B)一个类只能有一个对象 C)任何一个对象只能属于一个具体的类 D)类与对象的关系和数据类型和变量的关系相似 13.下列静态数据成员的特性中,_____ D _____是错误的. A)说明静态数据成员时前边要加关键字static来修饰 B)静态数据成员在类体外进行初始化 C)引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符 D)静态数据成员不是所有对象所共有的 14.类模板的使用实际上是类模板实例化成一个具体的_____ A _____. A)类 B)对象 C)函数 D)模板类 15.通常拷贝构造函数的参数表是_____ C _____. A)某个对象名 B)某个对象的成员名 C)某个对象的引用名 D)某个对象的指针名 16.关于常数据成员的说法不正确的是_____ D _____. A)常数据成员的定义形式与一般常量的定义形式相同,只不过常数据成员的定义必须出现在类体中. B)常数据成员必须进行初始化,并且不能被更新 C)常数据成员通过构造函数的成员初始化列表进行初始化 D)常数据成员可以在定义时直接初始化 17.已知X类.则当程序执行到语句 X array[3]; 时,调用了____D______次构造函数. A)0 B)1 C)2 D)3 18.类模板的模板参数_____ D _____. A)只可作为数据成员的类型 B)只可作为成员函数的返回类型 C)只可作为成员函数的参数类型 D)以上三者皆可 19.下列_______D___不是构造函数的特征 A)构造函数的函数名与类名相同 B)构造函数可以重载 C)构造函数可以设置默认参数 D)构造函数必须指定类型说明 20.下列程序中说明的公有成员是______ D ____. class Location{ int X; public: void init(int initX,int initY); private: int Y; public: int GetX(); int GetY(); } A)X B)init(int initX,int initY) C)GetX(),GetY() D)B)和C)都是 21.类定义的内容允许被其他对象无限制地存取是______ C ____. A)private 部分 B)protected 部分 C)public 部分 D)以上都不对 22.关于下面程度段说法正确的是_____ A _____. class X { private: int n; punblic: X(X&); } X::X(X&x) {n=x.n} X obj1,obj2; obj2(obj1); A)语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2 B)语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1 C) X(X&x)也可以不使用引用参数而仍然是拷贝构造函数 D) X(X&x)不能访问对象的私有成员 23.this指针是C++实现_____B_____的一种机制. A)抽象 B)封装 C)继承 D)重载 24.下面程序段中是内联函数的是____ C ______。 chass location { private: int x ,y; public: void init(int initx,int inity) { x=initx; y=inity; } int getx(){return x;} int gety(); }; inline int location::gety(){return y;} A) init (int initx,int inity) B) getx(),gety() C) A)和B)都是 D) A)和getx() 25.关于对象成员的构造函数的调用顺序,说法正确的是_____ C _____。 A)与它们在成员初始化列表中给出的顺序相同 B)与析构函数的调用顺序相同 C)与它们在类中说明顺序相同 D)以上说法都不对 26.类摸板trmplate<class T>classX{……},其中,友元函数f()成为该类模板实例化的每个模板类的友元,则其说明应为_____ A _____. A)friend void f() B)friend void f(X<T>&); C)friend void A::f(); D)friend void C<T>::f(X<T>&); 27.运算符—>*的功能是( A )。 A )用来表示指向对象指针对指向类成员指针的操作。 B)用来表示对象类成员的操作。 C)用来表示指向对象指针对类成员的操作。 D)用来表示对象指向类成员指针的操作。 28.下列说明中 const char * ptr; ptr 应该是 C 。 A )指向字符的指针 B)指向字符的常量指针 C)指向字符串常量的指针 D)指向字符串的常量指针 29.下面关于友元的描述中,错误的是( D )。 A) 友元函数可以访问该类的私有数据成员。 B) 一个类的友元类中的成员函数都是这个类的友元函数。 C) 友元可以提高程序的运行效率。 D) 类与类之间的友元关系可以继承。 30.一个( C )允许拥护为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。 A) 函数模板 B)模板函数 C) 类模板 D)模板类 31.有关构造函数说法不正确的是( D ) A ) 构造函数的名字和类的名字一样。 B) 在创建对象时,系统自动调用构造函数 C) 构造函数无任何函数

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开