国家二级C++机试(操作题)模拟试卷326
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:
nember=1
nember=10
nember=100
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
//********error********的下面。
#include
Class TestClass
{
public:
TestClass(int i){
nember=i;
}
void SetNember(int m){
nember=m;
}
int GetNember()const{
return nember;
}
void Print()conSt{
cout<<\\
(1)TestClass obj1(1);
(2)obj1.SetNember(10);
(3)obj2.SetNember(100);
解析:(1)第1个标识下,“TestClass obj1;”语句是声明TestClass类的对象obj1,根据TestClass类构造函数的定义TestClass(int i),存在整型参数,并且题目要求第一个输出结果为1,所以补全参数l,即第1个标识下的“TestClass obj1(1);”。
(2)第2个标识下的“obil.nember=10:”应该是调用成员函数SetNember赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNember(10);”。
(3)类是对象的抽象,而对象是类的具体实例。第3个标识下“TestClass.SetNember(100);”语句中的TestClass为类,并不是对象,这里应该是使用定义的对象,即obj2,修改为“obj2.SetNember(100);”。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str)实现的功能是,如果字符串str里面有空格或者不可打印字符,则全部去掉,将转化后的字符串放在字符串des里,然后返回该字符串。
注意:不能修改程序的其他部分,只能补充convert()函数。
#include
#include
#define MAXLEN 1024
char*convert(char*des,char*
str)
{
}
void main()
{
char dest[MAXLEN];
char*str=\\
int j=0;
for(int i=0;str[i] !=NULL;i
++)
{
i f(str[i]!=’’&&isprint
(str[i]))//判断是否是可打印的而且非空格字符
{
des[j++]=str[i]; //添加
}
}
des[j]=NULL;//最后一个字符为空
return des;
解析:(1)由审题分析可知,可利用循环来逐个检索str中的字符,循环变量i从0开始,直到str数组的结束,即str[i]==0为循环结束条件。
(2)在循环中用if语句判断该字符是否是空格或者不可打印字符:if(str[i]!=’’&&isprint(str[i])),如果满足条件说明不是空格或者不是不可打印字符添加到des中,不满足则无须添加到des中。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)在类TestClass中定义name为字符串类型,age为整型,请在注释//********1********后添加语句。
(2)设置类TestClass0的基类为TestClass类的定义,请在注释//********2********后添加语句。
(3)在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0,请在//********3********后添加。
(4)设置类TestClass1的基类为TestClass类的定义,请在//********4********后实现。
本程序输出如下结果:
TestClass class constructor
TestClass0 class constructor
TestClass on class constructor
TestClass1 class constructor
TestClass1 class constructor
TestClass class constructor
TestClassO class constructor
TestClass class constructor
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
Class TestClass
{
//********1********
public:
TestClass(){cout<<\\
(1)添加语句:char*name;int age;
(2)添加语句:class TestClass0:public TestClass
(3)添加语句:-TestClass0 ()
(4)添加语句:class TestClassl:public TestClass
解析:(1)题目1要求“TestClass中定义name为字符串类型,age为整型”。根据题目要求,在程序TestClass类中定义变量name和age,即“char*name;int age;”。
(2)题目2要求“设置类TestClass0的基类为TestClass类的定义”。在C++中,从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为:class派生类名:[继承方式]基类名。根据声明派生类的一般形式,这里补全“class TestClass0:publicTestClass”。
(3)题目3要求“在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0”。析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个“~”符号。题目中要求的类名字为“TestClass0”即这里补全“~TestClass0()”。
(4)题目4要求“设置类TestClass1的基类为TestClass1类的定义”同
本文档预览:3600字符,共3661字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载