1、国家二级 C+机试(操作题)模拟试卷 354及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modicpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为: c Test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 #include void main() *error* char c=“c”: coutc“Test”_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi
2、2cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。 程序分析:以 3月 5日为例,应该先把前两个月的天数加起来,然后再加上 5天即本年的第几天(特殊情况:闰年输入月份大于 3时需考虑多加一天)。 注意:只能补充函数 func(int year,int monthintday),请勿改动其他部分的内容。 #inClude int func(int year,int month,intday) void msin() coutfunc(2007,2,1)func(2007,10,10)func(2008,8,12)_三、综合应用题(总题数:1,分
3、数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 TestClassl的成员函数 seta定义,定义 seta对象 x为 int类型, 请在注释*1*后添加适当的语句。 (2)完成类 TestClass1(共有)和类 YestClass2(私有)派生类 TestClass3的定义,请在注释*2*后添加适当的语句。 (3)定义类 TestClass3中的私有成员 C为 int,请在注释*3*后添加适当的语句。 (4)完成 setc中对基类的变量a的赋值,请在注释*4*后添加适当的语句。 注意
4、:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include C1ass TestClass1 int a; public: *1* return a=x; voi d s howa() cout a e ndl: ; C1ass TestClass2 int b; public: void Setb(int x) b=x ; void showb() coutb c endl; ; void mai n() TestCiass3 c ; cseta(5); cshowa(); cSetc(5,7,4); cShowc(); (分数:2.00)_国家二级 C+
5、机试(操作题)模拟试卷 354答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modicpp,该程序运行时有错,请改正其中错误,使得程序正常运行,并使程序输出的结果为: c Test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构, 错误的语句在*error*的下面。 #include void main() *error* char c=“c”: coutc“Test”_正确答案:(正确答案:(1)char c=c; (2)int b=102 4; (3)b+= 1 0 2 4;)解
6、析:解析:本题的功能是输出字符 c和字符串 Test。因为本题程序中不存在复杂的结构,解题思路,从己定源程序的 main主函数依次处理错误提示下的语句即可。二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。 程序分析:以 3月 5日为例,应该先把前两个月的天数加起来,然后再加上 5天即本年的第几天(特殊情况:闰年输入月份大于 3时需考虑多加一天)。 注意:只能补充函数 func(int year,int monthintday),请勿改动其他部分
7、的内容。 #inClude int func(int year,int month,intday) void msin() coutfunc(2007,2,1)func(2007,10,10)func(2008,8,12)_正确答案:(正确答案:int sum; int leapyear; switch(month)*先计算某月以前月份的总天数* case 1: sum=0; break; case 2: sum=31; break; case 3: sum=59; break; case 4: Sum=90; break; case 5: Sum=120; break; case 6: su
8、m=151; break; case 7: sum=181; break; case 8: sum=212; break; caSe 9: sum=243; break; case 10: sum=273; break; case 11: sum=304; break; case 12: sum=334; break; default: cout“data error”endl; break; sum=sum+day; if(year400=0(year4=0&year100!=0)*判断是不是闰年* leapyear=1; else leapyear=0; if(1eapyear=1&mon
9、th2) sum+; return sum;)解析:解析:函数函数 func(int year,int month,int day)返回某一天属于这一年的第几天,可以把该月之前的所有天数加起来再加上本月的第几天得到返回值,一种特殊情况需要注意,闰年时 2月会多一天,这个时候可以先判断是否是闰年,如果是再看是不是二月以后,如果是则加在前面结果的基础上在加一天。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 TestClassl的成员函数 seta定义,定义 s
10、eta对象 x为 int类型, 请在注释*1*后添加适当的语句。 (2)完成类 TestClass1(共有)和类 YestClass2(私有)派生类 TestClass3的定义,请在注释*2*后添加适当的语句。 (3)定义类 TestClass3中的私有成员 C为 int,请在注释*3*后添加适当的语句。 (4)完成 setc中对基类的变量a的赋值,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include C1ass TestClass1 int a; public: *1* return a=x; voi d s h
11、owa() cout a e ndl: ; C1ass TestClass2 int b; public: void Setb(int x) b=x ; void showb() coutb c endl; ; void mai n() TestCiass3 c ; cseta(5); cshowa(); cSetc(5,7,4); cShowc(); (分数:2.00)_正确答案:(正确答案:(1)添加语句:int seta(int x) (2)添加语句:class Testclass3:public TestClass1, private TestClass2 (3)添加语句:int c; (4)添加语句:seta(x);)解析:解析:本题的功能是利用类中的成员函数设置数值,并将其输出。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类。TestClass 实现各种输出操作。