国家二级C++机试(操作题)模拟试卷406
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行。并且使程序输出的结果为:
OK
注意:错误的语句在∥********error********的下面,修改该语句即可。
#include
Class CBase
{
public:
CBase()
{
a=b=0;
}
prirate:
int a,b;
};
class CDerirel:public CBase
{
public:
CDerivel()
{
}
∥********error********
virtual void func();
};
class CDerive2:publiC CDerivel
{
public:
CDerive2()
{
a=0;
b=0;
}
void func()
{
∥********error********
cout<<“OK”<endl;
}
private:
int a;
int b;
};
void msin()
{
CDerive2 obj;
∥********error********
CDerivel *p =(CDerirel*)
obj;
P一>funC();
}
(1)virtual Void func()=0;
(2)cout<<“OK”<<endl;
(3)CDerivel*p=(CDerivel*)&obj;
解析:程序中定义了类CBase、CDerive1和CDerive2,类CDerive1公有派生于类CBase,CDerive2公有派生于类CDerive1,在类CDerive1中定义了虚函数func0,但是没有给出具体实现,派生类CDerive2中给出了func0函数的具体实现,因此CDerive1类中的func0函数是纯虚函数。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(char*s,char*s1,char*s2)中形参字符串s1和s2有相同的字符个数,且s1中各字符互不相同。该函数实现将已知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。
例如:设字符串s、s1和s2分别为:
s[]=“ABCABC”,
s1[]=“AC”,
s2[]=“ZX”
则s2中的字符z和X分别对应s1中的字符C和A,函数调用fun(s,s1,s2)将字符串s的内容变为“ZBXZBX”。
注意:不能修改程序的其他部分,只能修改fun()函数。
#include
void fun(char*s,char*s1,char
*s2)
{
}
void main()
{
char s[]=“ABCABC”;
fun(s,“AC”,“ZX”);
std::cout<<s<<std::end1;
return;
}
char *p,*q;
for(;*s;s++)
//在串s中找符合条件的字符,然后替换
{
for(p=s1,q=s2 ;*p ; p++,q++)
//让指针p,q分别指向s 1和s 2
{
if(*p==*s)
//如果s中存在s l中p指向的字符
{
*s=*q;
//那么用q指向的s2中的字符替换
}
}
}
解析:(1)该程序功能是将己知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。它的解题思路,首先是找到符合替换条件的字符,然后进行替换。
(2)从己给部分源程序的main主函数开始入手,核心函数void fun(char*s,char*s1,char*s2)中的s1,s2参数为要替换的字符串,s为要被替换的字符串。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)完成类MyArrayClass的构造函数,申请数组的大小,请在注释∥********1********后添加适当的语句。
(2)完成类MyArrayClass的析构函数,释放数组,请在注释∥********2********后添加适当的语句。
(3)完成重载运算符“[]”,用来获得指定下标的数据,请在注释∥********3********后添加适当的语句。
(4)完成函数SetElement(),用来设置指定下标的数据。如果数据没有超出范围,则设置数据,并返回1,否则返回0,请在注释∥********4********后添加适当的语句。
注意:除在指定的位置添加语句外,并不要更改程序中的其他语句。
#include
template
class MyArrayClass
{
private:
T*data;
int length;
public:
MyArrayClass(int len)
{
length=len;
∥********1********
}
一MyArrayClas S()
{
∥********2********
}
T&operator[](int i)
{
∥********3********
}
bool SetElement(int i,T t)
{
∥********4********
if()
{
data[i]=t;
return true;
}
return false;
}
};
int
本文档预览:3600字符,共4151字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载