国家二级C++机试(操作题)模拟试卷674
基本操作题
1.请打开考生文件夹下的解决方案文件proj1,此工程中含有一个源程序文件proj1.cpp。其中每个注释\\
(1)Circle(int r): radius(r){ }
(2)void Circle::Display()
(3)c.Display);
解析:(1)主要考查考生对构造函数的掌握,常变量私有成员只能通过成员列表进行初始化。
(2)主要考查考生对成员函数的掌握,在定义类的成员函数时要加上类名和作用域符。
(3)主要考查考生对成员函数调用的掌握,调用成员函数时应使用标识符’.’。
简单应用题
2.请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp,其中定义了Sort类和InsertSort类。Sort是一个表示排序算法的抽象类,成员函数mySort为各种排序算法定义了统一的接口,成员函数swap实现了两个整数的交换操作。InsertSort是Sort的派生类,它重新定义了基类中的成员函数mySort,具体实现了简单插入排序法。本程序的正确输出结果应为:
Before sorting a[ ]=
5,1,7,3,1,6,9,4,2,8,6,
After sorting a[ ]=
1.1.2.3.4.5.6.6.7.8.9,
请首先阅读程序,分析输出结果,然后根据以下要求在横线处填写适当的代码并删除横线,以实现上述功能。
(1)将Sort类的成员函数swap补充完整,实现两个整数的交换操作;
(2)将InsertSort类的构造函数补充完整;
(3)将InsertSort类的成员函数mySort补充完整,实现简单插入排序法(在交换数据时,请使用基类的成员函数swap)。
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动\\
(1)x=y
(2)Sort(a0,n0)
(3)swap(a[j], a[j-1])
(4)break
解析:(1)主要考查考生对成员函数的掌握,题目要求将Sort类的成员函数swap补充完整,实现两个整数的交换操作,因此这里是一个交换操作,程序利用中间值tmp交换x和y的值。
(2)主要考查考生对构造函数的掌握,派生类的构造函数使用成员列表初始化基类。
(3)主要考查考生对成员函数调用的掌握,题目提示:在交换数据时,请使用基类的成员函数swap。因此这里可以直接调用swap函数交换a[j]和a[j-1]的值。
(4)主要考查考生对成员函数的掌握,当条件a[j]<a[j-1]不满足时,说明顺序没问题不需要交换,使用break语句跳出本次循环。
综合应用题
3.请打开考生文件夹下的解决方案文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成proj3.h,重载复合赋值运算符+=。
要求:
补充编制的内容写在//**********333**********与//**********666**********之间,不得修改程序的基他部分。
注意:程序最后将结果输出到文件out.dat中。
//proj3.h
#include <iostream>
#include <iomanip>
using namespace std;
class MiniString
{public:\\t
friend ostream &operator<< ( ostream &output, const MiniString &s ) //重载流插入运算符
{\\toutput << s.sPtr;\\t\\treturn output;\\t}
friend istream &operator>>( istream &input, MiniString &s ) //重载流提取运算符
{\\tchar temp[100 ]; // 用于输入的临时数组
temp[0] = ’\0’;
\\tinput >> setw( 100 ) >> temp;
\\tint inLen = strlen(temp); //输入字符串长度
\\tif( inLen != 0)
{
\\t s.length = inLen; //赋长度
\\t if( s.sPtr!= 0) delete [ ]s.sPtr; // 避免内存泄漏
\\t s.sPtr = new char[s.length + 1 ];
\\t strcpy( s.sPtr, temp ); \\t// 如果s 不是空指针,则拷贝内容
}
else s.sPtr[0 ] = ’\0’; \\t\\t\\t\\t// 如果s 是空指针,则为空字符串
return input;
}
MiniString( const char *s = \\
MiniString&operator+=(const MiniString&s)
{
char* pt = new char[length +1];
strcpy(pt, sPtr);
int blength = length;
length +=s.length;
delete[ ] sPtr;
sPtr = new char[length +1];
strcpy(sPtr, pt);
delete[ ] pt;
for (int i=0;i< s.length;++i)
sPtr[blength +i]= s.sPtr[i];
sPtr[length] =’\0’; // 添加字符串结束符
return *this;
}
解析:主要考查考生对运算符重载的掌握,因为有动态数组,所以要使用new语句来重新分配空间。
本文档预览:3600字符,共3082字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载