1、国家二级 C+机试(操作题)模拟试卷 339及答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 pmjl,此工程包含个源程序文件projlcpp。其中位于每个注释“ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:You are right 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。projlcpp#includeiostreamusing namespace std;class MyClasspubl
2、ic: MyClass(int X):number(x)lERROR *found* 一MyClass(int X)ERROR *found* void Judge(MyClassint main() CRectangle rect(4,5); CTriangle trgl(4,5); *found*_*ppolyl,*ppoly2;ppoly1= return 0;(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)4.使用 VC6打开考生文件夹 proj3下的工程 proj3,其中定义了一个字符串变量类 StringVar。类成员的说明在程序注释中。请在*333*和*666*之
3、间填写StringVar成员函数和友元函数的实现代码。在 main函数中给出了一组测试数据,运行时输入: Hello Kitty 此情况下程序的输出应该是: Hello Kitty Borg Borg 注意:只需在*333*和*666*之间填入所编写的若干语句,不要改动程序中的其他内容。StringVarh#includeiostream#includecstdl ib#includecstddef#includecstringUSing namespace std;void writeToFile (const char *path);class StringVar public: Stri
4、ngVar(int size);构造函数,size 为字符串长度(字符个数)初始值;字符串内容初始化为空串 StringVar(const char a);构造函数,用参数数组 a的内容初始化当前对象 StringVar (const StringVar析构函数 int length()constreturn Strlen(value);) 从输入流 ins输入一个字符串,其中可以包括空格 void input_line(istream coutname2endl; coutname3endl; writeToFile(”); return 0; writeToFilecpp #include
5、iostream #includefstream #includeSstream #includestring using namespace std; #include”StringVarh” void writeToFile(const char*path) char filename30; strcpy(filename,path); strcat(filename,”outdat”); ofstream fout(filename); istringstream is(string(”Jenny Zheng”); StringVar namel(40),name2(” John”);
6、name1input_line(is); StringVar name3(name2); foutnamelname2name3; foutclose();(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 339答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 pmjl,此工程包含个源程序文件projlcpp。其中位于每个注释“ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:You are right 注意:只修改注释“ERROR *f
7、ound*”的下一行语句,不要改动程序中的其他内容。projlcpp#includeiostreamusing namespace std;class MyClasspublic: MyClass(int X):number(x)lERROR *found* 一MyClass(int X)ERROR *found* void Judge(MyClassint main() CRectangle rect(4,5); CTriangle trgl(4,5); *found*_*ppolyl,*ppoly2;ppoly1= return 0;(分数:2.00)_正确答案:(正确答案:(1)virt
8、ual int area(void)=0; (2)area() (3)length*height (4)Cpolygon)解析:解析:(1)主要考查考生对纯虚函数的掌握,在定义纯虚函数时要看在派生类中函数的定义:im area,(void)。由此可知纯虚函数应该为:virtual int area(void)=0;。 (2)主要考查考生对纯虚函数的掌握情况,由 void printarea (void)可知,该函数要打印面积,因此在此要调用纯虚函数 area,即contarea()。 (3)主要考查考生对数学公式的掌握,该函数要返回三角形面积,三角形的面积公式为长乘以该边上的高除以 2,即 r
9、eturn(length*height)2;。 (4)主要考查考生对抽象类的掌握情况,根据程序段: ppoly1=构造函数,size 为字符串长度(字符个数)初始值;字符串内容初始化为空串 StringVar(const char a);构造函数,用参数数组 a的内容初始化当前对象 StringVar (const StringVar析构函数 int length()constreturn Strlen(value);) 从输入流 ins输入一个字符串,其中可以包括空格 void input_line(istream coutname2endl; coutname3endl; writeToF
10、ile(”); return 0; writeToFilecpp #includeiostream #includefstream #includeSstream #includestring using namespace std; #include”StringVarh” void writeToFile(const char*path) char filename30; strcpy(filename,path); strcat(filename,”outdat”); ofstream fout(filename); istringstream is(string(”Jenny Zhen
11、g”); StringVar namel(40),name2(” John”); name1input_line(is); StringVar name3(name2); foutnamelname2name3; foutclose();(分数:2.00)_正确答案:(正确答案:StringVar:StringVar(int size):max length(size)使用成员初始化列表初始化 max_length value=new charsize; value0=0; StringVar:StringVar(const char a ) max_length=strlen(a)+1; v
12、alue=new charmax_length;strcpy(value,a), StringVar: StringVar (const StringVar strcpy(value,strobjvalue); void StringVar:input_line(istream& ins) int i=0; char ch; while(imax,1ength 一 1(ch =insget()!=/n) valuei+=ch; valuei=0; ostream&operator(ostream&outs, const StringVar the_string) outsthe_stringgetValue() end1; return outs; )解析: