国家二级C++机试(操作题)模拟试卷515
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,该工程中包含程序文件main.cpp,其中有类Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门...门是锁着的,打不开。
打开503号门的锁...锁开了。
打开503号门...门打开了。
打开503号门...门是开着的,无须再开门。
锁上503号门...先关门...门锁上了。
注意:只参改每个“//ERROR*******found*******”下的那一行,不要改动程序中的其他内容。
#include<iostream>
using namespace std;
class Door{
int num;//门号
bool closed;//true表示门关着
bool locked;//true表示门锁着
public:
Door(int num){
//ERROR*******found*******
num=this->num;
closed=locked=true;
}
bool isClosed( )const{returnclosed;}
//门关着时返回true,否则返回false
bool isOpened( )const{]Tel2L1rn!closed;}
//门开着时返回true,否则返回false
bool isLocked( )const{return locked;}
//门锁着时返回true,否则返回false
bool isunlocked( )const{return!locked;}
//门未锁时返回true,否则返回false
void open( ){//开门
cout<<endl<<\\
(1)this->num=num;
(2)if(!closed)
(3)void lock( ){
解析:(1)主要考查考生对this指针的掌握,在构造函数中this指针指向的是当前类,因此要给num赋值使用语句this->num=num;完成
(2)主要考查考生对if语句的掌握,先看类的私有成员中关于closed的定义:bool closed;//true表示门关着。再看下一条语句:cout<<\\
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,其中定义了Employee类和Manager类。Employee用于表示某公司的雇员,其属性包括姓名(name)和工作部分(dept)。Manager是Employee的公有派生类,用于表示雇员中的经理。除了姓名和工作部分之外,Manager的属性还包括级别(1evel)。Employee类的成员函数print用于输出雇员的信息;Manager类的成员函数print负责输出经理的信息。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:
Name:Sally Smith
Dept:Sales
Level:2
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
#include<string>
using namespace std;
class Employee{
public:
Employee(string name,string dept):
//*******found*******
_______
{}
Virtual void print( )const;
string dept( )const//返回
部门名称
{
//*******found*******
_______
}
virtual~Employee( ){}
private:
string name_;
string dept_;
},
class Manager:public Employee{
public:
Manager(string name,stringdept,int level):
//*******found*******
_______
{}
virtual voidprint( )const;
private:
int level;
};
void Employee::print( )const
{
cout<<\\
(1)name_(name),dept_(dept)
(2)return dept_;
(3)Employee(name,dept),level_(level)
(4)Employee::print( );
解析:(1)主要考查考生对构造函数的掌握,这里使用成员列表初始化法对私有成员初始化。
(2)主要考查考生对成员函数的掌握,题目要求返回部门名称,因此这里是一条返回语句。函数要求返回的类型为string,因此直接返回dept_即可。
(3)主要考查考生对构造函数的掌握,因为Manager类是Employee类的派生类,因此它的构造函数要先对基类初始化,应使用成员列表初始化。
(4)主要考查考生对虚函数的掌握,因为Manager类是Employee类的派生类,因此它的print函数可以先调用基类的print函数,再输出自身要输出的数据,故为Employee::print( );。
综合应用题
3.请打开考生文件夹下的解决方案文件proj3,其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。请完成成员函数Intersection。在main函数中给出了一组测试数据,此时程序的输出应该是:
求交集前:
1 2 3 5 8 10
2 8 9 11 30 56 67
求交集后:
1 2 3 5 8 10
2 8 9 11 30 56 67
2 8
要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//IntSet.h
#include<iostream>
using namespace std;
const int Max=100;
C1ass IntSet
{
public:
IntSet( )
//构造一个空集合
{
end=-1;
)
IntSet(int a[ ],int size)/
本文档预览:3600字符,共4989字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载