面向对象程序设计单元复习指导及解答(2)
C面向对象程序设计习题解答与上机指导(第二版)源程序.doc
C++面向对象程序设计习题解答与上机指导(第2版)习题参考答案源代码使用源程序的几点注意事项(1) 由于源程序在复制、编辑、解压缩等过程中可能引起部分符号(主要是标点符号,如分号、冒号、逗号、引号)的字体、半全角等发生变化,在编译时可能被检出语法错误,只要使用“替换”功能,纠正后即能顺利运行。
(2) 有的C++系统(如Visual C++6.0)没有完全实现C++标准,它所提供的不带后缀的.h 的头文件不支持友元运算符重载函数,在Visual C++6.0中编译会出错,这时可采用带后缀的.h头文件。
将程序中的#include<iostream>using namespace std;修改成#include<iostream.h>即可顺利运行。
第2章 C++基础【2.2】下面是一个C程序,改写它,使它采用C++风格的I/O语句。
#include<stdio.h>int main(){ int a,b,d,min;printf("Enter two numbers:");scanf("%d%d",&a,&b);min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ printf("No common denominators\n");return 0;}printf("The lowest common denominator is %d\n",d);return 0;}【解】#include<iostream>using namespace std;int main(){ int a,b,d,min;cout<<"Enter two numbers:";cin>>a;cin>>b;min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ cout<<"No common denominators\n";return 0;}cout<<"The lowest common denominator is "<<endl<<d;return 0;}【2.24】写出下列程序的运行结果。
《面向对象程序设计》复习(2)课件
《面向对象程序设计》课程复习〇、成绩构成1、平时成绩:15分(考勤+作业)2、实验成绩:25分(实验+课程设计)3、考试成绩:60分一、考试题型选择题30分填空题20分判断题15分简答5分程序分析20分程序编写10分二、选择题1.C++代码源文件的扩展名应为( B)A. cB. cppC.objD.exe2.函数声明为:char fun(int a); float fun(char *p); int fun(int &b); 则以下函数调用语句正确的是( C)A. fun(5)B. int b; fun(&b);C. char *p; fun(p);D. int a; fun(a)3.标准输入流对象cin无法读取( C)A. 数值B. 字符串C. 空白字符D. 字符4.不是C++关键字的是(C)A. mutableB. classC. FriendD. virtual5.通过( A)方法可以在现有类基础上定义新类。
A. 继承B. 引用C. 包含D.封装6.成员函数亦可声明为静态的,但是它不能直接访问类的(D)数据成员A. 私有B. 静态C. 常量D. 非静态7.若类B的定义中私有数据成员i为常数据成员,则( D )A. 数据成员i不能被一般的成员函数所访问B. 数据成员i的初始化可以在构造函数的函数体中实现//不能再函数体中,只能通过参数初始化表C. 数据成员i可以被常成员函数访问和赋值D. 以上均不对8.在编译时,将所调用的函数代码嵌入到主调函数中,这种嵌入到主调函数中的函数不能称为(D)A. 内置函数B. 内联函数C. 内嵌函数D. 嵌套函数9.存储以下数据,占用存储字节最多的是( D)A. NULLB. '0'C. "0"D. 0.010.面向对象的程序是( D)两者的组合A. 算法和数据结构B. 对象和函数C. 函数和算法D. 对象和消息11.如果调用带有默认参数的函数时缺少一个参数,则(C)参数就作为这一参数A. 第1个B. 中间1个C. 最后一个D. 系统随机选择12.假定A为一个类,则执行A a, b[2], *p=&a, c(*p);语句后,程序将要结束时,共调用该类析构函数的次数应为( C)A. 2B. 3C. 4D. 513.已有定义:char * p="ABC";则下面语句正确的是( D)A. *p="ABC";B. p[0]="A";C. p[2]='C';D. char c=p[1];14.已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明( B)A. f1和f2都是静态函数B. f1是静态函数,f2不是静态函数C. f1不是静态函数,f2是静态函数D. f1和f2都不是静态函数15.下列关于函数模板与类模板的描述中,不正确的是( D)A. 函数模板的实例化是由编译程序在处理函数调用时自动完成B. 类模板的实例化必须由程序员在程序中显式的指定C. 函数模板与类模板均可以显式调用D. 定义函数模板时可以使用多个类型参数,而类模板不可以16.对于语句cout>>a;,下列描述中不正确的是( C)A. “cout”是一个输出流对象B. 该语句错误使用了运算符C. “>>”称作插入运算符(提取)D. 该语句需要头文件iostream17.下面运算符中,不能被重载的运算符是( C)A. <=B. -C. ?:D. []18.以下不属于面向对象的程序设计语言的是( D )A. C#B. C++C. JavaD. C19.下列关于C++中运算符重载的描述中,错误的是( C)A. 运算符重载是对已有的运算符赋予多重含义B. 重载的运算符,其运算对象可以是自定义的数据类型C. 编译系统对重载运算符的选择,遵循函数模板(重载)的选择原则D. 运算符的重载实质上是函数的重载20.假定p所指对象的值为5,p+1所指对象的值为8,则执行“(*p)++;”语句后,p所指对象的值为(A)A. 6B. 9C. 5D. 821.运算符重载时不需要保持的性质是(B)A. 操作数个数B. 操作数类型C. 优先级D. 结合性22.已有定义:char *str="abcd";则下面语句正确的是( C )A. str[0]="a";B. str[1]='b';C. char c=str[0];D. *str="xyzw";23.已知:int k=6;则下列语句中能正确表示引用的是(B)A. int x=k;B. int &x=k;C. int &x=6;D. int &x=&k;24.下列虚基类的声明中,正确的是( A)A. class B:virtual public AB. class virtual B:public AC. virtual class B:public AD. class B:public A virtual25.已有定义virtual int area( )=0;下面关于该函数的解释中正确的是( A)A. 该函数是纯虚函数B. 该函数返回值为0C. 该函数通常在派生函数中声明D. 该函数的入口地址为026.作为类的成员函数重载一个运算符时,如果参数表为空,通常情况下,说明该运算符有( B)个操作数A. 0B. 1C. 2D. 3二、填空题27.重载函数在参数个数或参数类型上不同,但函数名称相同。
C++面向对象程序设计习题解答与上机指导(第二版)源程序.doc
C++面向对象程序设计习题解答与上机指导(第2版)习题参考答案源代码使用源程序的几点注意事项(1) 由于源程序在复制、编辑、解压缩等过程中可能引起部分符号(主要是标点符号,如分号、冒号、逗号、引号)的字体、半全角等发生变化,在编译时可能被检出语法错误,只要使用“替换”功能,纠正后即能顺利运行。
(2) 有的C++系统(如Visual C++6.0)没有完全实现C++标准,它所提供的不带后缀的.h 的头文件不支持友元运算符重载函数,在Visual C++6.0中编译会出错,这时可采用带后缀的.h头文件。
将程序中的#include<iostream>using namespace std;修改成#include<iostream.h>即可顺利运行。
第2章 C++基础【2.2】下面是一个C程序,改写它,使它采用C++风格的I/O语句。
#include<stdio.h>int main(){ int a,b,d,min;printf("Enter two numbers:");scanf("%d%d",&a,&b);min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ printf("No common denominators\n");return 0;}printf("The lowest common denominator is %d\n",d);return 0;}【解】#include<iostream>using namespace std;int main(){ int a,b,d,min;cout<<"Enter two numbers:";cin>>a;cin>>b;min=a>b? b:a;for (d=2; d<min; d++)if (((a%d)==0)&&((b%d)==0)) break;if (d==min){ cout<<"No common denominators\n";return 0;}cout<<"The lowest common denominator is "<<endl<<d;return 0;}【2.24】写出下列程序的运行结果。
面向对象程序设计复习要点
《面向对象程序设计》总复习第一部分各章复习要点第1章C++一、基本知识1.面向对象程序设计的基本概念●类、对象、属性、方法2.面向对象程序设计的特点●封装、继承、多态二、基本技能1.VC++6.0编程环境的使用●编辑、编译、运行、查错●调试由多个文件组成的程序2.cin和cout的使用第2章数据类型与表达式1.数据的存储●基本类型:整型、实型、字符型、布尔型●构造类型:结构、联合、枚举2.数据的表示●常量、变量3.符号的表示●运算符、表达式第3章C++控制结构一、基本知识1.语句概述●控制语句●函数语句●表达式语句●空语句2.语句要点●格式、执行过程、注意事项二、基本技能1.递推法程序设计●前项推后项●外加循环控制2.穷举法程序设计●用循环列出所有情况●找出满足条件的情况第4章函数一、基本知识1.函数的概念●函数的声明●函数的定义●函数的调用2.函数●数据传递:主函数→子函数,子函数→主函数3.变量的存储类型●动态●静态●寄存器4.变量的作用域●全局变量●局部变量二、基本技能1.嵌套函数设计●并列定义嵌套调用2.递归函数设计●由未知推向已知的递推公式●格式:If 已知else 递推3.重载函数设计●相同:函数名●不同:函数类型、参数(个数或类型)4.函数技巧●内联函数、外联函数●带默认参数值的函数●引用第5章数组、指针与字符串一、基本知识1.数组的概念●一维数组●二维数组●字符数组2.指针●如何获取各种数据的指针●如何用指针表示各种数据●用指针处理数据的优势二、基本技能1.排序●选择法排序●冒泡法排序2.字符串处理●输入●处理:比较、赋值、连接●输出3.指针●指针的定义●指针的获取●用指针表示数据第6章类和对象一、基本知识1.类2.对象3.构造函数4.析构函数5.拷贝构造函数6.友元7.组合类二、基本技能1.构造类●数据●函数(构造函数、析构函数、拷贝构造函数)2.友元函数●定义与使用3.静态成员●定义与使用4.对象数组5.对象指针第7章继承与派生一、基本知识1.继承2.继承方式3.继承的分类4.继承的二义性5.虚基类6.虚函数与纯虚函数7.抽象类二、基本技能1.构造派生类●构造函数、析构函数、拷贝构造函数2.继承要点●子类的对象如何使用基类的成员●子类的成员如何使用基类的成员第8章多态性一、基本知识1.多态性2.运算符重载二、基本技能1.单目运算符重载●前置运算符重载●后置运算符重载2.双目运算符重载3.运算符重载为友元函数●解决重载的二义性第9章模板一、基本知识1.函数模板2.类模板二、基本技能1.函数模板●定义和使用2.类模板●定义和使用第10章输入输出流一、基本知识1.控制格式2.文件二、基本技能文件编程要点●定义文件对象●打开文件●读写数据●关闭文件第二部分复习要点(一)基本概念1.类(构造函数、析构函数、拷贝构造函数)和对象2.面向对象程序的特点3.重载函数4.友元函数5.虚基类6.虚函数、纯虚函数7.抽象类8.模板函数、模板类9.文件类(二)基本技能1.构造类2.构造派生类(单继承、多继承)3.构造抽象类4.定义重载函数5.定义友元函数6.定义运算符的重载7.定义模板函数8.文件对象的使用第三部分主要问题(一)基本概念1.面向对象程序设计的特点是什么?2.类有哪些成分组成?3.构造函数、析构函数和拷贝构造函数的作用?4.重载函数、友元函数的作用?5.类的继承方式有哪些?对子类的对象有何影响?6.虚基类的作用?7.虚函数、纯虚函数的作用?8.运算符重载的作用?9.模板函数、模板类的作用?10.抽象类的作用?(二)基本技能1.面向对象程序设计的技巧有哪些?2.面向对象程序实现软件复用的方法有哪些?3.面向对象程序设计的多态性体现在哪些方面?。
《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案
《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。
A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。
C++有(B)关联。
A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。
A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。
成人教育 《面向对象程序设计》期末考试复习题及参考答案
面向对象程序设计复习题二一、填空1.程序的三种常见结构是、、,其中结构是程序的默认结构。
2.同名方法给出不同的实现,并通过参数类型或个数进行区分,称为。
3.和“继承”匹配的概念是。
4.由类构建对象的过程称为。
5.抽象类是含有的类。
6.实现软件复用有两种方式,分别为、、。
7.有定义const int *p,p称为。
8.通过继承产生的类称为。
9.virtual关键字在C++中有两个用处,分贝是,和。
10.方法重载和实现了多态性。
11.请给出C++外的另外一种支持面向对象设计语言。
12.类的三个要素是、、。
13.对象释放前执行的函数是。
二、名词解释1、构造函数2、对象3、运算符重载4、析构函数5. 面向对象6. 继承三、简答1.比较类和结构体?2.重载的意义?3.抽象类的作用和意义?4.组合与继承的区别?四、辩析1.任何父类对象都可以被子类对象替代。
2.public修饰符号破坏了数据的开放性。
3.private继承方式不能产生子类。
4.不能实例化的类一定是抽象类。
五、综合回答1.简述多态的实现机制。
2.谈谈多态的意义。
3.面向对象程序设计思想的优点和缺点。
面向对象程序设计复习题二答案一、填空(1)顺序(2)选择(3)循环(4)顺序(5)函数重载(6)抽象(7)实例化(8)纯虚函数(9)继承(10) 组合(9)和(10)不区分顺序(11)常量指针(12)派生类(13)虚函数(14)虚拟继承(13)和(14)不区分顺序(15)覆盖(16)Java或者C#(17)类的标识(18)类的状态(19)类的操作(17)(18)(19)不区分顺序(20)析构函数二、名词解释1、当类实例化时自动调用的成员函数,负责实现对象的初始化2、按照数据类型分配的内存空间,可以实现方法的调用3、将系统定义的运算符操作对象的类型扩展的过程,一般针对自定义类型4、对象空间释放之前自动调用的函数5、是程序设计思想,相对面向过程而言更加强调封装性6、两个类之间的一种关系,其中一个类的某个成员类型是另一个类三、简答1、C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public2、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
面向对象程序设计 复习资料2
面向对象程序设计复习资料(一)单项选择题1.Java是一门()语言。
A. 机器B. 汇编C. 面向过程的高级D. 面向对象的高级2. 具有相同属性和服务的一组对象的共同模板称为()。
A. 程序B. 类C. 代码D. 概念3.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为()。
A. privateB. protectedC. publicD. static4.Java语言中的switch语句属于()语句。
A. 数据输入B. 数据输出C. 分支处理D. 循环控制5.在类的定义中,实现接口的子句所使用的关键字为()。
A. extendsB. implementsC. publicD. abstract6.在派生类的定义中,继承父类的子句所使用的关键字为()。
A. extendsB. implementsC. publicD. abstract7.下列能表示栈(stack)s1长度的是( )。
A.s1.length()B.s1.lengthC.s1.sizeD.s1.size()8.下面的异常()为文件没有找到异常。
A. NullPointerExceptionB. FileNotFoundExceptionC. ArrayIndexOutOfBoundsExceptionD. IOException9.下列不是InputStream 类的子类的是()。
A. FileInputStreamB. ObjectInputStreamC、 FileOutputStream D. DataInputStream10.进行文件输入输出操作时,最常用的系统包是()。
A. B. java.ioC. java.utilD. java.awt11.类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个()。
A. 产品B. 元素C. 成分D. 实例12.使用JDK运行Java程序时使用的命令是()。
面向对象程序设计复习
面向对象程序设计复习面向对象程序设计(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据和操作这些数据的方法组合在一起的过程。
这样做可以隐藏对象的内部状态,只暴露出一个可以被外部访问的接口。
封装的目的是保护数据不被外部代码直接访问和修改,而是通过方法来进行操作。
继承继承允许一个类(子类)继承另一个类(父类或超类)的属性和方法。
这可以减少代码的重复,并且可以创建一个层次结构,其中子类可以扩展或修改父类的行为。
多态多态是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
这通常是通过方法重载(编译时多态)和方法重写(运行时多态)来实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面。
在面向对象程序设计中,这通常意味着创建抽象类和接口,它们定义了一组方法的签名,但不提供实现细节。
类和对象类是创建对象的蓝图或模板。
它定义了对象的属性和方法。
对象是根据类创建的实例,每个对象都有其自己的状态和行为。
构造函数和析构函数构造函数是一种特殊的方法,当创建新对象时自动调用,用于初始化对象的状态。
析构函数是类的另一个特殊方法,当对象被销毁时调用,用于清理资源。
访问修饰符访问修饰符控制类成员的可见性。
常见的访问修饰符包括public(公开的)、private(私有的)、protected(受保护的)和friend(友元)。
接口和抽象类接口定义了一组方法的签名,但不提供实现。
抽象类可以包含抽象方法,这些方法必须在子类中实现。
组合和聚合组合是一种特殊的“has-a”关系,其中一个对象包含另一个对象作为其属性。
聚合是一种更弱的“has-a”关系,其中一个对象可以与另一个对象相关联,但不是其属性。
面向对象程序设计复习总结题(含部分答案)
《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
面向对象程序设计单元复习指导及解答
2011春面向对象程序设计单元复习指导(3)一、填空题:1. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。
A. inB. inlineC. inLineD. InLiner2. 在关键字public后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何3. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。
A. x.aB. x.a()C. x->aD. x->a()4. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A. int AA::a()B. int AA:a()C. AA::a()D. AA::int a()5. 在多文件结构的程序中,通常把类的定义单独存放于()中。
A. 主文件B. 实现文件C. 库文件D. 头文件6. 一个C++程序文件的扩展名为()。
A. .hB. .cC. .cppD. .cp7. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为()。
A. intB. charC. AAD. AA*8. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值()。
A. 已经被改变B. 可能被改变C. 不变D. 受到函数调用的影响9. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )。
A. nB. n+1C. n-1D. n-210. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。
A. length+1B. first+lengthC. (first+length-1)%MSD. (first+length)%MS11. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给( )。
C-面向对象程序设计习题解答(全)Word版
《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。
第二章对C语言的基础扩充................................................................... 错误!未定义书签。
第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。
第四章类和对象的进一步解析.............................................................. 错误!未定义书签。
第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。
第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。
面向对象程序设计单元复习指导及解答
面向对象程序设计单元复习指导及解答2011春面向对象程序设计单元复习指导(3)一、填空题:1. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。
A. inB. inlineC. inLineD. InLiner2. 在关键字public后面定义的成员为类的()成员。
A. 私有B. 公用C. 保护D. 任何3. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。
A. x.aB. x.a()C. x->aD. x->a()4. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A. int AA::a()B. int AA:a()C. AA::a()D. AA::int a()5. 在多文件结构的程序中,通常把类的定义单独存放于()中。
A. 主文件B. 实现文件C. 库文件D. 头文件6. 一个C++程序文件的扩展名为()。
A. .hB. .cC. .cppD. .cp7. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为()。
A. intB. charC. AAD. AA*8. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x 的值()。
A. 已经被改变B. 可能被改变C. 不变D. 受到函数调用的影响9. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )。
A. nB. n+1C. n-1D. n-210. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。
A. length+1B. first+lengthC. (first+length-1)%MSD. (first+length)%MS11. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给( )。
面向对象程序设计复习题答案
面向对象程序设计复习选择题1. 一个设计得好的面向对象系统具有(B)特征。
A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。
A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。
A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是(C)A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A)。
A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和(A)。
A. +B. -C. *D. /7.拆箱是关于:(B)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:(A)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A)。
A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:(A)A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A)A、string类型B、double类型C、int类型D、 char类型12.下列类型中为值类型的是(C)A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:(C)A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是(C)。
面向对象考试复习大纲和题库最终2
⾯向对象考试复习⼤纲和题库最终2·⾯向对象考试复习⼤纲和题库:选择和填空:覆盖⾯:第⼀章Java语⾔简介(2-3分)第⼆章java编程基础(7-8分)第三章⾯向对象(2分)第13章类和对象(2-3分)第14-15章数组和字符串(6-8分)继承和多态(2-3分)接⼝(1-2分)GUI(3-5分)异常(1-2分)javaapplet(2-3分)多线程(2分)⼀、选择题(60题)-考试(15题,共15分)1.在JAVA编程中,Java编译器会将java程序转换为()。
a)字节码b)可执⾏代码c)机器代码d)以上所有选项都不正确2.在JAVA编程中,以下( b )命令⽤来执⾏java类⽂件。
a)javacb)javac)appletviewerd)以上所有选项都不正确3.在JAVA编程中,以下( c )命令能够将Java源⽂件转换为类⽂件。
a)appletviewerb)javac)javacd)以上所有选项都不正确4. MyProgram.Java被编译后,⽣成( b )。
a)MyProgram. Objb)MyProgram. classc)MyProgram.exed)MyProgram. bat5.下列选项中,属于Java语⾔的关键字的是()。
a)gotob)mallocc)extendd)FALSE6.在Java语⾔中,下⾯变量命名合法的有()。
a)variable123d)selg_,asd7. JAVA程序中,d()不能⽤来表⽰注释。
a)//注释b)/*注释*/c)/**注释*/d)/注释/8.在JAVA编程中,(a)可以实现跳转结构。
a)breakb)whilec)do-whiled)for9.以下的选项中能正确表⽰Java语⾔中的⼀个整型常量的是( b)。
A) 12. B) -20 C) 1,000 D) 4 5 610. 以下选项中,合法的赋值语句是( b )。
A) a = = 1; B) ++ i; C) a=a + 1= 5; D) y = int ( i );11. 若所⽤变量都已正确定义,以下选项中,⾮法的表达式是( c )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011春面向对象程序设计单元复习(2)一、选择题:1. 若用数组名作为函数调用的实参,传递给形参的是()。
A. 数组的首地址B. 数组中第一个元素的值C. 数组全部元素的值D. 数组元素的个数2. 采用重载函数的目的是()。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性3. 下面的标识符中,( )是文件级作用域。
A. 函数形参B.语句标号C.外部静态类标识符D.自动类标识符4. 当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( )。
A. 直接按系统设定的标准方式搜索目录B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C. 仅仅搜索源程序所在目录D. 搜索当前逻辑盘上的所有目录5. 在下面存储类中,()的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 预处理命令在程序中都是以( )符号开头的。
A. *B. #C. &D. @7. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。
A. int *p=new a[10];B. int *p=new float[10];C. int *p=new int[10];D. int *p=new int[10]={1,2,3,4,5}8. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为()。
A. int p=&m;B. int *p=&m;C. int &p=*m;D. int *p=m;9. 关于void 指针,下列说法正确的是()。
A. void 指针就是未指向任何数据的指针B. void 指针就是已定义而未初始化的指针C. 指向任何类型数据的指针可直接赋值给一个void 指针D. void 指针值可直接赋给一个非void 指针10. 假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加()。
A. 1B. 4C. sizeof(double)D. sizeof(p)11. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A. int *p=new int[30];B. int *p=new int(30);C. int *p=new [30];D. *p=new int[30];12. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句为()。
A. strcpy(book->title,”Wang Tao”);B. strcpy(book.title,”Wang Tao”);C. strcpy(*book.title,”Wang Tao”);D. strcpy((*book)->title,”Wang Tao”);13. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。
A. pb=b;B. pb=&b[0];C. pb=new int;D. pb=b[5];14. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句()。
A. delete p;B. delete *p;C. delete &p;D. delete []p;15. 软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性二、填空题1. 作为语句标号使用的C++保留字case和defaule只能用于________语句的定义体中。
2. 当在程序中执行到________语句时,将结束本层循环类语句或switch语句的执行。
3.在程序执行完________函数调用后,将结束整个程序的执行过程,返回到C++集成开发窗口。
4. 存储字符’a’和字符串”a”分别需要占用________和________个字节。
5. 字符串”a:\\xxk\\数据”的长度为________。
6. 一个二维字符数组a[10][20]能够存储________个字符串,每个字符串的长度至多为________。
7. 若需要把一个字符串”aaa”赋值到字符数组a中,则需要执行________函数的调用来实现。
8. 如果一个函数只允许同一程序中的函数调用,则应在该函数定义前加上__________C++保留字。
9. 在函数模板的参数中,用class修饰的参数称为__________参数。
10. 如果一个函数定义中使用了__________修饰,则该函数不允许被其它文件中的函数调用。
11.调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的__________。
12. C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和__________。
13. 若二维数组a有m列,设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中位置序号的公式为____________。
14. 一个指针类型的对象占用内存的________个字节的存储空间。
15. 假定一个数据对象为int*类型,则指向该对象的指针类型为_______。
16.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为________。
17.假定p所指对象的值为25,p+1所指对象的值为42,则执行*(p++)或*p++运算后,p所指对象的值为________。
18. 一个数组的数组名实际上是指向该数组________元素的指针,并且在任何时候都不允许________它。
19.重载一个函数的条件是:该函数必须在参数的________或参数对应的__________上与其它同名函数不相同。
20. 指针变量pv和pc定义为“void *pv =”Hello, word!”; char *pc;”,要将pv值赋给pc,则正确的赋值语句是pc=___________pv。
三、程序填空:1. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。
注意二进制数的存放是按照从低位到高位的次序进行的。
#include <iostream.h>void main(){int x;cout<<"输入一个整数:";cin>>x;int a[20],k=0,r;do {r=x%2;a[k++]=r;x=___(1)___;} while(___(2)___);for(--k;k>=0;k--) ___(3)___;cout<<endl;}(1) (2) (3)2. 对按从小到大排列的有序数组a[n]进行二分查找x的算法,若查找成功返回该元素下标,否则返回-1。
int BinarySearch(int a[],int x){int low=0, high=N-1; //定义并初始化区间下界和上界变量int mid; //定义保存中点元素下标的变量while(low<=high) {mid=___(1)___;if(x==a[mid]) ___(2)___;else if(x<a[mid]) high=mid-1;else ___(3)___;}return -1;}(1) (2) (3)3. 用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的算法。
void sort(char *table[], int size){for(int i=1; i<size; i++){char *p=table[i];for(int j=i-1; j>=0 ; j--)if(strcmp(p,table[j])<0) table[j+1]=___________; (1)else break;table[j+1]=__________; (2) }}(1) (2)四、写出程序运行结果1. #include<iostream.h>const int T=6;void main(){int i,j;for(i=1;i<=T;i+=2)for(j=2;j<=T;j+=2) {if(i+j<T) cout<<’+’;else cout<<’*’;}}运行结果:2. #include<iostream.h>class A {int a,b;public:A() {a=b=0;}A(int aa, int bb) {a=aa; b=bb;}int Sum() {return a+b;}int* Mult() {int *p=new int(a*b);return p;}};void main() {A x(2,3), *p;p=new A(4,5);cout<<x.Sum()<<’’<<*(x.Mult())<<endl; cout<<p->Sum()<<’’<<*(p->Mult())<<endl; }运行结果:3. #include<iostream.h>void f2(int& x, int& y){int z=x; x=y; y=z;}void f3(int* x, int* y){int z=*x; *x=*y; *y=z;}void main(){int x=10,y=26;cout<<"x,y="<<x<<", "<<y<<endl;f2(x,y);cout<<"x,y="<<x<<", "<<y<<endl;f3(&x,&y);cout<<"x,y="<<x<<", "<<y<<endl;x++; y--;f2(y,x);cout<<"x,y="<<x<<", "<<y<<endl;}运行结果:五、指出程序或函数的功能1. #include<iostream.h>void main(){int i,p=1,s=0;int N;cout<<"输入一个正整数:";cin>>N;for(i=1;i<=N;i++) {p*=i;s+=p;}cout<<s<<endl;}2. void fun5(char* a, const char* b){while(*b) *a++=*b++;*a=0;}六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。