面向对象程序设计作业

合集下载

面向对象程序设计作业(带答案)

面向对象程序设计作业(带答案)

人工智能学院面向对象程序设计作业Java语言基础年级专业 2019级软件工程专业学号姓名成绩一、选择题1.下列标识符中,正确的是(C)。

A.class B. 123_rr C. _lei D. test&122.下列( D )的选项可以正确表示八进制8。

A.0x8 B. 0x10 C.08 D. 0103. 以下哪个是十进制数17对应的十六进制正确表示?( D )A. 017B. x11C. 0x17D. 0X114.在Java中,不属于整数类型的是( A )。

A.double B. long C. int D. byte5.在Java中,关于标识符的说明,不正确的是(D )。

A.严格区分大小写;B.长度不限;C.不能用关键字和保留字作为标识符;D.可以包含空格6.给出下面代码的输出结果。

( D )public class ByteAdd {public static void main(String args[ ]){byte a=10;byte b=100;byte c;c=a+b;System.out.println(a+"+"+b+"="+c);} }A.输出零B.输出 10+100=110C. 编译时正确,运行时将产生错误;D.编译时将产生错误;二、程序阅读题1. 对于以下程序,运行“java Abs”,将得到什么打印结果?public class Abs{static int a=0x11;static int b=0011;static int c='\u0011';static int d=011;public static void main(String args[]){ System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}}179179类和对象年级专业 2019级软件工程专业学号姓名成绩一、选择题1. 为了在当前程序中使用ch4中的类,可以使用的语句是( A )。

面向对象程序设计大作业

面向对象程序设计大作业

面向对象程序设计大作业在当今的计算机科学领域,面向对象程序设计(ObjectOriented Programming,简称 OOP)已经成为了一种主流的编程范式。

它为我们提供了一种更加直观、灵活和可维护的方式来构建软件系统。

本次大作业旨在深入探讨和实践面向对象程序设计的核心概念和技术,通过实际的项目开发,提升我们对 OOP 的理解和应用能力。

面向对象程序设计的核心概念包括类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

类是对具有相同属性和行为的对象的抽象描述,它定义了对象的属性和方法。

对象则是类的具体实例,具有自己的状态和行为。

封装将对象的内部实现细节隐藏起来,只对外提供公共的接口,提高了代码的安全性和可维护性。

继承允许子类继承父类的属性和方法,并可以在此基础上进行扩展和修改,实现了代码的复用。

多态则使得不同的对象可以对相同的消息做出不同的响应,增加了程序的灵活性和可扩展性。

在本次大作业中,我们选择了一个图书管理系统作为项目开发的主题。

这个系统需要实现图书的添加、删除、修改、查询等功能,同时还要能够处理用户的借阅和归还操作。

为了实现这个系统,我们首先对系统进行了需求分析,确定了系统的功能和性能要求。

然后,我们根据需求分析的结果,设计了系统的架构和类图。

在设计类图时,我们定义了几个主要的类,包括图书类(Book)、用户类(User)、借阅记录类(BorrowRecord)和图书管理类(LibraryManager)。

图书类包含了图书的基本信息,如书名、作者、出版社、出版日期、ISBN 号等,以及一些操作图书信息的方法,如获取图书信息、修改图书信息等。

用户类包含了用户的基本信息,如用户名、密码、借阅权限等,以及一些操作用户信息的方法,如注册用户、登录用户、修改用户信息等。

借阅记录类包含了借阅的图书、借阅用户、借阅日期、归还日期等信息,以及一些操作借阅记录的方法,如添加借阅记录、删除借阅记录、查询借阅记录等。

学堂在线《面向对象程序设计C++》习题

学堂在线《面向对象程序设计C++》习题

学堂在线《面向对象程序设计C++》习题(作业部分)作业一多选题(2分)C++源程序不能直接运行,需要经过如下哪些步骤,才能得到可以运行的程序?A.编译器B.链接器C.汇编器D.编辑器正确答案:AB判断题(1分)C++源程序必须使用两个以上的文件来存放,才能编译链接成可执行程序。

正确答案:×多选题(2分)关于main()函数的参数,以下说法正确的是A.不使用参数也是允许的B.若带参数,则第一个参数是整数类型C.若带参数,则第二个参数是字符串数组D.参数名称只能使用argc和argv正确答案:ABC多选题(2分)为防止头文件重复包含,以下书写错误的是A.错误B.错误C.错误D.错误正确答案:ABCD作业二多选题(2分)下列哪些语句可以完成对数组的初始化A.char name[10] = "THU OOP";B.char course[4] {'O', 'O', 'P'};C.int year[5] {2016, 2017, 2018};D.int score[] = {60, 80, 90};正确答案:ABCD多选题(2分)下列哪些写法不正确A.int* ptr = new int;B.int* ptr = new int(3);C.int * ptr = new int[3];D.int* ptr = new int{3};E.int* ptr = new[] int;F.int ** ptr = new int[4][5];正确答案:EF多选题(2分)下列关于for循环语句的写法,正确的是:A.第1句B.第2句C.第3句D.第4句正确答案:ABCD判断题(1分)函数重载时,函数名必须一样,函数参数必须不同,至于函数返回值类型,则没有限定。

正确答案:√单选题(1分)以下关于函数参数缺省值的说法,正确的是:A.当有多个函数参数时,任意一个都可以设置缺省值B.若只有一个参数,则不能设置缺省值C.只有整数参数才能设置缺省值D.仅允许从函数参数列表的最后一个开始依次设置缺省值(一个或多个)正确答案:D判断题(1分)函数返回类型,既可以放在函数名前面(左边),也可以使用追踪返回类型的语法放到函数名的后面(右边)正确答案:√多选题(2分)关于类成员的访问权限,以下说法正确的是:A.访问权限可以成组设置B.相同权限的成员,可以共用一个权限设置C.同一权限说明不能出现多次D.private必须在public之前出现正确答案:AB单选题(1分)下列关于私有成员的说法,正确的是A.即使是类的成员函数,也不能访问私有成员B.对象通过成员操作符,是可以访问自己隐藏的私有成员的C.私有数据只能被私有成员函数访问,不能被公有成员函数访问D.私有数据成员不能与公有数据成员同名正确答案:D多选题(2分)关于类的成员函数定义,以下说法正确的是:A.既可以放在类中定义,也可以放在类外定义B.在类外定义时,函数名前要加”类名::“进行限定C.只有私有成员函数才能在类中进行定义D.私有成员函数只能在定中进行定义正确答案:AB判断题(1分)所谓this指针,只是一种概念,是为了帮助我们理解类的运作方式而引入的,实际上在成员函数的参数列表中并没有这种变量被传入。

面向对象程序设计样卷

面向对象程序设计样卷

面向对象程序设计样卷一、选择题( 本大题共10小题, 每题2分, 共20分)4.在下列定义的引用中, ( B )是错误的。

A. int i;B. int i;int &j = i; float &j=i;C. float i;D. char d;float &j = i; char &e = d;5. 假定BB为一个类,则执行BB y;语句时将自动调用该类的( B )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7.下列对派生类的描述中, ( C )是错误的。

A. 一个派生类能够作为另一个派生类的基类B.派生类至少应有一个基类C. 基类中成员访问权限继承到派生类中都保持不变D.派生类成员除了自己定义的成员外, 还包含了它的基类成员10.控制输出格式的控制符中, ( D )是设置输出宽度的。

A.wsB.endsC. setfill()D.setw()二、填空题( 本大题共10小题, 每题2分, 共20分)1.以/*开始, 以*/结束, 在/*和*/之间的部分即为注释。

2.重载函数在参数类型或参数个数上不同, 但函数名和类名_相同。

3. 假如一个类的名称为MyClass, 使用这个类的一个对象初始化该类的另一个对象时, 能够调用__拷贝______构造函数来完成此功能。

4.当删除对象时, 程序自动调用析构函数。

5. 对于每一个类的非静态成员函数, 都有一个隐含的_this_______指针。

8. 抽象类是指类里有一个函数, 是纯嘘函数。

三、改错题( 下面程序或程序段中有一处错误, 请用注释标明错误所在行的出错原因。

本大题共5小题, 每题2分, 共10分) 1. #include<iostream>using namespace std;int main(){ cout<<"This is a program."<<endl;return 0;}2. #include<iostream>using namespace std;int main(){x=3;int y=x*x;cout<<"y="<<y<<"\n";return 0;}3. #include<iostream>using namespace std;class Aa{public:Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; } ~Aa(){ cout<<"Destructor "<<a<<endl; }void print( ){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}4.class A{int a,b;public:A(int aa,int bb=78){a=aa;b=bb;} };int main(){A x(2), y(4,9);return 0;}5. #include<iostream>using namespace std;class Test{public:static int x;};int Test :: x=20;int main(){cout<<Test::x;return 0;}四、程序分析题( 分析程序, 写出运行结果。

面向对象程序设计作业

面向对象程序设计作业

A. pa是一个指向数组的指针,所指向的数组是5个int型元
素;
B. pa是一个指向某数组中第5个元素的指针,该元素是int型
变量;
C. pa是一个具有5个元素的指针数组,每个元素是一个int型
指针;
D. pa[5]表示某个数组的第5个元素的值。
10. 下面程序使用new与delete命令:
#include <iostream.h>
如:
Time s(12,34,16),s1;
s1=s+100;//从12点34分16秒后,再过100秒,即加100秒
s1.show();
第三次作业
1、 选择题(在A、B、C、D四个答案中选择一个正确的填入后面 的括号中)
1.下面( )是对类ttt的声明。 A. void class ttt; B. class int ttt; C. class ttt( ); D. class ttt;
(1) 建立一个三角形类tri,有三个私有数据a,b,c,设计一 个缺省的3参数构造函数,缺省值分别为3,3,3,再设 计一个成员函数showarea,当参数能组成三角形时输出 面积值,否则输出-1。
(2) 建立一个类book,有二个私有的数据成员qu和price,建 立一个有5个元素的数组对象,将qu初始化为1,2,3, 4,5,将price初始化为qu的10倍,并设计一个成员函数 disp,输出每个对象的qu*pricer的值。
(3) 有一个向量类vector,包括一个点的坐标位置x和y,设计 二个友元函数,实现两个向量的加法和减法运算。
(4) 编写一个程序,设计一个类score,用于统计一个班的学 生成绩,其中使用一个静态数据成员sumfs存储总分和一 个静态成员函数rsumf()返回该总分。

面向对象程序设计作业1

面向对象程序设计作业1

作业11. 程序输出有下面Account类的定义,写出(1)—(4)函数运行后的结果。

(1)写出执行下面函数后的输出结果Your answer:答案:account1 balance: $3550(2)写出执行下面函数后的输出结果答案:account1 balance: $0(3)写出执行下面函数后的输出结果答案:account1 balance: $2770adding $375 to account1 balance account1 balance: $3145(4)写出执行下面函数后的输出结果答案:account1 balance: $799adding $-114 to account1 balance account1 balance: $6852. 代码改错有下面类的定义GradeBook,修改(1)—(4)代码段中的错误(1)创建GradeBook类对象。

答案:GradeBook gradeBook( "Introduction to C++" );(2)给GradeBook对象的courseName数据赋值。

答案:gradeBook.setCourseName( "Advanced C++" );(3)用户输入课程名给变量course,并将其值赋给对象gradeBook的数据成员nourseName。

答案://第二行cin.getline()缺少参数,这里用getline(cin, inputName)更合适cout << "Please enter the course name:" << endl;//未改动getline( cin, inputName );gradeBook.setCourseName( inputName );(4)输出对象gradeBook当前的课程名答案:cout << "The grade book's course name is: " << gradeBook.getCourseName() << endl;。

面向对象程序设计模拟练习题(含答案)

面向对象程序设计模拟练习题(含答案)

面向对象程序设计模拟练习题(含答案)一、单选题(共50题,每题1分,共50分)1、下列关于JDK和JRE的说法中,错误的是()A、JDK是java开发核心组件,是用来编译解释java程序的核心组件B、JDK包括Java编译器、Java文档生成工具、Java打包工具等C、JRE是个单独的软件,所以安装JDK后,还需要单独安装JRED、JRE是java运行环境,用来支持java程序的运行正确答案:C2、下列File类的构造方法格式,错误的是()A、File(File parent)B、File(String pathname)C、File(String parent,String child)D、File(URI url)正确答案:A答案解析:A选项,正确的应该是File(File parent, String child)3、下列关于静态变量的描述中,错误的是()A、静态变量指的是被static修饰的变量B、静态变量是随着类的加载而加载C、静态变量可以被所有的实例对象共享D、静态变量同成员变量一样,都需要通过实例对象来调用正确答案:D答案解析:静态变量是通过“类名.变量名”“方式调用的。

4、下列对于Runtime的描述中,正确的是()A、每一个Java应用程序运行时都产生一个Runtime类实例B、Runtime实例可以将应用程序和运行环境相结合C、Runtime类有构造函数D、Runtime实例需要被创建后才可以通过getRuntime()方法获取正确答案:A答案解析:Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。

每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,可以通过getRuntime()方法获得一个Runtime实例。

5、下列关于LinkedList类的方法,不是从List接口中继承而来的是()A、toArray()B、pop()C、remove()D、isEmpty()正确答案:B答案解析:pop()方法表示移除并返回此列表的第一个元素,是LinkedList特有的方法。

面向对象程序设计课程作业

面向对象程序设计课程作业

面向对象程序设计课程作业一、单选题1. (5分)调用一成员函数时,使用动态联编的情况是()A. 通过对象调用一虚函数B. 通过指针或引用调用一虚函数C. 通过对象调用静态函数D. 通过指针或引用调用静态函数得分:0知识点:第6章收起解析.答案B.解析第6章6.2节..2. (5分)下列选项中,可以作为函数重载的条件之一的是():A. 不同的形参名称B. 不同的返回值C. 不同的函数名D. 不同的参数个数得分:0知识点:第2章收起解析.答案D.解析第2章2.5节..3. (5分)如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是()A. 一元运算符B. 二元运算符C. 选项A和选项B都可能D. 重载错误得分:0知识点:第3章收起解析.答案D.解析第3章3.5节..4. (5分)有以下程序main() { int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]); } 程序的执行后的输出结果是()A. 7 5 3B. 3 5 7C. 3 6 9D. 7 5 1得分:0知识点:第2章收起解析.答案B.解析第2章2.2节..5. (5分)若要求从键盘读入含有空格字符的字符串,应使用函数()A. getc()B. gets()C. getchar()D. scanf()得分:0知识点:第2章收起解析.答案B.解析第2章2.5节..6. (5分)可以用P.a的形式访问派生类对象p的基类成员a,其中a是A. 私有继承的公有成员B. 共有继承的私有成员C. 公有继承的保护成员D. 公有继承的公有成员得分:0知识点:第4章收起解析.答案D.解析第4章4.1节..7. (5分)解决二义性问题的方法有A. 只能使用作用域分辨操作符B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则得分:0知识点:第6章收起解析.答案C.解析第6章6.2节..8. (5分)以下有关继承正确的是A. 构造函数和析构函数都能被继承B. 派生类是基类的组合C. 派生类对象除了能访问自己的成员外,不能访问基类中的所有成员D. 基类的公有成员一定能被派生类对象访问得分:0知识点:第4章收起解析.答案D.解析第4章4.2节..9. (5分)假定类B是在类A基础上扩充而得到的,那么就称A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类得分:0知识点:第3章收起解析.答案B.解析第3章3.2节..10. (5分)如果类A被说明成类B的友元,则()A. 类A的成员即类B的成员B. 类B的成员即类A的成员C. 类A的成员函数不得访问类B的成员D. 类B不一定是类A的友元得分:0知识点:第5章收起解析.答案D.解析第5章5.2节..11. (5分)下列有关继承和派生的叙述中,正确的是()A. 派生类不能访问基类的保护成员B. 作为虚基类的类不能被实例化C. 派生类应当向基类的构造函数传递参数D. 虚函数必须在派生类中重新实现得分:0知识点:第3章收起解析.答案C.解析第3章3.1节..12. (5分)下面是一个模板声明的开始部分:templute double __ 由此可知()A. 这可能是一个函数模板的声明B. 这可能是一个类模板的声明C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明D. 这肯定是一个错误的模板声明得分:0知识点:第7章收起解析.答案A.解析第7章7.2节..13. (5分)以下叙述中正确的是()A. 预处理命令行必须位于C源程序的起始位置B. 在C语言中,预处理命令行都以“#”开头C. 每个C程序必须在开头包括预处理命令行:#includeD. C语言的预处理不能实现宏定义和条件编译的功能得分:0知识点:第2章收起解析.答案C.解析第2章2.4节..14. (5分)下列关于模板的说法正确的是()A. 模板的实参在任何时候都可以省略B. 类模板与模板库所指的是同一概念C. 类模板的参数必须是虚拟类型的D. 类模板中的成员函数全部都是模板函数得分:0知识点:第7章收起解析.答案D.解析第7章7.2节..15. (5分)在文件包含命令中,被包含文件的扩展名A. 必须是.hB. 不能是.hC. 可以是.h或.cppD. 必须是.cpp得分:0知识点:第1章收起解析.答案C.解析第1章1.1节..二、判断1. (5分)当函数的返回值是数组类型的,传递的是数组第一个元素的地址.得分:0知识点:第2章收起解析.答案错误.解析第2章2.5节..2. (5分)数据成员在初始化列表中的书写顺序无关紧要,但初始化列表对数据成员初始化的执行次序就是类中定义数据成员的次序。

面向对象程序设计课程作业

面向对象程序设计课程作业

《面向对象程序设计》课程作业作业1:是非题1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。

( )2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。

( )填空题下面是一个求数组元素之和的程序。

主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。

函数sum计算数组元素之和。

填充程序中不完整的部分。

__________________int sum(int [],int);void main(){int ia[5] = {2,3,6,8,10};;sumOfArray = sum(ia,5);cout << "Sum of array:" << sumOfArray << endl;}int sum(int array[],int len){int iSum = 0;for(int i = 0; ; );return iSum;}阅读理解题写出下列程序的运行结果://file1.cppstatic int i = 20;int x;static int g(int p){return i + p;}void f(int v){x=g(v);}//file2.cpp#include <iostream.h>extern int x;void f(int);void main(){int i=5;f(i);cout << x;}回答以下问题:1. 程序的运行结果是什么样的?2. 为什么文件file2.cpp中要包含头文件<iostream.h>?3. 在函数main()中是否可以直接调用函数g()?为什么?4. 如果把文件file1.cpp中的两个函数定义的位置换一下,程序是否正确?为什么?5. 文件file1.cpp和file2.cpp中的变量i的作用域分别是怎样的?在程序中直接标出两个变量各自的作用域。

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。

(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。

文件的读写操作大家参照书中的有关文件的章节。

2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。

A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。

提示:学生信息可先输入到数组中,排序后可写到文件中。

(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。

面向对象程序设计大作业

面向对象程序设计大作业

一、编程题。

根据程序要求,写出函数的完整定义。

(40分)1.写一个函数,找出给定字符串中大写字母字符(即’A’-‘Z’这26个字母)的个数(如字符串”China Computer Wrold”中大写字母字符的个数为3个)。

函数的原型:int CalcCapital (char *str);函数参数:str为所要处理的字符串;函数返回值:所给字符串中数字字符的个数2.写一个函数,用递归函数完成以下运算:sum(n) = 1 –1/2 + 1/3 –1/4 + …-(1/n)*(-1)n (其中n>0)函数原型:float sum(int n);函数参数:n为正整数。

函数返回值:相应于给定的n,右边表达式运算结果。

提示:你可以使用递归表达式:sum(n) = sum(n-1) -(1/n)*(-1)n3. 给定新数值,在一个按节点所存放数值从大到小排序的链表中,找适当位置插一个新节点,仍保持有序的链表,写一个函数,完成此操作。

函数的原型:Node * InsNode(Node * head, int newV alue);其中,链表节点的定义如下:struct Nodee{int Value; //存放数值Node * next; //指向链表中的下一个节点};函数参数:函数的第一个参数head指向链表头一节点的指针,如果链表为空,则head的值为NULL。

第二个参数newValue为所给定的插入新节点的新数值。

函数返回值:当成功地插入新的节点时,函数返回指向新链表头一节点的指针,否则,若不能申请到内存空间,则返回NULL。

4.写一个函数,找出给定数组中具有最小值的元素。

函数的原型:char MinCode(char charAry[]);函数参数:charAry所要处理的字符数组名;函数返回值:返回具有最小ASCII码的字符。

二、理解问答题:(20分)下面的文件stack.h是一个堆栈类模板Stack的完整实现。

(0837)《面向对象程序设计》网上作业题及答案

(0837)《面向对象程序设计》网上作业题及答案

(0837)《面向对象程序设计》网上作业题及答案1:[单选题]执行下列语句后,变量x的值是:()int x = 7, y = 10;switch (x / y) {case 0:x++;case 7:x *= y;case 14:x += y;break;default:x %= y;}A:8B:70C:80D:90参考答案:D2:[单选题]以下由for语句构成的循环的执行次数是:()for (int i=0; i<=0; i=i) ;A:有语法错,不能执行B:一次也不执行C:执行1次D:无限次参考答案:D3:[单选题]设有定义int i=7;char ch='b'; 下面赋值语句中不正确是:()A:i = ch;B:ch = i;C:ch = (char)i;D:i = (int)ch;参考答案:B4:[单选题]设有定义int i=80, j=7; double d=80.7;下列语句中正确的赋值语句是:()A:i = d;B:i = (int)d + j;C:j = (int)i - d;D:i + j = (int)d;参考答案:B5:[单选题]以下关于Java语言的叙述错误的是:()A:Java是最纯粹的面向对象语言,对面向对象方法学的支持也最全面B:Java是解释执行的语言,由Java解释器负责将Java源文件解释为机器码执行C:Java是平台无关的,即Java程序不用修改就可以在不同类型的计算机平台上运行D:Java提供了大量功能丰富的可重用类库,有效减少了编程的工作量参考答案:B6:[单选题]下列选项中,用于声明实现一个接口关键字是:()A:interfaceB:implementsC:importD:abstract参考答案:B7:[单选题]Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序“一次编写,到处运行”的特点:()A:多线程B:与平台无关C:面向对象D:分布式参考答案:B8:[单选题]下列不属于Java语言关键字的是:()A:repeatB:tryC:breakD:new参考答案:A9:[单选题]下列字符序列中可以作为Java语言标识符的是:()A:trueB:123_xyzC:x.yD:_x123参考答案:D10:[单选题]下列字符序列中不能作为Java语言标识符的是:()A:abc_123B:圆周率PIC:falseD:_123abc参考答案:C1:[单选题]下列语句序列给出了k,myArr和myMethod()的声明。

第三章 面向对象程序设计(答案)

第三章 面向对象程序设计(答案)

学号:姓名:第三章面向对象程序设计作业一、判断题1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。

对2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。

对3、接口中的成员变量全部为常量,方法为抽象方法。

对4、抽象类可以有构造方法,可以直接实例化。

错5、对static方法的调用可以不需要类实例。

对6、包含抽象方法的类一定是抽象类。

对7、方法中的形参可以和方法所属类的属性同名。

对8、接口无构造器,不能有实例,也不能定义常量。

错9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。

对10、Java应用程序的入口main方法只有一种定义法。

对二、选择题1、下列答案正确的是(A)A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为publicB) 在同一个Java源文件中只能包含一个类,并被声明为publicC) 在同一个Java源文件中可以包含多个类,都可以被声明为publicD) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default2、Java实现动态多态性是通过(B)实现的。

A) 重载B) 覆盖C) 接口D) 抽象类3、下列哪一个是正确的方法重载描述(A)A) 重载方法的参数类型必须不同B) 重载方法的参数名称必须不同C) 返回值类型必须不同D) 修饰词必须不同4、final关键字不可以用来修饰(D)A) 类B) 成员方法C) 域D) 接口5、接口的所有成员方法都具有(B)属性A) private, final B) public, abstractC) static, protected D) static6、Java的封装性是通过(A)实现的A) 访问控制B) 设计内部类C) 静态域和静态方法D) 包7、下列接口或类不属于java.util.*包的是(D)A) Collection B)Vector C) MapD) Integer8、下述哪一组方法,是一个类中方法重载的正确写法?(A)A) int addValue( int a, int b ){return a+b;}float addValue ( float a, float b) {return a+b;}B) int addValue (int a, int b ){value=a+b; }float addValue ( int a, int b) {return (float)(a+b);}C) int addValue( int a, int b ){return a+1;}int addValue ( int a, int b) {return a+b;}D) int addValue( int a, int b ) {return a+b;}int addValue ( int x, int y ) {return x+y;}9、下列说法哪个是正确的?(C)A) 子类不能定义和父类同名同参数的方法B) 子类只能继承父类的方法,而不能重载C) 重载就是一个类中有多个同名但有不同形参和方法体的方法D) 子类只能覆盖父类的方法,而不能重载10、对于下列代码:public class Parent {public int addValue( int a, int b) {int s;s = a+b;return s;}}class Child extends Parent {}下述哪个方法不可以加入类Child? (B)A) public int addValue( int a, int b,int c ){// do something...}B) public void addV alue (int a, int b ){// do something...}C) public int addValue( int a ){// do something...}D) public int addValue( int a, int b ) {//do something...}11、以下程序段输出结果的是(B)public class A implements B {public static void main(String args[]) {int i;A c1 = new A();i= c1.k;System.out.println("i="+i);}}interface B {int k = 10;}A) i=0 B) i=10 C) 程序有编译错误D) i=true12、阅读下面的程序,输出结果是(B)public class TestDemo {int m=5;public void some(int x) {m=x;}public static void main(String args []) {new Demo().some(7);}}class Demo extends TestDemo {int m=8;public void some(int x) {super.some(x);System.out.println(m);}}A) 5 B) 8 C) 7 D) 编译错误13、下述哪个说法是不正确的?(A)A) 局部变量在使用之前无需初始化,因为有该变量类型的默认值B) 类成员变量由系统自动进行初始化,也无需初始化C) 参数的作用域就是所在的方法D) for语句中定义的变量,当for语句执行完时,该变量就消亡了14、下述那一个保留字不是类及类成员的访问控制符。

面向对象程序设计作业

面向对象程序设计作业

面向对象程序设计作业1
【题目】创建一个Student类,要求:
●该类有如下私有字段:
学号(Id,int型)
姓名(name,string型)
出生日期(birthday,DateTime型)
成绩(score,int型)
●可以通过属性读取字段“姓名”和“出生日期”的值。

●可以通过属性对“成绩”字段的值进行读写,对成绩属性进行赋值时,若成绩大于100分赋
100分,若成绩低于0分赋0分。

●该类有如下重载的构造函数,用于创建对象时对不同的字段赋初值:
publicStudent()
public Student(intxh,stringxm)
public Student(intxh,string xm, DateTimebir,intcj)
●该类具有如下方法:
public string ScoreDj(intcj) 判断成绩等级,若:cj>=90,返回字符串“优秀”
若:cj>=80 and cj<90,返回字符串“良好”
若:cj>=70 and cj<80,返回字符串“中等”
若:cj>=60 and cj<70,返回字符串“及格”
若:cj<60,返回字符串“不及格”
public void Display() 输出学生的学号、姓名、年龄、成绩和成绩等级
最后,设计一个使用Student类的应用程序。

在该应用程序中,输入若干学生的数据(数据放在一个Student对象数组中),然后通过一个方法对其按总分进行降序排序,最后调用方法Display()输出排序后的学生数据。

面向对象程序设计作业2

面向对象程序设计作业2

1. 写出程序运行结果(1)答案:61 (2)答案:2252对于每个给定的程序段,指出代码中的错误,写出改正后的代码。

(1)下面代码定了Time类的成员函数setHour,Time的声明见Fig. L 9.1:答案:在Time类中添加公有成员函数声明如下:int&setHour(int);(2)下面代码调用了Time类的成员函数printUniversal,Time类的定义见Fig. L 9.1:答案:对于Time类的指针clockPtr,应该使用->运算符调用类的成员函数:clockPtr->printUniversal();(3)在Time类中定义数据成员hour, minute和second,见Fig. L 9.2,并在test code中使用Time 类:答案:第6行,成员运算符"."比指针运算符"*"优先级更高,可以改成(*clockPtr).second;或者clockPtr->second;(4)下面代码定义了类Time:答案:具有默认值的函数参数必须放在右边,可以改成:Time(int, int = 0, int = 0);(5)下面代码定义了类Q:答案:构造函数没有返回值类型,应该改成:Q(int);(6)下面代码是类Q的另一种定义:答案:第9行,使用这种方式初始化非静态成员变量,在旧版本(旧标准)的编译器下可能会有问题。

C++11以上可以用这种方式初始化。

warning: non-static data member initializers only available with '-std=c++11' or '-std=gnu++11'9 | int qData = 100;| ^~~(7)下面代码在类Q的声明之外定义了其成员函数setQ:答案:应在函数名前加范围解析运算符"::":void Q::setQ(int input)。

java《面向对象程序设计》作业

java《面向对象程序设计》作业

课后作业第一章Java语言基础知识1.程序设计语言发展的历程答案:机器语言、汇编语言、高级语言、面向对象的语言2.面向对象语言的基本特征答案:抽象和封装、继承性、多态性3.Java语言的特点答案:java语言是一种卓越的程序设计语言,它具有以下特点。

1.面向对象2.简单性3.可移植性4.稳定性和安全性5.高性能6.分布性4. 为什么Java语言是跨平台的?答案:因为Java程序的最终实现需要经过编译和解释两个步骤,Java语言的编译器生成可执行的字节码,这种代码是由Java虚拟机生成的,它与任何硬件平台无关。

当生成字节码后,再使用Java解释器来执行字节码,这也就意味着只要有安装Java解释器的机器Java程序都可以运行,所以它是跨平台的面向对象的程序设计语言。

5. Java2的SDK是什么?答:Java2的SDK指Software Development Kit 软件开发工具集6. Java开发工具中的javac.exe和java.exe的功能是什么?答案:Javac.exe是Java编译器,用来将java程序编译成字节码。

Java.exe是Java解释器,执行已经转换成Bytecode的java应用程序。

7. Java集成开发环境有哪些?答案:Java集成开发环境主要有:Eclipse、netBeans、Jcreator LE、BorlandJbuilder、Microsoft Visual J++、IBM : Visual Age for Java、Sun ONE Studio 8.Java程序编译执行的过程答案:Java语言源程序的变异过程主要进行两件工作:1.通过编译程序检查Java源程序中是否有语法错误,如果发现错误,便报告已发现的错误,修改后再编译,直到未发现错误时才生成字节码文件。

2.通过编译来引入Java类库中已编好的模块,为了方便编程,Java类库中有若干个包,每个包中有若干个模块,每个模块是一个具有某种功能的类,它们都是字节码形式的程序。

北理工《面向对象程序设计》在线作业

北理工《面向对象程序设计》在线作业
B形式上针对引用的操作实际上作用于它所引用的对象
C一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D不需要单独为引用分配存储空间
我的得分:2分
我的答案:C
解析:
暂无内容
17
2分
下列语句中,正确的是()。
Aconst int buffer=256;
Bconst int temp;
Cint &ref;
我的答案:B
解析:
暂无内容
29
2分
执行下列程序后的输出结果是()。#include<iostream.h>intfun1(intx){return++x;}intfun2(int&x){return++x;}intmain(){inta=0,b=0,c=0;c=fun1(a)+fun2(b);cout<<a<<b<<c<<endl;return0;}
我的答案:D
解析:
暂无内容
5
2分
若有语句int*p=newint[5];int*pi;则以下语句中,执行时会造成delete[]p语句的执行出错的是______。
A(*p)++;
Bp++;
Cpi = p;;
Dpi=p+3;
我的得分:2分
我的答案:A
解析:
暂无内容
6
2分
有如下类定义:classMyClass{public:intgetRef()const{return&a;}intgetValue()const{returna;}voidset(intn)const{a=n;}friendvoidshow(MyClassobj)const{cout<<a;}};下列函数中,定义正确的是()。

面向对象程序设计作业参考答案

面向对象程序设计作业参考答案

面向对象程序设计作业参考答案习题一5、分析下面程序运行的结果。

#using namespace std;int main(){cout<<”This”<<”is”;cout<<”a”<<”C++”;cout<<”program.”<<endl;< p="">return 0;}输出结果:ThisisaC++program.6、分析下面程序运行的结果。

#includeusing namespace std;int main(){int a,b,c;a = 10;b = 23;c = a + b;cout<<'a + b =";cout<<c;< p="">cout<<endl;< p="">return 0;}输出结果:a + b = 338、在你所用的C++系统上,输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。

修改后的程序如下:#includeusing namespace std;int main(){int a, b;a =b = 0;int c = a + b;cout<<”a + b =”<return 0;}9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。

修改后的程序如下:#includeusing namespace std;int add(int x,int y);int main(){int a = 0, b = 0;int c = add(a,b);cout<<" a + b ="<<c<<endl;< p="">return 0;}int add(int x,int y){int z = x + y;return z;}习题二1、请检查下面的程序,找出其中的错误(先不要上机,在纸面上作人工检查),并改正之。

面向对象程序设计(大作业)

面向对象程序设计(大作业)

一、名词解释(每题4分,共40分)1.面向对象面向对象:相对于面向过程而言的,所谓面向对象就是不在追求其操作的过程而是去实现其中的方法。

2.对象对象:对象就是用来描述客观事物的一个实体,有一组属性和方法构成的。

3.构造函数构造函数:主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new 运算符一起使用在创建对象的语句中,也是一种特殊的方法。

4.析构函数析构函数:是与构造函数相反,当对象结束其生命周期时,系统自动执析构函数。

其主要作用是用delete释放建立对象用new开辟内存空间。

5.继承继承:继承是指一个对象直接使用另一对象的属性和方法6.多态多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性7.引用引用:使用它指向了一个A对象,也可以说它引用了一个A对象8.友元友元:指某些虽然不是类成员却能够访问类的所有成员的函数。

9.模板模板:某种事物所依照的样本10.异常处理异常处理:是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况。

二、综合回答题(每小题15分,共60分)1.请介绍运算符重载的意义。

答:所谓重载,就是重新赋予新的含义。

运算符函数重载就是对原有元算符进行赋予新的含义从而实现运算符的重载.可以实现运算符重载的包括:算术运算符:+,-,*,/,%,++,--;位操作运算符:&,,~,^,<<,>>逻辑运算符:!,&&,;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,*=,/=,%=,&=,=,^=,<<=,>>=;其他运算符:[],(),->,,(逗号运算符),new,delete,new[],delete[],->*不能实现运算符重载的运算符包括:.,.*,::,?:2.谈谈多态的意义。

答:封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

郑州大学现代远程教育《面向对象程序设计》课程考
核要求
说明:本课程考核形式为提交作业,完成后请保存为WORD 2003版本格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。

一.作业要求
1.请独立自主完成作业内容。

二.作业内容
一)、简答题:(每题 5 分,共30 分)
1.什么是抽象类?它有什么特点?
答:
抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。

特点:
1、抽象类不能直接实例化
2、允许(但不要求)抽象类包含抽象成员。

3、抽象类不能被密封
2.C++中使用多态的前提条件是什么?
答:动态多态的前提条件:
1.通过调用虚函数实现多态
2.通过基类的指针或引用调用虚函数
3.什么是类?类与结构有和不同?
答:类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,
都指向同一段实际对象分配的内存
不同:类有构造和析构函数,类可以继承和被继承
结构没有构造函数,但可以添加。

结构没有析构函数,结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口。

4.面向对象的特征有哪些?
答:封装,继承,多态
5. 简述this指针的含义是什么?
答:this指针是一个隐含于每一个成员函数中的特殊指针。

它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。

6. 友元关系具有什么特点?
答:友元函数的特点是能够访问类中的私有成员的非成员函数。

友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。

二)、分析下面的代码,回答问题(每题 10 分,共 40 分)
1.分析下面的代码,指出其中的错误,说明理由并改正
class C {
public:
int fn1( int x ) {
dm = x ;
}
private:
int dm;
};
void main ( ) {
C c;
c.fn1(16 );
cout << c.dm << ‘\n’;
}
答://dm为私有变量,是不能通过对象直接访问的,正确的做法是添加一个public类型的方法,如public void Show(){cout<<dm<<endl;}然后利用对象c调用Show(),
2.下面代码的执行结果是什么?为什么?
class A{
int n;
public:
A() {};
A(int i){n=i;}
~A() { cout<<"n="<<n<<endl;}
};
class B
{
A a;
int m;
public:
B(int i,int j):a(i){m=j;}
~B(){cout<<"m="<<m<<endl;}
};
void main()
{
B b(1,2);
}
答:执行结果:
n=1
m=2
原因:b对象里包含一个A类的对象,b对象在析构时先调用A的析构函数,再调用B自身的析构函数
3.下面代码的执行结果是什么?为什么?
class Sample{
int n;
public:
Sample(){};
Sample(int i){n=i;};
Sample& operator=(Sample);
void disp(){cout<<"n="<<n<<endl;}
};
Sample & Sample::operator=(Sample s)
{
Sample::n=s.n;
return *this;
}
void main()
{Sample s1(10),s2;
s2=s1;
s2.disp();
}
答:结果:
n=10
Sample重载了赋值操作符,可以用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化
4. 下面代码的执行结果是什么?为什么?
class A{
A(char *s) {cout<<s<<endl;}
~A(){};
};
class B:virtual public A
{
public:
B(char *s1,char*s2):A(s1)
{
cout<<s2<<endl;
}
};
class C:virtual public A
{
public:
C(char* s1,char* s2) : A(s1)
{
cout<<s2<<endl;
}
};
class D: public B, public C
{
public:
D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s1,s2),A(s1)
{
cout<<s4<<endl;
}
};
创建对象的语句: D d(“class A”,”class B”,”class C”,”class D”);执行结果是什么?为什么?
答:执行结果:
class A
class B
class D
三)、根据要求编写完整程序:(每题15分,共 30 分)
1.设计复数类的加法运算操作,使之能够执行下列运算:( 15 分)Complex x(3,6), y(4,5), z(0,0);
z = x + y;
z=2.4 + x;
z=y + 3.5
答:class complex{
public:
complex(int r=0,int i=0);//构造
complex operator+(const complex& other);
complex Complex::operator+(const int &a);
void complex::input()
protected:
int real,image;
};
void complex::input()
{
int real,image;
cout << "please enter a complex: " << endl;
cin>>r>>m;
real = r;
image = m;
}
complex::complex(int r,int i)
{
real=r;
image=i;
return;
}
complex complex::operator+(const complex& other)
{
complex temp;
temp.real=real+other.real;
temp.image=image+other.image;
return temp;
}
complex complex::operator+(const int &a)
{
complex temp;
temp.real= real +a;
temp.image = image;
return temp;
}
int main(int argc,char* argv[])
{
complex a,b,c;
a.input();
b.input();
c = a +b;
//输出
c = 5 +a;
//输出
c = b +5;
//输出
}
}
2. 设计High类,其数据成员为高h,定义虚函数disp()。

由High 派生出长方体类Cuboid与圆柱体类Cylinder。

在主函数中用基类指针变量p调用虚函数disp()显示长方体与圆柱体的体积。

(15分)
答:class High{
public:
unsigned int h;
virtual void disp(){};
};
class Cuboid:public High{
Public:
unsigned int length;
unsigned int width;
virtual void disp(){cout<<length*width*h<<endl;}; };
Class Cylinder:public High{
Public:
unsigned int r;//半径
virtual void disp(){cout<<3.14159*r*r*h<<endl;}; };
void main()
{
High *p;
Cuboid objA;
Cylinder objB;
objA.h=20;
objA.length=3;
objA.width=4;
p=&objA;
p->disp();
objB.r=5;
objB.h=10;
p=&objB;
p->disp();
}。

相关文档
最新文档