1、国家二级 C+机试(操作题)模拟试卷 392及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: TestClass2 TestClass3 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 #include Class TestClass1 public: virtual Void fun()=0; ; class TestClass2:public Test
2、Classl *error* int fun() using namespace std; cout“TestClass2”“TestClass3”fun(); obj 2fun(); return; (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2epp。阅读下列函数说明和代码。函数sort(int&m,int&n,mt&1)实现将三个整数 m、n、1 由大到小输出。m 最大,1 最小。 程序分析:程序实现时,可以把最大的数放到 m上,先将 m与 n进行比较,如果 mn则将 m与 n的值进行交换,然后再用 m与 1进行比
3、较,如果 m1则将 m与 1的值进行交换,这样能使 m最大。然后再将 n与 1进行比较,若 n void sort(intm,intn,int1) int main() int=9 ; int y=13; int z=一 3; sort(x,y,z); coutx,。y,Z_三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义私有成员变量year、month、day,分别表示年、月、曰,类型为 int。请在注释*1*后添
4、加适当的语句。 (2)完成构造函数,分别给 year、month、day 赋值,请在注释*2*后添加适当的语句。 (3)完成重载符号“+=”的定义,请在注释*3*后添加适当的语句。 (4)完成print()打印函数,如 2008年 8月 8日到屏幕和文件 modi3txt 格式相同,请在注释*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamh#includefstream#includeiomanip#includecmathusing namespace std;void WriteFile(int c)
5、 0fstream out1; out1open(“modi 3txt”,ios base:app); out1c : out1close();void WriteFile(char*str) ofstream out1; out1open(“modi3txt”,ios base:app); outlstr;out1close();void ClearFiie() ofstream out1; out1open(“modi3txt”);out1close();cass Datepublic: Date(int y,int m,int d) *2* void print()const;*3* m
6、onth+=m; int i=month1 2; int j=month12; if(j=0) year+=(i 一 1); month=12; else year+=i; month=j; return*this; private:*1*;void Date:print()const *4* WriteFile(year); WriteFile(“年”); WriteFile(month); WriteFile(“月”); WriteFile(day); WriteFile(“日”);int msin() ClearFile(); Date Olyday(2 0 0 8,8,8); Oly
7、day+=3; Olydayprint(); return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 392答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为: TestClass2 TestClass3 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 #include Class TestClass1 public: virtual Voi
8、d fun()=0; ; class TestClass2:public TestClassl *error* int fun() using namespace std; cout“TestClass2”“TestClass3”fun(); obj 2fun(); return; (分数:2.00)_正确答案:(正确答案:(1)void fun() (2)添加语句:public: (3) std:cout“TestClass3”解析:解析:本题程序中的功能为输出字符串 TestClass2和 TestClass3。从已定源程序的 main主函数开始入手,可以看出程序通过定义类的对象,利用类中
9、定义的成员函数完成题目中要求的输出。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2epp。阅读下列函数说明和代码。函数sort(int&m,int&n,mt&1)实现将三个整数 m、n、1 由大到小输出。m 最大,1 最小。 程序分析:程序实现时,可以把最大的数放到 m上,先将 m与 n进行比较,如果 mn则将 m与 n的值进行交换,然后再用 m与 1进行比较,如果 m1则将 m与 1的值进行交换,这样能使 m最大。然后再将 n与 1进行比较,若 n void sort(intm,intn,int1) int main() int=9 ;
10、int y=13; int z=一 3; sort(x,y,z); coutx,。y,Z_正确答案:(正确答案:Int t; if(mn) t=m;m=n;n=t;)*交换 x,y 的值* if(m1) t=mj m=1 ; 1=t;)*交换 x,z 的值* if(n1) t=n;n=1;1=t;*交换 x,y 的值*)解析:解析:sort 函数实现 3个参数的从大到小的排序,可以采用很多方法来排序,比如选择法排序、冒泡法排序等,这里要求采用比较的方法来实现排序,由于需要排序的数据较少,只有 3个,逐个比较就可以找到最大最值小进行排序。三、综合应用题(总题数:1,分数:2.00)3.使用 VC
11、6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义私有成员变量year、month、day,分别表示年、月、曰,类型为 int。请在注释*1*后添加适当的语句。 (2)完成构造函数,分别给 year、month、day 赋值,请在注释*2*后添加适当的语句。 (3)完成重载符号“+=”的定义,请在注释*3*后添加适当的语句。 (4)完成print()打印函数,如 2008年 8月 8日到屏幕和文件 modi3txt 格式相同,请在注释*4*后添加适当的语句。 注意:仅在函数指
12、定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamh#includefstream#includeiomanip#includecmathusing namespace std;void WriteFile(int c) 0fstream out1; out1open(“modi 3txt”,ios base:app); out1c : out1close();void WriteFile(char*str) ofstream out1; out1open(“modi3txt”,ios base:app); outlstr;out1close();
13、void ClearFiie() ofstream out1; out1open(“modi3txt”);out1close();cass Datepublic: Date(int y,int m,int d) *2* void print()const;*3* month+=m; int i=month1 2; int j=month12; if(j=0) year+=(i 一 1); month=12; else year+=i; month=j; return*this; private:*1*;void Date:print()const *4* WriteFile(year); Wr
14、iteFile(“年”); WriteFile(month); WriteFile(“月”); WriteFile(day); WriteFile(“日”);int msin() ClearFile(); Date Olyday(2 0 0 8,8,8); Oly day+=3; Olydayprint(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:int year,month,day; (2)添加语句:year=y;month=m;day=d; (3)添加语句:Dateoperator+=(int m) (4)添加语句: coutyear“年”month”月”day”日”endl;)解析:解析:在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main主函数开始入手,可以看出程序通过调用类 Date和函数 print实现各种输出操作。