1、国家二级 C+机试(操作题)模拟试卷 302及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modicpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。 程序输出: s1:n=20 s2:n=10 执行 s3add(s1,s2) s3:n=30 s4:n=30 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhclass TestClass int n;public: TestClass() TestCla
2、ss(int m) n=m; *errOr* TestClass add(TestClass s1,s2) this-n=s1n+s2n; *error* return(this); Void disp() cout n=“nenctl; *error*void main() TestClass s1(20),s2(10),s3,s4; cout“s1:“; s1disp(); cout“s2:“; s2disp(); s4=s3add(S1,s2); cout“执行 s3add(s1,s2)ns3:“; s3disp(); cout“s4:“;s4disp();(分数:2.00)_二、简单应
3、用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str)的功能是去掉字符串 str中相同的字母,并将处理后的结果存到 des所指的字符串中。例如: 输入:This is great! 输出:This grea! 注意:不能修改程序的其他部分,只能补充 fun()函数。 #include #define MAXLEN 1024 Void convert(char*des,char* str) void main() char sourMAXLEN; char
4、 destMAXLEN; coutn=s1n+s2n:”语句中的 this变量为指针变量,所以第 2个标识下的“return(this);”返回语句中的 this变量,应该返回指针型,所以修改为“return(*this);”。 (3)C+中类的定义格式应为“class 类名);”,以分号为结尾,所以第 3个标识下,类结尾处补充分号“;”,即修改为“:”。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,补充空出的代码。函数 convert(char*des,char*str)的功能是去掉字符串 str中相同的字
5、母,并将处理后的结果存到 des所指的字符串中。例如: 输入:This is great! 输出:This grea! 注意:不能修改程序的其他部分,只能补充 fun()函数。 #include #define MAXLEN 1024 Void convert(char*des,char* str) void main() char sourMAXLEN; char destMAXLEN; cout“Please input a string: “dest_正确答案:(正确答案:int 1,j; bool TuAdd; des0=0; for(i=0;stri!=NULL;i+) ToAdd=
6、true; for(j=0;desj!=NULL;j+) if(stri=desj) ToAdd=false;des 数组中已存在该元素,将标志位设置为假,说明不用再添加 break;des 数组中已存在该元素,跳出循环 if(ToAdd)des 数组中不存在,添加进来 desj=stri; desj+1=0 ; )解析:解析:(1)由审题分析可知,需要两重循环,外层循环不断读取 str中的元素,内循环在 des数组中查找读到的 str中的字符,如果找到了 des数组中已存在该元素不需要添加,如果没找到则添加到 des数组中。 (2)在外循环体内,先设置 bool型的标志变量 ToAdd为真,
7、假设 stri不存在在 des数组中,然后再内循环中,用 stri和 desj比较如果相同说明已经存在了,将 ToAdd设置为假,desj后面的元素不需要再比较了,跳出内循环。 (3)通过判断 ToAdd可知,stri是否存在 des数组中,如果ToAdd为真,则说明 des数组中不存在 stri,将 stri添加到 des数组中。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp,其中定义了用于表示日期的类 Date,但类 Date的定义并不完整。请按要求完成下列操作,将类 Date的定义补充完成。 (1)定义私有数据成员year、mo
8、nth 和 day,分别用于表示年、月和日,它们都是 int型的数据。请在注释*1*之后添加适当的语句。 (2)完成默认构造函数 Date的定义,使 Date对象的默认值为:year=1,month=1,day=1,请在注释*2*之后添加适当的语句。 (3)完成重载构造函数 Date(int y,int m,int d)的定义,把数据成员 year、month 和 day分别初始化为参数 y、m和 d的值,请在注释*3*之后添加适当的语句。 (4)完成成员函数 print()的类外定义,使其以“年一月一日”的格式将 Date对象的值输出到屏幕上,例如:2008-8-8。请在注释*4*之后添加适
9、当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#includeiostreamhClass Datepublic: *2* Date(int y,int m,int d) *3* void print()const;private: data member *1*;void Date:print()const *4*int main() Date national_day(1949,10,1); national_dayprint(); return 0;(分数:2.00)_正确答案:(正确答案:(1)添加语句:int year,month,day;
10、 (2)添加语句:Date()year=1;month=1;day=1; (3)添加语句:year:y;month:m;day:dj (4)添加语句:coutyear“-“month“-“dayendl;)解析:解析:(1)题目 1要求“定义私有数据成员 year、month 和 day,分别用于表示年、月和日,它们都是 int型的数据”。在 C+程序的 private区域中添加变量 year、month、day 的定义,即在第 1个标识下添加“int year,month,day;”。 (2)题目 2要求“完成默认构造函数 Date的定义,使 Date对象的默认值为:year=1,month
11、=1,day=1”。在 C+中,构造函数是一种特殊的成员函数,它的名字与类同名。在 Date构造函数体内,根据题目要求,设置变量默认值“year=1,month=1,day=1”,即:“Date()year=1;month=1;day=1;”。 (3)题目 3要求“完成重载构造函数 Date(int y,intm,int d)的定义,把数据成员 year、month 和 day分别初始化为参数 y、m 和 d的值。”在构造函数 Date(inty,int rn,int d)函数体内,即标识 3下,添加赋值语句,将 y,m,d 赋值给 year,month,day,即“year=y;month=m;day=d;”。 (4)题目 4要求“完成成员函数 print()的类外定义,使其以“年一月一日”的格式将 Date对象的值输出到屏幕上”。在程序中的 void Date:print()const 函数体内,标识 4下,添加输出语句。根据 cout输出格式,实现题目中的输出要求,即“coutyear“-“month“-”dayendl;”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1