面向对象程序设计试题及答案.docx
- 文档编号:30352344
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:40
- 大小:260.21KB
面向对象程序设计试题及答案.docx
《面向对象程序设计试题及答案.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计试题及答案.docx(40页珍藏版)》请在冰豆网上搜索。
面向对象程序设计试题及答案
面向对象程序设计试卷及答案
开发环境为,运行结果有截图,若发现错误欢迎指正实验一、程序开发环境及简单程序设计。
题目、简单程序
任务:
按提示的操作步骤输入下面的代码,编译连接并执行。
源程序代码:
""
()
{<<"!
\";
<<"!
"<<;
<<""<<;
}
运行结果:
Hollo*
We1cometoC++?
Thisi含mgfirstc++gram
Pressdnykeytocontinu.e
题目、
编写程序,从标准输入读入一个数,把它转化为英文单词输出,如输入,这是输出“”。
源程序代码:
<>
J
()
{;
<<"请输入数字用来转化为英文单词:
()
{>>('\');
()
{
<<"";;
;;
<<"";;
<<"";;
<<"";
<<"";;
<<"";;
<<"";;
<<"";
<<"";
<<"";;
}
}
}
运行结果:
卜青输入数字用来转化为英文里词±1234冲789.
onetuothreefourfiuesixseueneightnine
题目、循环结构程序设计
任务
把一张一元纸币换成一分、二分和五分的硬币,假如每一种至少一枚,文友多少种换法,编程将各种换法显小出来。
源程序代码:
<>
J
(){
J
<<"一角"<<"两角"<<"三角"<<;
(<)
(<)
(<)
(**)
"<<;}
{<<<<""<<<<"”<<<<
<<"换法的总数为:
"<<<<;
}
运行结果:
8714
8821
8913
9112
9311
换法的总数为;
(由于种数太多截图不方便所以只截了最后的部分!
Pressanykeytocontinue
实验二、函数
题目、内联函数
任务
(1)定义内敛函数(),求两个整数中的最大值,然后在()函数中惊醒调用
(2)定义内联函数()和一般函数(),使整型参数值加,然后在()函数中惊醒调用;
源程序代码:
<>
J
();
();
();
()
{
<<<<","<<<<"中最大的是:
"<<()<<;
<<<<"加后为:
"<<()<<;
<<<<"加后为:
"<<()<<;
}
()
{(>);
;
}
()
{;}
()
{;}
运行结果:
题目、函数参数的传递机制、重载函数
(1)编写重载函数()可分别求个整数、个整数、个双精度和双精度数的最大值。
()定义两个名称都为()的函数,第一个函数支持整型数组,第二个函数支持浮点型数组,求数组元素的和。
源程序代码:
<>
;
()
{(>);}
()
{
(>())();
}
()
{(>);}
()
{(>())();}
(*)
{;
(<)
口;
;
}
(*)
(
;;
(<)
[];
;
)
()
(
,,,
[]{};[]{};
<<<<","<<<<"的最大值为:
"<<()<<;
<<<<","<<<<","<<<<"的最大值为:
"<<()<<;
<<<<","<<<<"的最大值为:
"<<()<<;
<<<<","<<<<","<<"的最大值为:
"<<()<<;
<<"型数组元素的和为:
"<<()<<;
<<"型数组的元素和为:
"<<()<<;
}
运行结果:
题目、带默认参数的函数
任务
定义函数(),计算立体的体积,要求在主函数中以中不同的形式调用此函数。
源程序代码:
<>
;
();
()
{
;
<<()<<;
<<()<<;
<<()<<;
<<()<<;
<<()<<;
}
()注意这里不可以再带默认的参数!
!
!
{
<<"以"<<<<","<<<<","<<<<"为棱的长方体的体积为:
";
**・
}
运行结果:
实验三、类于对象
题目、私有成员的访问
任务
下面的程序中用标明的语句有错误,在不删除和增加代码行的情况下,改正错误的语句,使其正确运行。
错误代码及改正方法:
<>
;
{
(){;<<""<<<<;}
(){<<""<<<<;}
(){<<<<;}
;
};
()
{
()();
();
<<<<将该行代码中访问了的私有属性,改为();
;
}
改正后的运行结果:
Constructor1
Constructors
Desti'uctorS
Destructoi*!
Pressanykeytocontinue
题目、构造函数、拷贝构造函数任务
(1)调试下列程序
源程序代码:
<>
;
(){;}
();
(){<<"\";}
(){;}
(){;}
J
};
()
{
;;
<<"\";
}
()
{
();
();
;
<<"("<<()<<","<<()<<")\";
J
}
运行结果:
Copi/-initializationCnstructoriscalledCops-initidlisationCnstructoriscalledp3=<4,9>destructoriscalledructoriscalleddestructorisca1ledPressan9keytocontinue
问题:
(1)在该程序中将类的带有两个参数的构造函数进行修改,在函数体内添加下述语句:
<<".\"。
对程序的输出结果进行分析和说明。
运行结果:
ConstrustoiisCalled.
Copy-initializationCnstructori零calledCopy-InItialiaationCnstructioi'IsCalledp3=<4,9>destructoriscalleddestructoriscalleddestructoriscalledPressdnykeytocontinue
第一个是构造时产生的,两个分别构造和时产生的。
析构、、,是产生了
三个。
(2)对上述程序在主函数中添加下列说明语句:
,()调试程序会出现什么现
象,为什么?
如何解决?
结合运行结果分析如何使用不同的构造函数创建把不同的对象?
对程序的输出结果进行分析和说明。
会出现对象,无法构造。
在类中将构造函数(,);改成带有默认参数的构造函数,例如:
(,);
运行结果:
Iconstrustop
is
Called.
ICop^F-initializationCnstructor
is
celled
fcopy-initializationCnstvuctor
is
called
Constvustnr
is
Called.
Constructor
is
Called.
p3=<4,9>
destri*ctor
is
called
destructor
is
called
destructor
is
called
Idestriictor
is
called
destructor
is
called
(Pressaiiykgy
tocontinue
分析同上。
题目、析构函数、和运算符
任务
定义字符串类,包括私有数据成员(*),构造函数中用为申请空间,析构函数用释放空间,并验证构造函数和析构函数的调用书顺序。
源程序代码:
<>
};
()
{
;<<"请分别输入你所要建立的两个字符串的含有字符的个数"<<;>>>>;
()();
()();
()();
}
运行结果:
请分别输入你所要建立的两个字符串的含有字符的个数I56
胞造函数被调用,5
储输入5学符用来构造字符串
12345
请输入6字符用来构造字符串.
qv?
erty
序符串的储存的内容如下;
12345
字符串的储存的内容如下:
法为函数被调用”精相函数被调用作
Ppessdnykeytocontinue
可以看出构造函数和析构函数的调用的顺序相反!
注意:
特别重视构造函数、拷贝构造函数和析构函数的使用以及调用顺序,这在整个面向对象程序设计中一直是重点同时也一直是难点。
实验四、静态成员与友元
题目、静态成员的特性
任务
(1)调试下列程序,写出输出的结果,并分析输出结果。
程序代码:
<>
(){;}();
J
;
};
()这里的静态函数在类外实现时就无需在家关键字。
<<""<<<<;
<<""<<<<;
}
静态的数据成员要在类外进行初始化,并且初始化时无需加关键字限定。
()
{
()();
()静态函数的调用形式。
();
;
}
运行结果:
1-86
1=8
(—86
11*65sanykevtoconti.nue
可以看出,的数据成员是不属于任何的对象的而属于整个类。
函同样是属于整个类可以用类名加作用域标识符进行调用,也可以用对象进行调用,两种形式的调用效果等价。
题目、友元函数
任务分析并调试程序,完成下列问题
程序代码:
<>
<>
;
{
(){;}
(){;}
(){;}
();
J
};
()
{
;
(**);
()
()();
();
<<":
"<<()<<
<<":
"<<()<<
<<":
"<<()<<<<":
"<<()<<
;
}
运行结果:
The
distance1
:
19.799
The
distance2
:
1.41421
The
distances
IThe
distance4
:
21.2132
|Pressanykey
tocontinue
思考:
(1)指出所有的构造函数,它们在本程序中分别起什么作用?
();();();第一个实现单参和带有一个默认参数构造,第二个实现双参构造;第三个事拷贝构造函数。
(实际上前两个可以合并为一个();).
()指出设置默认参数的构造函数。
(前面已回答)
()指出友元函数。
将友元函数放到私有部分,观察结果是否有变化。
友元函数为:
();放到私有部分是没有变化的。
()写出结果并分析结果。
(结果已给出)
题目、静态成员的应用
任务
定义一个类,在该类中定义包括一个数据成员()(分数)、两个静态数据成员(总分)和学生人数;成员函数()用于设置分数、求总分和累加学生人数;静态成员函数()用于计算总分;静态成员函数()用于计算平均值。
在(函数中输入学生成绩,并调用上述函数求出全班学生的总分和平均分。
源程序代码:
<>
J
;
;
(){;}
(){>>;}
(){;}
(){<<”这个班的学生该课程的总分为:
"<<<<;}
(){<<"这个班的学生该课程的平均分为:
"<<<<;}
};
J
;
()
{
口;
<<"请输入个学生的成绩
(<)
[]();
<<”这个学生的成绩为
(<)
<<[]()<<;<<;
();
();
}
运行结果:
题目、友元函数的应用
任务声明和两个类,二者都有属性,定义二者的一个友元函数(),计算二者的重量和0
源程序代码:
<>
;
;
{
;
()(){}
(){<<"请输入你在类中所要设置的值:
”;>>;}
(){<<""<<<<;}
();
};
{
;
()(){}
(){<<"请输入你在类所要设置的值:
”;>>;}
(){<<""<<<<;}
();
};
()
{
<<"二者的重量之和为:
"<<<<;
}
()
{
;
()();
()();
();
}这里子两个类中属性比较单一,主要是为使用友元函数,如果需要可以添加其他属性。
运行结果:
请输入你在Bonk夷所要设置weight的值:
45・78
iSight=45-78
情输入你在Rui”类中所要设置邸曰均卜七的值:
78-58
weight=78,98
二者的重量之和为:
124.76
Pressanykeytocontinue
实验五、继承与派生
题目、单继承
任务调试下列程序,并对程序进行修改,指出程序中错误的原因
程序代码:
<>
;{
(){;}
(){;}
J
};
{
(){;}
(){;}
(){<<""<<<<;}
};
(){
语句
()语句
()语句
();
<<""<<<<;
<<""<<<<;
<<""<<()<<;
<<""<<()<<;
;
}
运行结果:
fl:
:
a=6
H:
:
a=6
B:
:
h=3
A:
:
a=6
B:
:
a=3
Pressanykeytocontinue
问题
(1)、将派生类的继承方式改为,会出现那些错误和不正常的现象?
为什么?
在()函数中直接使用用类的属性将是不可以的,因为继承方式是所以其属性将
不可以直接被调用!
(2)将派生类的继承方式改为,会出现哪些错误和不正常的现象?
为什么?
同
()支部过集成的方式改为。
(3)将派生类的继承方式恢复为后,再将类的数据成员型的变量的访问权限改为时,会出现哪些错误和不正常的现象?
为什么?
将会出现在类和函数中是用数据是不可以的,一维在类中是属性为。
(4)派生类的继承方式仍为,再将类中的数据成员型的变量的访问权限该为,
会出现哪些错误和不正常的现象?
为什么?
更改后数据在类中是可以使用,但在
函数仍是不可以被使用的,因为继承方式是!
题目、利用继承与派生类来管理学生和教师的档案任务
假设要管理下述基类人员的如下的数据
(教师):
姓名、性别、年龄、职称、教授课程;
(学生):
姓名、性别、年龄、学号、专业;
():
姓名、性别、年龄、学号、专业、导师;
源程序代码:
<>
<>
()()()(){}
(){<<"姓名:
"<<<<"性别:
"<<<<"年龄:
"<<;}};
()()()(){}
(){();<<"职称:
"<<<<"教授课程:
"<<<<;}};
{
()()()(){}
(){();<<"学号:
"<<<<"专业:
"<<;}};
{
J
()()(){}
(){()<<"导师:
"<<<<;}
};
()
{
("张三","男","教授","面向对象程序设计");
(“李四","男","",”计算机科学与技术");
("李红","女","",”计算机科学与技术”,”张三)
();
()<<;
();
}
运行结果:
题目、教师干部类
定义(人)类,由分别派生(教师)类和(干部)类,再有(教师)类和类采用多重继承的方式派生出(教师兼干部)类。
源程序代码:
<>
<>
J
()()()(){}
(){<<"姓名:
"<<<<"性别:
"<<<<"年龄:
"<<;}};
{
J
()()(){}
(){();<<"职称:
"<<;}
(){<<"职称:
"<<;}
};
{
J
()()(){}
(){();<<"职务:
"<<;}
(){<<"职务:
"<<;}
};
{
J
()()()()(){}
(){();()();<<"工资:
"<<<<;}
);
()
(
("张三"「男","教授)
("李四"「男","校长)
("王五"「女"」教授","院长)
()<<;
()<<;
();
)
运行结果:
实验六、虚函数与多态题目、动态联编和静态联编任务
分析并调试下列程序程序代码:
<>
;
(
(){<<"()"<<<<;}(){<<"()"<<<<;}(){<<"()"<<<<;}
};
{
(){<<"()"<<<<;}(){<<"()"<<<<;}(){<<"()"<<<<;}
};
()
{
;
*;
;
*;
;
>();
>();
>();
>();
>();
J
}运行结果:
Derived:
:
F
Derived:
:
f
:
s 引*〉3,14Derived=: h D«rived: : h 问题: (1)找出以上程序张是使用了重载和覆盖的函数。 覆盖的有();和();重载的有()和(); ()写出程序的输出结果,并解释结果。 结果已截图解释省去 题目、动态联编和静态联编 任务 分析并调试下列程序: <> ; ;{ (); }; { (){;} (){**;} J }; { (){;} (){*;} J }; (){;} (){**;} J }; { (){;} (){*;} J }; (*[]) { ; (<) []>(); ; } () { *[]; 口(); 口(); 口(); 口(); 口(); (); <<""<<<<; ; } 运行结果: 问题 (1)指出抽象类; (2)指出纯虚函数,并说明它的作用。 ()是抽象类,作用是为同类的函数日工同意的外部接口。 ()每个类的作用是什么,正程序的作用是什么? 读者可以通过读程序就会明白该程序的作用和每个类的作用,所以就不在这里做过多的解释。 题目.图形类的设计 任务 定义抽象类; { ()任意图形的面积 ()任意图形的体积 }; 要求 (1)定义派生类(圆)、(矩形),并实现相应的纯虚函数。 (2)定义,使得到通过一如下方式统一操作和图形。 ()(){}; (){();} (){();} }; 源程序代码: <> ; ; { (); (); }; { (){;} (){**;} (){;}注意着里即使不用()属性也要对其进行一定函数实现 J }; { (){;} (){*;} (){;} J }; { (){;} (){**;} (){;} J }; { (){;} (){*;} (){;} J }; { (){**;} (){;} (){;} J }; ()(){}; (){();} (){();}}; () ( ();()(); ()()(); <<"圆的面积为: "<<()<<; <<"球的体积为: "<<()<<; <<"矩形的面积为: "<<()<<; ) 运行结果: 78-5375 720 : 50 tocontinue 题目、运算符重载 任务定义一个用来保存时间(时、分、秒),通过重载操作符实现两个时间的相加。 要求定义一个类,包括个数据成员: (时)、(分)、(秒),另外两个构造函数,时间相加运算符重载函数输出函数(). 源程序代码: <> <> ; ( J (){>>>;} (){;} () {;} () {<<"现在时间为: "(''); <<()<<<<": "<<()<<<<": "<<()<<<<; } }; () { ()(); ()(); ; (); 运行结果: 现在网间为二型二蹈二例现在时间为=10=10: 10现在时间为: 15: 15: 15 Pressanykeytocontinue 实验、模板与库 题目、函数模板 任务编写一个函数模板实现个数据的最小值,具体要求为: 能求不同的数据类型的最小值,个数据由键盘输入。 可以用、、等类型的参数,并在函数进行测试。 源程序代码: <> J <> (*) ( []; (<) ([]<)[]; ; ) () ( ; <<"请输入的值: ”;>>; *[]; *[]; <<"请输入"<<<<"个整型的数: ”; (<)>>[]; <<"请输入"<<<<"个双精度的数: "; (<)>>[]; <<<<<<"个整型数中最小的是: "<<()<<; <<<<"个双精度数最小的是: "<<()<<; []; []; ) 运行结果: 题目、类模板 任务编写一个使用类模板对数组经型排序、查找和求元素的和的程序,并才用相关的数据进行测试。 源程序代码: <> <> ()(){} (*){;VV”请输入“vvvv”个数据"(V)>>口VV”该数组的原始数据是: ";(<) «[]««;} (){(<)(<)([]<[]){;[][][][];}} (){(<)([]);;} (){;(<)[];;} VV”请输入您想要建立的数组元素的个数 [];[]; <>0<>0; 00; VV”请分别输入您所要查找的整型和双精度数: ”>>>>; «(())«"您所要查找的整型数在"«()«"位"VV"查找失败"; «(())«"您所要查找的双进度数在"«()«"位"VV"查找失败”VV; ()«"整型数排序后的顺序为: "(V)«[]««; ()«"双精度数排序后的顺序为: ”(v)vv口vvvv; «"整型数组的和为: ”VV()VV;VV”双精度数组的和为: "«()«;运行结果: 题目、标准模板库的应用 任务 声明一个整型的数组,使用标准模板库()中查找算法()惊醒数据的查找,然后排序算法()对数据进行升序和降序排序。 源程序代码: <> <> <> <> ; () ( []{}; ()(); <>(); <>(,""); <<"数组的原始数据为: "; (()()); <<"数组值相等的第一个元素为: "; <<*(()())<<; (()()); <<<<"升序排列后: "; (()()); (()()<>()); <<<<"降序排列后: ”; (()()); <<; } 运行结果: 实验八、的输入、输出流于文件操作 题目、格式化输入输出 任务 以左对齐的方式输出整数,域宽为; 打印有符号数和无符号数; 将十进制整数以开头的十六进制格式输出; 用前导*格式打印;域宽为; 源程序代码: <> <> ; () {;;; <<()<<<<; <<<<; <<<<; <<<<<<; ()('*');<<<<; ) 运行结果: 100 200 200 c8_911 Pressanykeytocontinue 题目、文本文件操作 任务编写程序,打开文件,向其中写入行字符,关闭文件。 然后以读写方式打开,输出文件。 源程序代码: <> <> <> ; () { [];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 试题 答案