《面向对象程序设计C++》期末考试试卷(B)
《C语言程序设计》期末考试试卷B卷
广州轻工职业学校(大源校区)2015-2016学年第二学期《C语言程序设计》期末考试试卷(B卷)注意事项1、请首先按要求在试卷的标封处填写您的专业、姓名、学号和所在的班级名称;2、请仔细阅读各种题目的回答要求,在规定的位置填写您的答案;3、不要在试卷上乱写乱画,不要在标封区填写无关内容。
4、请将答案填写到答题卡的相应位置。
使用对象:15计算机设计班考试时间:120分钟考试方式:考试一、单项选择题(每小题1分,共计40分):1.C语言中运算对象必须是整型的运算符是A)%= B)/ C)=D)<=2.若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+1 B)a=b=c+2 C)int %3 D)a=a+7=c+b 3.若变量a,i已正确定义,且i已正确赋值,合法的语句是A)a= =1 B)++i;C)a=a++=5;D)a=int(i);4.若有定义:int a=7;float x=,y=;则表达式x+a%3*(int)(x+y)%2/4的值是A)B)2.750000 C)D)5.以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值f6.已知int i,a;执行语句i=(a=3,a++,- -a,a+4,a+5,++a);后,变量i的值为A)2 B)3 C)4 D)5 7.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为A)int B)float C)double D)不确定8.在C语言中,char型数据在内存中的存储形式是A)补码B)反码C)原码D)ASCII码9.字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为A)和01110111B)01000101和01100011C)00110101和00110111D)01100101和0110011110.不能进行++和- -运算的数据类型为A)指针B)整型C)长整型D)常量11.设有int x=11;则表达式(x++*1/3)的值是A)3 B)4 C)11 D)12 12.以下程序的输出结果是main(){ int a=21,b=11; printf("%d\n",- -a+b,- -b+a); }A)30 B)31 C)32 D)33 13.假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为A)17 B)16 C)15 D)1414.已知int a=6; 则执行a+=a-=a*a;语句后,a的值为A)36 B)0 C)-24 D)-6015.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是A)n=(n*100+)/B)m=n*100+,n=m/C)n=n*100+D)n=(n/100+)*16.sizeof(float)是A)一个双精度型表达式B)一个整型表达式C)一种函数调用D)一个不合法的表达式17.在C语言中,int,char和short三种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定18.以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C 语言表达式是A)x/y*z B)x*(1/(y*z))C)x/y*1/z D)x/y/z 19.下列关于复合语句和空语句的说法错误的是A)复合语句是由“{”开头,由“}”结尾的B)复合语句在语法上视为一条语句C)复合语句内,可以有执行语句,不可以有定义语句部分D)C程序中的所有语句都必须由一个分号作为结束20.下列关于字符串的说法中错误的是A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志B)′\0′作为标志占用存储空间,计入串的实际长度C)在表示字符串常量的时候不需要人为在其末尾加入′\0′D)在C语言中,字符串常量隐含处理成以′\0′结尾21.以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点22.以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义23.以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分24.C语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后25.以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面26.下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用27.以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符28.以下说法错误的是A)一个算法应包含有限个步骤B)在计算机上实现的算法是用来处理数据对象的C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现D)算法的目的是为了求解29.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A)有零个输入或多个输入B)高效性C)有穷性D)确定性30.10 下列关于C语言的说法不正确的是A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号C)注释可以出现在程序中任意合适的地方D)命令行后面不能加分号,命令行不是C语言的语句31.以下说法错误的是A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式B)计算机只能处理由0和1的代码构成的二进制指令或数据C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件D)每一种高级语言都有它对应的编译程序32.C语言中用于结构化程序设计的3种基本结构是A)顺序结构、选择结构、循环结构B)if,switch,breakC)for,while,do-whileD)if,for,continue33.C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型34.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符35.下列可用于C语言用户标识符的一组是A)void, define, WORDB)a3_b3, _123,CarC)For, -abc, IF CaseD)2a, DO, sizeof36.下面四个选项中,均是不正确的8进制数或16进制数的选项是A)016 0x8f 018 B)0abc 017 0xa C)010 -0x11 0x16 D)0a12 7ff -123 37.下列数据中,不合法的C语言实型数据的是A)B)123e3 C)D)38.在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A)a=20000+20000; B)a=4000*10; C)a=30000+10000; D)a=4000L*10L;39.若有说明语句:char c='\72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定40.有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为A)6 B)7 C)8 D)9二、多项选择题(每小题2分,共10分):1. 下面哪些说法是正确的()A.C语言是一门结构化程序设计语言B.它虽是高级语言,但由于能嵌入汇编,并实现低级别功能(硬件操作),C语言有时也叫中级语言C.C语言是实现面向对象编程最佳的程序设计语言D. C语言有移植性好等特点2.关于开发C程序,下面说法正确的是:()A)先用C语言编写程序源代码,然后通过解释器解释执行B)先用编写C源代码,然后编译成目标文件,连接生成可执行文件C)先用C语言编写程序源代码,然后编译成目标文件D)C语言的可移植性,是在源代码级的3.下面哪些是C的特点()A)解释执行,可调试B) 语言简洁、紧凑,使用方便、灵活;C)运算符极为丰富D)生成目标代码质量高,程序执行效率高E)可移植性好4.哪些错误是运行期错误()A)栈溢出B)表达式错误C )缺少;作为结束D )非法内存访问5.下列哪些错误是编译阶段错误( )A )栈溢出B )表达式错误C ).缺少分号(;)作为结束符D )非法内存访问(二)主观题部分三、填空题(每空1分,共18分):1.C 语言具有层次清晰的特点,它用函数作为程序模块以实现程序的 ,从而使得程序易于调试和维护,符合现代编程的风格,所以C 语言是一种 语言。
C++面向对象程序设计语言期末考试试卷
C++面向对象程序设计语言期末考试试卷一.选择题(每题1分,共10分)1.在C++中,常量’C’和”C”两者________。
A)完全不同B)存储长度相同C)类型相同D)存储值相同2.有二维字符数组char s[4][6]={“zhang”,”gao”,”tang”,”wang”},执行程序cout<<*s[2],屏幕上显示________。
A)gao B)tang C)g D)t3.若w=1,x=2,y=3,z=4,则条件表达式w>x?w:z>y?z:x的结果为_______。
A)4 B)3 C)2 D)14.设a和b为整型变量,执行语句b=(a=2+3,a*4),a+5;后a和b的值为_______。
A)5,10 B)20,25 C)5,25 D)5,205.如果整型变量a,b,c的值分别为5,4,3,则语句if(a>=b>=c) c++;执行后c的值是______。
A)5 B)4 C)3 D)2int i=10;执行下列语句后,i的值是_______。
{case 9: i+=1;case 10: i+=1;case 11: i+=1;case 12: i+=1;}A)10 B)11 C)12 D)136.执行以下程序:#include<iostream.h>void main(void){char c=0; cout<<c<<’\n’;}输出的结果是________。
A) ‘\0’B)语法错C)0 D) 一个空行7.设有类型说明:enum color{red,yellow=3,white,black};则执行语句cout<<white<<’\n’;后输出的结果是________。
A) 4 B) 3 C) 2 D) 18.对于下面的几个函数:void f(int x){……}//1int f(int y){……}//2int f(int i,int j){……}//3float k(int x) {……}//4_______是重载函数。
c语言程序设计期末试题B(含答案)
c语言程序设计期末试题B(含答案)c语言程序设计期末试题B(含答案)一单项选择题(每小题1分,共10分)1.以下4组用户定义标识符中,全部合法的一组是( A )A)_total clu_1 sumB)if -max turbC)txt REAL 3COMD)int k_2 _0012.以下程序的输出结果是( C )#includemain( ){int a = 1, b = 2, c = 3;printf(“%d”, c>b>a);}A) 2 B) 1 C) 0 D) 33.以下正确的叙述是( C )A) 在C语言中,main函数必须位于文件的开头B) C语言每行中只能写一条语句C) C语言本身没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误//C语言本身没有输入输出语句,其功能须通过调用相关函数来实现。
语言本身没有输入/输出语句其功能须通过调用相关函数来实现。
在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。
宏定义是由源程序中的宏定义命令完成的。
宏代换是由预处理程序自动完成的。
4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( A )A)scanf("%d",pa); B)scanf("%d",a);C)scanf("%d",&pa); D)scanf("%d",*pa);5.若有以下程序段,int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是( B )A) 0 B) 0.5 C) 1 D) 26.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是( D )A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0D)a>=10‖a<=07.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是( D )main( ){int a,b,c,d;scanf(“%d,%d,%d%d”,&a,&b,&c,&d);…}A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 48.有以下程序段main( ){int k=0;while(k=1) k++;}则while循环执行的次数是( A )////赋值语句,只要不是0,一直循环A) 无限次 B) 有语法错,不能执行C) 一次也不执行 D) 执行1次9.以下程序的输出结果是( C )#includemain( ){int a = 5, b = 4, c = 6, d;printf(“%d”,d=a>b?(a>c?a:c): b);}A) 5 B) 4 C) 6 D) 不确定10.下面是对数组a的初始化,其中不正确的是( D )A)a[5]={"ABCD"} B)a[5]={'A','B','C','D'}C)a[5]="" D)a[5]="ABCDE"//a[6]= "ABCDE"因为会自动加一个\0二、填空题(每空2分,共32分)1.结构化程序设计中的三种基本结构是 [1] 、 [2] 、 [3] 。
c面向对象程序设计期末考试题及答案
c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。
《面向对象程序设计》期末考核试题样例及解答
《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1. 源程序文件的缺省扩展名为( )。
A. B. C. D.2. x>0 5的相反表达式为()。
A. x<=0 5B. x<=0 5C. x>0 5D. x>0 53. 在下面的字符数组定义中,有语法错误的是( )。
A. a[20]=“”;B. a[]=“55.”;C. a[15];D. a[10]=’5’;4. 以下正确的函数原型语句是( )。
A. ( y)B. ( y)C. ();D. ( );5. 在下面存储类中,()的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 假定有“ { [40]; ;}; * ;”,则正确的语句是()。
A. (>,””);B. (,””);C. (*,””);D. ((*)->,””);7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性8. 在多文件结构的程序中,通常把含有()函数的文件称为()。
A. 主文件B. 实现文件C. 程序文件D. 头文件9. 在一个用链表实现的队列类中,假定每个结点包含的值域用表示,包含的指针域用表示,链队的队首指针用表示,队尾指针用表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。
A. B.C. 和D. 或10. 假定为一个类,则执行“ a, b(2), c[3], *;”语句时共调用该类无参构造函数的次数为( )。
A. 5B. 6C. 3D. 411. 引入友元的主要目的是为了()。
A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性12. 如果是类B在类A的基础上构造,那么,就称()。
A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类二、填空(每空1分,15小题,共18分)1. 语言是在语言的基础上发展起来的。
面向对象期末考试题及答案
面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
c面向对象程序设计考试试卷(详细讲解).doc
c面向对象程序设计考试试卷(详细讲解).docC++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共20 题,每题 1 分,共 20 分)1、下列关于 C++标识符的命名不合法的是C与 C#一样A. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:() Dint x=2;char w='a';float y=23.45f;double z=45.6712;则表达式 w*x+y-z 的结果类型是A. floatB. charC. intD. double6、对重载函数形参的描述中,错误的是 D 重载是重点A.参数的个数可能不同B.参数的类型可能不同C.参数的顺序可能不同D.参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是 DA. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、下列给字符数组进行的初始化中,不正确的是 DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是 CA.某个对象名 B.某个对象成员名C.某个对象的引用D.某个对象的指针名10、关于构造函数特点的描述中,错误的是 AA.定义构造函数必须指出类型(构造函数特点是无返回类型)B.构造函数的名字与该类的类名相同C.一个类中可定义0 至多个构造函数(不写构造函数,系统会自动生成一个空的构造函数)D.构造函数是一种成员函数11、下面程序的运行结果为 C#includeint add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;< bdsfid="108" p=""></add(x,y)<<endl;<>}int x=20,y=5;int add(int a,int b){int s=a+b;- 1 -return s;}A.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是 BA.常成员包含常数据成员和常成员函数两种B.常数据成员必须是公有的C.常数据成员要使用构造函数成员初始化列表进行初始化D.常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是 BA.友元函数不是成员函数B.友元函数只能访问类中私有成员C.友元函数破坏隐藏性,尽量少用D.友元函数说明在类体内,使用关键字friend14、如果有 int x,*p; float y,*q; 则下面操作正确的是 CA.p=x B.p=qC.p=&x D.p=&y16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 DA.数组的长度B.数组第一个元素的值C.数组所有元素的值D.数组第一个元素的地址17、对于动态分配内存空间描述正确的是 DA.使用 new 运算符分配的内存空间的长度必需是常量B.delete 运算符可以释放动态的存储空间和静态的存储空间C.由 new 分配的内存空间是不连续的D.delete 运算符只能释放由new 分配的动态存储空间18、能够释放对象所占资源的是() AA.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字 CA.static B.frendC.virtualD.public20、在 C++中串流类是在头文件 strstrea.h 中定义的,下列不属于串流类的是) CA.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9 题 16 空,每空 1 分,共 16 分)1、函数重载时,编译系统会根据 __形参的类型 __或__形参的个数__来区分。
《面向对象程序设计C 》期末试卷及标准答案
《面向对象程序设计C++》期末考试试卷(B)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( )就是错误的。
A.C语言就是C++语言的一个子集B.C语言与C++语言就是兼容的C.C++语言对C语言进行了一些改进D.C++语言与C语言都就是面向对象的2、已知:int m=10; 下列表示引用的方法中,( )就是正确的。
A.int &x=m;B.int &y=10;C.int &z;D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的就是( )。
A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(5,'#');D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的就是( )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的就是( )。
A.类就是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了( )次构造函数。
A.0B.1C.2D.37、有关析构函数的说法,不正确的就是( )。
A.析构函数有且仅有一个B.析构函数与构造函数一样可以有形参C.析构函数的功能就是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的就是( )。
《面向对象程序设计C 》期末试卷及答案
选择题1.在C++中,函数原型不能标识( D )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能2.在C++程序中,对象之间的相互通信通过( B )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现3.对于任意一个类,析构函数的个数最多为( B )A.0B.1C.2D.34.友元关系不能( A )A.继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率5.语句ofstream f(″SALARY.DAT″,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且( A )A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件6.下面说法正确的是( B )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline 定义7.可以用p.a 的形式访问派生类对象p 的基类成员a,其中a 是( D )A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员8.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针9. 派生类对象可访问基类中的什么成员( A )A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员10. 定义析构函数时,应该注意(C)A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句11. 如果类A被说明成类B的友元,则( D )。
java面向对象程序设计期末考试题及答案
java面向对象程序设计期末考试题及答案一、单项选择题(每题2分,共20分)1. 在Java中,哪个关键字用于声明一个类?A. classB. structC. interfaceD. enum答案:A2. 下列哪个是Java中的访问修饰符?A. publicB. privateC. protectedD. All of the above答案:D3. 在Java中,哪个关键字用于创建对象?A. newB. createC. makeD. instantiate答案:A4. Java中的继承是通过哪个关键字实现的?A. extendsB. inheritC. deriveD. superclass答案:A5. 在Java中,哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. abstract答案:A6. 下列哪个不是Java中的方法重载的条件?A. 方法名相同B. 参数列表不同C. 返回值类型不同D. 访问修饰符不同答案:C7. 在Java中,哪个关键字用于声明一个抽象方法?A. abstractB. virtualC. overrideD. final答案:A8. Java中的多态性可以通过哪种方式实现?A. 方法重载B. 方法覆盖C. 接口实现D. 继承答案:B9. 在Java中,哪个关键字用于声明一个内部类?A. innerB. nestedC. staticD. inner class答案:B10. Java中的垃圾回收机制是自动的吗?A. YesB. NoC. SometimesD. Depends on the JVM答案:A二、填空题(每题2分,共20分)1. Java中,一个类可以继承另一个类的______方法和属性。
答案:非私有2. Java中的______关键字用于声明一个类是不可被继承的。
答案:final3. 在Java中,______关键字用于声明一个类是抽象的。
《面向对象程序设计C--》期末试卷及标准答案集总解析
《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第8页上)】一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,(A )是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
>A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( A )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的^D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了(D )次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是( B )。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型。
c面向对象程序设计期末考试题及完整参考答案
3.distanee/400.0改为distanee/400或者distanee/400.0f;
4.public float ISwimmable.Run(float distanee)改为float ISwimmable.Run(float distanee)
7.类索引函数的参数类型必须为或。
8.类对接口方法的实现时,在方法名称之前加上接口名,这叫做对接口方法的实现,此时这个方法是这个
类的员,不能通过类的实例来访问。
9.作为一种特殊的函数成员,重载类的操作符时,被重载的操作符必须被声明为公有的和,并通过在关键
字operator后跟操作符来声明。
二、判断题(每小题1分,共5分)
public virtual float Run( float dista nce)
{
retur n dista nce/Speed;
}
public Automobile(float speed)
{
Speed = speed;
}
}
public class Amphicar:Automobile, ISwimmable
Console.WriteLine("{0}空中飞行1000公里需{1}小时", plane, plane.Run(1000)); //调用IFlyable接口Run方法
Con sole.ReadL in e();
}
}
public in terface IFIyable
{
public float Run( float dista nee);
《C C++程序设计》期末考试B卷及答案
封 线密《C/C++程序设计》课程期末考试试卷 ( B 卷)班级 考试形式 闭卷 考试时间 120 分钟考试学期 2020-2021学年第2学期 考试类型 考试 命题教师 题 号一 二 三 四 总分 分 值 30 20 25 25 100 得 分一、单项选择题(每小题2分,共30分)1.下列不属于C 语言基本数据类型的是( )。
A. intB. structC. charD. double 2. 以下运算符中,优先级最高运算符的是( )。
A. <= B. = C. % D. &&3. 以下用户能使用的正确的C 语言标识符是 ( )。
A .doubleB .!xy2 C. _abc D .3ab_c4. 设x 、y 和z 是int 型变量,且x =3,y =4,z =5,则下面表达式中值为0是 ( )。
A .x&&y||x-y B. x <=y C. x||y+z&&y<z D. !((x <y)&&!z||1)5. 设有定义:struct a{long int c[4]; float d[3]; char f[16]; }a1;则printf("%d\n",sizeof(a1));的输出是( )。
A .44B .36C .12D .32 6. 若定义:int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3],b; 则执行语句:b=p[5]; 后变量b 的值为( )。
A .5B .6C .8D .9 7. 设有:int a,*pa,*pb;int b[10] = { 0,1,2,3,4,5,6,7,8,9 };a=3;下列说法中不正确的是( )。
A . 若令pa=&a ,则printf("%0x",pa);输出的是变量a 在内存中的地址B . 若令pa=&a ,则printf("%d",*pa);输出的元素值为3C . 若令pb=&b ,则printf("%d",pb[3])输出的元素值为3D . 若令pb=b ,则printf("%d",pb[3])输出的元素值为3 8. 下列关于类的说法中正确的是( )。
(完整word版)《面向对象程序设计C》期末考试试卷
《面向对象程序设计C++》期末考试试卷一、选择题(每小题3分,共48分.)01、下列关于C++函数的叙述中,正确的是( C )。
A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( A )。
A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( D )。
A)内联函数B)重载函数C)模板函数D)虚函数04、下列关于运算符重载的叙述中,正确的是( B ).A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句cout〈〈x<<endl;错误的是描述是( D ).A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“〈<”称作提取运算符06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是()。
class MyBASE{ private: int k;public: void set(int n){ k=n;}int get()const{ return k;} };class MyDERIVED: protected MyBASE{protected: int j;public:void set(int m, int n){ MyBASE::set(m); j=n;}int get( )const { return MyBASE::get()+j;} };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型:Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( )。
《面向对象程序设计C 》期末试卷及标准答案(B)
《面向对象程序设计C++》期末考试试卷(B)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,()是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,()是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A.testDefaulParam(5); B.testDefaulParam(5,8);C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是()。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是()。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是()。
A.private 部分B.protected 部分C.public 部分D.以上都不对9、关于常数据成员的说法,不正确的是()。
《C++面向对象程序设计》期末考试试题
《C++面向对象程序设计》考试试题本试卷满分 100 分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。
一、单选题 (共 10 分,每题 1 分) 1. C++中解决命名冲突的机制是: D (A) 虚基类 (B) 虚函数 (C) 函数重载 2. 若类A 的一个对象所占的内存空间中包含虚函数表的入口地址 (A) 类 A 不能有静态数据成员 (C) 类 A 中至少有一个成员函数是虚的 3.任意一个类,析构函数的个数最多是: (A) 不限个数 (B) 1 (C) 4. 下列关于 this 指针的说法 ,哪个是正确的 (A) this 指针一定指向常量型数据 (C) 静态成员函数中也可以访问 (B) (D) (D) 名字空间 ,则: C 类 A 中公有的成员函数一定是虚的 类 A 的析构函数一定是虚的 (D) 3 5.在类定义中 , 为说明成员的访问权限 (A) 次数没有具体限定 (C) public 至少一次 面哪种定义方式是正确的,并且使得 (A) A * p = new A; (C) const A* p = new A;obj 是类 A 的一个对象,执行语句 (A) 类 A 的拷贝构造函数会被调用 (C) &aA 的值就是 &obj 6.7. (B) this 指向的数据不可更改 (D) this 指针本身可直接作为成员函数的返回值 A this 指针 , private, protected, public 可以出现次数为: (B) 每种至多一次 (D) 每种至少一次p 可以作为函数 void f( A* const pp); 的实参: A(B) A a; A* p = a; (D) A a; const A* p = a; const A& aA= obj; ,则下列说法正确的是: C (B) 类 A 的赋值函数会被调用(D) 语句 obj.f( ) ;等价于语句 aA.f( ) ; 面关于访问类 A 的私有数据成员的说法,错误的是: (A) (B) (C) (D) 9.类A 8. 类A 类A 类A 类A 的友元函数可以访问类 A 的私有成员。
C++面向对象程序设计(试题与答案)
模拟试题(1)一、判断对错题(10%)(对√,错×)()1.自动变量用堆方式创建,它与块共存亡。
()2.运算符+=是右结合的。
()3.表达式cout<<99的类型为int。
()4.++i是左值,但i++不是左值。
()5.Y[I][J]与*(*Y+I)+J不等价。
()6.从外部看类的private 成员和protected成员有区别。
()7.运算符&不可以重载。
()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。
()9.2.0/-3.0是一个正确的表达式。
()10.字符'\12'的ASCII为12。
二、填空题(20%)#include <iostream.h>typedef struct node{long data;node * next;};class stack{private:node * head;①__________stack();~stack();void push (②__________);③__________ pop();④__________ print();};stack::stack(){ head = new ⑤__________head->next = ⑥__________ }stack::~stack(){node * p;p = head;while (p){head = head->next;⑦__________p = head;}}void stack::push(long x){node * p = new node;p->data = x;p->next = head->next;⑧__________ = p;cout<<"Push" <<x<<" ok !"<<endl;}long stack::pop(){node *p = head->next;if(p!=NULL){long x = p->data;head->next = p->next;⑨__________cout<<"pop "<<x<<" ok !"<<endl;return x;}elsecout<<"Stack is empty !"<<endl;return 0;}void stack::print(){node * p = head->next;cout<<"Stack_Top"<<endl;while (p){cout<<p->data<<endl;⑩__________;}cout<<"Stack_bottom"<<endl;}三、简答题(20%)(按条列出论点)1.注解。
08学年第2学期面向对象分析与设计试卷(B)_答案
华南农业大学期末考试试卷(B卷)2008学年第2学期考试科目:面向对象分析与设计考试类型:(闭卷)考试时间:120 分钟学号姓名年级专业一、单项选择题(每题2分,共30分。
将正确答案填入下表)1.下面关于面向对象方法中消息的叙述,不正确的是()。
BA.键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息。
B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息。
C.应用程序之间可以相互发送消息。
D.发送与接收消息的通信机制与传统的子程序调用机制不同。
2.面向对象技术中,对象是类的实例。
对象有三种成分:()、属性和方法(或操作)。
AA.标识B.规则C.封装D.消息3~5:在UML提供的图中,可以采用(3)对逻辑数据库模型建模;(4)用于接口、类和协作的行为建模,并强调对象行为的事件顺序;(5)用于系统的功能建模,并强调对象间的控制流。
D、B、CA.用例图B.构件图C.活动图D.类图A.协作图B.状态图C.序列图D.对象图A.状态图B.用例图C.活动图D.类图6.采用面向对象技术开发的应用系统的特点是()。
AA.重用性更强B.运行数度更快C.占用存储量小D.维护更复杂7.继承反映了类间的一种层次关系,而()反映了一种整体与部分的关系。
BA.继承B.组合C.封装D.多态8.下列叙述中正确的是()。
CA.面向对象程序设计语言都不支持过程化的程序设计B.面向对象系统只可采用面向对象设计语言实现C.某些过程化程序设计语言也可实现面向对象系统D.面向对象程序设计语言不支持对成员变量的直接访问9.面向对象的特点主要概括为()。
CA.可分解性、可组合性、可分类性B.继承性、封装性、多态性C.抽象性、继承性、封装性、多态性D.封装性、易维护性、可扩展性、可重用性10.下列关于面向对象方法中描述中错误的是()。
CA.使用设计模式有助于在软件开发中应用面向对象技术B.选择面向对象程序设计语言时需要考虑开发人员对其的熟悉程度C.UML作为一种可视化建模语言需要与RUP开发过程同时使用D.目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法11.在类图中,那个类图中的类Order所生成的代码具有public class Order {public Customer recipient;}的形式?()AA. B.C D.12.关于用例与类的对比中()是错误的。
《C++面向对象程序设计》期末考试试题
《面向对象程序设计》考试试题✧本试卷满分100分;✧请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;✧请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。
一、单选题(共10分,每题1分)1.中解决命名冲突的机制是:D(A) 虚基类(B) 虚函数(C) 函数重载(D) 名字空间2.若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则: C(A) 类A不能有静态数据成员(B) 类A中公有的成员函数一定是虚的(C) 类A中至少有一个成员函数是虚的(D) 类A的析构函数一定是虚的3.任意一个类,析构函数的个数最多是:B(A) 不限个数(B) 1 (C) 2 (D) 34.下列关于指针的说法,哪个是正确的: D(A) 指针一定指向常量型数据(B) 指向的数据不可更改(C) 静态成员函数中也可以访问指针(D) 指针本身可直接作为成员函数的返回值5.在类定义中,为说明成员的访问权限, , 可以出现次数为:A(A)次数没有具体限定(B) 每种至多一次(C) 至少一次(D) 每种至少一次6.下面哪种定义方式是正确的,并且使得p可以作为函数f( A* );的实参:A(A) A * p = A; (B) A a; A* p = a;(C)A* p = A; (D) A a; A* p = a;7.是类A的一个对象,执行语句; ,则下列说法正确的是: C(A)类A的拷贝构造函数会被调用(B)类A的赋值函数会被调用(C)的值就是(D) 语句( );等价于语句( );8.下面关于访问类A的私有数据成员的说法,错误的是: C(A)类A的友元函数可以访问类A的私有成员。
(B)类A的友元类中的非静态成员函数可以访问类A的私有成员。
(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。
(D)类A中的非静态成员函数可以访问类A的私有成员。
9.类A中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句(100);成功,那么f 的函数原型不可以是:B(A)f( , 50 ); (B) f( ) ;(C) A * f( ); (D) A f( );10. 下面关于类的成员函数描述不正确的是:A(A) 静态成员函数内可以直接访问类的非静态成员数据(B) 静态成员函数内可以直接访问类的静态成员数据(C) 非静态成员函数可以直接访问类的非静态成员数据(D) 非静态成员函数可以直接访问类的静态成员数据(全局成员)二、判断正误,对于你认为错误的论述,说明原因或举出反例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
class C : public B { public: C(){cout<<"constructing C "<<endl;}< p=""> ~C(){cout<<"destructing C "<<endl;}};< p=""> int main() { C c1; return 0; } 四、编程题(共 27 分) 1、(10 分)已知复数类 Complex 的声明如下: class Complex {public: Complex(); //无参构造函数 Complex(double ); //转换构造函数 Complex(double, double);//有两个形参的构造函数 friend Complex operator+(Complex&, Complex&); //对“+” 运算符进行重载 friend ostream& operator<<(ostream&, Complex&); //对“<<” 运算符进行重载 friend istream& operator>>(istream&, Complex&); //对“>>” 运算符进行重载 private: double real,imag;
5、类的静态成员分为和。 6、运算符重载要求保持其原来的操作数个数、、和语法结构。 7、通过关键字可以声明模板,通过关键字指定函数模板的类型 参数,有几个类型参数就有几个类型关键字。 8、列出 C++中两种用户自定义的数据类型:、。 9、构造函数的作用是。 10、后置自增运算符“++”重载为类的成员函数(设类名为 A) 的形式为。 三、阅读下面 3 个程序,写出程序运行时输出的结果:(共 13 分) 1、#include using namespace std; 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);< p=""> if(a<c)fun(a,c);< p=""> if(b<c)fun(b,c);< p=""> } int main()
《面向对象程序设计 C++》期末考试试卷(B)
一、单项选择题(每小题 2 分,共 40 分) 1、关于 C++与 C 语言关系的描述中,()是错误的。 A.C 语言是 C++语言的一个子集 B.C 语言与 C++语言是兼容的 C.C++语言对 C 语言进行了一些改进 D.C++语言和 C 语言都是 面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数 被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型 B.参数的类型 C.函数名称 D.参数个 数 5、下列有关 C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成 员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有
}; 要求:1)写出该类的所有构造函数的类外定义代码。 (2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重 载函数的定义。 2、(17 分)下列 Shape 类是一个表示形状的抽象类,area( ) 为求图形面积的函数,total( )则是一个通用的用以求不同形状 的图形面积总和的函数。
的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用 的 6、已知 X 类,则当程序执行到语句 X array[3];时,调用了() 次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些存清理工作 D.析构函数无任何函数类型 8、类定义的容允许被其对象无限制地存取的是()。 A.private 部分 B. protected 部分 C.public 部分 D.以 上都不对 9、关于常数据成员的说法,不正确的是()。 A.常数据成员的定义形式与一般常变量的定义形式相同,只不 过常数据成员的定义必须出现在类体中 B.常数据成员必须进行初始化,并且不能被更新 C.常数据成员通过构造函数的成员初始化列表进行初始化 D.常数据成员可以在定义时直接初始化 10、运用运算符 delete 删除一个动态对象时()。 A.系统首先为该动态对象调用构造函数,再释放其占用的存
{ int a=12,b=89,c=56; exchange(a,b,c); cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;< p=""> return 0; } 2、#include using namespace std; class Date {public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month, day, year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y) {} Date::Date(int m,int d):month(m),day(d) {year=2009;} Date::Date(int m):month(m){day=1; year=2010; } Date::Date() {month=1; day=1; year=2010; }
void Date::display(){cout<<month<<" "<<day<<"="" "<<year<<endl;}<="" p=""> int main() { Date d1(12,31,2009); Date d2(12,31); Date d3(1); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; } 3、#include using namespace std; class A { public: A(){cout<<"constructing A "<<endl;}< p=""> ~A(){cout<<"destructing A "<<endl;}};< p=""> class B: public A { public: B(){cout<<"constructing B "<<endl;}< p=""> ~B(){cout<<"destructing B "<<endl;}};< p="">
B.系统首先释放该动态对象占用的存,再为其调用构造函数 C.系统首先为该动态对象调用析构函数,再释放其占用的存 D.系统首先释放动态对象占用的存,再为其调用析构函数 11、可以在类外用 p.a 的形式访问派生类对象 p 的基类成员 a, 其中 a 是()。 A.私有继承的公用成员 B.公用继承的私有成员 C.公用继承的保护成员 D.公用继承的公用成员 12、在公用继承方式下,有关派生类对象和基类对象的关系,不 正确的叙述是()。 A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针 13、设置虚基类的目的是()。 A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代 码 14、在 C++中,用于实现动态多态性的是()。 A.联函数 B.重载函数 C.模板函数 D.虚函数 15、不能说明为虚函数的是()。 A.析构函数 B.构造函数 C.类的成员函数 D.以上都不对 16、如果一个类至少有一个纯虚函数,那么就称该类为()。 A.抽象类 B.派生类 C.纯基类 D.以上都不对
17、下面关于友元的描述中,错误的是()。 A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承 18、下列运算符中,()运算符在 C++中不能被重载。 A.&& B.[] C.:: D.new 19、模板的使用实际上是将类模板实例化成一个()。 A.函数 B.对象 C.类 D.抽象类 20、假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句 为()。 A.MyClass(MyClass x) B.MyClass&(MyClass x) C.MyClass(MyClass &x) D.MyClass(MyClass *x) 二、填空题(前 16 个空,每空 1 分,后 2 个空,每空 2 分,共 20 分) 1、类和对象的关系可表述为:类是对象的,而对象则是类的。 2、在 C++中,三种继承方式的说明符号为、和,如果不加说明, 则默认的继承方式为。 3、如果只想保留公共基类的一个复制,就必须使用关键字把这 个公共基类声明为虚基类。 4、若要把 void fun()定义为类 A 的友元函数,则应在类 A 的定 义中加入语句。