1、国家二级 C+机试(操作题)模拟试卷 316及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为: TestClass1 TestClass2 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamh#includeasserthstruCt TestClass0 *error* virtual void fun();class Test
2、Classl:publicTestClass0 void fun() cout“TestClass1“endl; ;class TestClass2:publicTestClass0 Void fun() ( cout“TestClass2“endl; ;Void main() TestClass0*p; TestClass1 obj1; TestClass2 obj2; *error* P=*obj1; P-fun(); *error* p=*obj 2; p-fun(); return;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序
3、文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。完成函数 ToUpper(char*des,char*str),该函数实现把 str字符串中小写字符转换成大写字符,并存发在 des中。 例如:str=“aBcdrFGHijK”; 则:des=“ABCDEFGHIJK”; 注意:不能修改程序的其他部分,只能补充 Toupper()函数。 #include #define MAXLEN 1024 void ToUpper(char* des,char* str) void main() char destMAXLEN; char*str=“aBcdrFGHiJ K“; Touppe
4、r(dest,str); cout=astri=z,即该字符比z小,而且比a大,如果满足该条件则在该字符基础上加上(A-a)值转换为大写字母;如果是其他字符的话,无需转换,直接刚该字符放到 des数组中。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义私有成员变量year、month、day,分别表示年、月、日,类型为 int。请在注释*1*后添加适当的语句。 (2)完成构造函数,分别给 year、month、day
5、 赋值,请在注释*2*后添加适当的语句。 (3)完成重载符号“+=”的定义,请在注释*3*后添加适当的语句。 (4)完成print()打印函数,如 2008年 8月 8日到屏幕和文件 modi3txt 格式相同,请在注释*4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的任何内容。#includeiostreamh#includefstream#includeiomanip#includecmathusing namespace std;void WriteFile(int c) ofstream out1; out1open(“modi3txt“,
6、ios base:app); out1c ; out1close(); void WriteFile(char*str) ofstream out1; out1open(“modi3txt“,ios base:app); out1str;out1Close();void ClearFile() ofstream out1; out1open(“modi3txt“);out1Close();class Datepublic: Date(int y,int m,int d) *2* void print()const; *3* month+=m; int i=month12; int j=mont
7、h12; 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 main() ClearFile(); Date oly day(2008,8,8); oly day+=3; oly dayprint(); return 0;(分数:2
8、.00)_正确答案:(正确答案:(1)添加语句:int year,month,day; (2)添加语句:year=y;month=m;day=d; (3)添加语句:Dateoperator+=(int m) (4)添加语句:coutyear“年“month“月“dav“日“endl;)解析:解析:(1)题目 l要求“定义私有成员变量 year、month、day”。在 C+程序的 private区域中添加变量 year、month、day 的定义,即在第 1个标识下添加“int year,month,day;”。 (2)题目 2要求“完成构造函数,分别给 year、month、day 赋值”。
9、在程序中“Date(int y,int m,int d)”的构造函数中添加给 year、month、day 赋值的语句,即在第 2个标识下添加“year=y;month=m;day=d;”。 (3)题目 3要求“完成重载符号“+=”的定义”。在 C+中,运算符重载的定义方法是定义一个重载运算符的函数,格式为函数 operator+重载运算符号+,所以这里补全“Dateoperator+=(int m)”。 (4)题目 4要求“完成函数 print()打印函数”。在 C+中的 print()函数中补全其打印功能,即在第四个标识下添加“coutyear“年“month“月“day“日“endl;”。