1、二级 C+机试-49 及答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test35_1,此工程包含一个源程序文件 test35_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:40040源程序文件 test35_1.cpp 清单如下:#include iostream.hclass Studentpublic:Student(int xx)x=xx;virtual float calcTuition();/* found */private:int x;float Studen
2、t:calcTuition()return float(xx);/* found */class GraduateStudent:public Studentpublic:/* found */GraduateStudent(int xx) :Student(xx)virtual float calcTuition();float GraduateStudent:calcTuition()return float(x*2);void main()Student s(20);GraduateStudent gs(20);couts.calcTuition()end1;coutgs.calcTui
3、tion()end1;(分数:30.00)填空项 1:_二、2简单应用题(总题数:1,分数:40.00)2.请编写一个函数 display(),该函数要求用户先输入一字符串,然后在屏幕上再输出该字符串(假设该字符串长度小于 100)。注意:部分源程序已存在文件 test35_2.cpp 中,请勿修改主函数 main 和其他函数中的任何内容,仅在函数 display()的花括号中填写若干语句。如输入 abc,输出结果如下:please input string:abeabcPress any key to continue文件 test35_2.cpp 的内容如下:#include iostre
4、am.h#include conio.hvoid display()void main( )cout“please input string:“ end1;display ( );(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.使用 VC6 打开考生文件夹下的工程 test35_3。此工程包含一个 test35_3.cpp,其中定义了时钟类clock,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类 clock 的私有数据成员 hour 和 minute,它们都是 int 型的数据。请在注释“/*1*”之后添加适当的语句。(2)补充完全类 cl
5、ock 的构造函数,私有数据成员 hour 和 minute 分别初始化为参数 h 和 m 的值,请在注释“/*2*”之后添加适当的语句。(3)完成类 clock 的成员函数 printtime,的定义,该函数以“Now the time is hour:minute”的格式输出数据成员 hour 和 minute 的值,如 hour=3、minute=59,则输出为“Now the time is 03:59”,请在注释“/*3*”之后添加适当的语句。(4)完成类 clock 的成员函数 addoneminutetime 的定义,该函数可将 clock 类对象表示的时间加一分钟,如现在 ho
6、ur=3、 minute=59,运行该函数后 hour=4、minute=0。请在注释“/*4*”之后添加适当的语句。程序的输出结果如下:Now,the time is 12:59Now,the time is 13:00注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件 test35_3.cpp 清单如下:#includeiostream.hclass clockprivate:/ * 1 *public:clock(int h, int m)/ * 2 *int presenthour()return hour;int presentminute()return min
7、ute;void addoneminutetime();void printtime();void clock:printtime()if(hour10) cout0;/ * 3 *if(minute10) cout0;coutminuteend1;void clock:addoneminutetime()/ * 4 *if(minute59)minute-=60;hour+;if(hour23)hour=0;void main ( )clock c(12,59);c.printtime();c.addoneminutetime();c.printtime();(分数:30.00)_二级 C+
8、机试-49 答案解析(总分:100.00,做题时间:90 分钟)一、1改错题(总题数:1,分数:30.00)1.使用 VC6 打开考生文件夹下的工程 test35_1,此工程包含一个源程序文件 test35_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:40040源程序文件 test35_1.cpp 清单如下:#include iostream.hclass Studentpublic:Student(int xx)x=xx;virtual float calcTuition();/* found */private:int x;float Student:calc
9、Tuition()return float(xx);/* found */class GraduateStudent:public Studentpublic:/* found */GraduateStudent(int xx) :Student(xx)virtual float calcTuition();float GraduateStudent:calcTuition()return float(x*2);void main()Student s(20);GraduateStudent gs(20);couts.calcTuition()end1;coutgs.calcTuition()
10、end1;(分数:30.00)填空项 1:_ (正确答案:(1)错误:private:正确:protected:(2)错误:class GraduateStudent:public Student正确:class GraduateStudent:public Student(3)错误:GraduateStudent(int XX):Student(xx)正确:GraduateStudent(int xx):Student(xx))解析:解析 (1)本题考查点为派生类对基类成员的访问。派生类中的成员不能访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。(2)派生类的一般格式“class
11、派生类名:继承方式 1基类名 1,派生类新定义成员;”,所以应将“:”改为规定的“:”, “:”是作用域运算符,用来标识某个成员属于某个类。(3)派生类构造函数在类体内定义的一般格式“派生类名:基类名 1(参数表 1),派生类构造函数体”,所以应将“:”改为规定的“:”。二、2简单应用题(总题数:1,分数:40.00)2.请编写一个函数 display(),该函数要求用户先输入一字符串,然后在屏幕上再输出该字符串(假设该字符串长度小于 100)。注意:部分源程序已存在文件 test35_2.cpp 中,请勿修改主函数 main 和其他函数中的任何内容,仅在函数 display()的花括号中填写
12、若干语句。如输入 abc,输出结果如下:please input string:abeabcPress any key to continue文件 test35_2.cpp 的内容如下:#include iostream.h#include conio.hvoid display()void main( )cout“please input string:“ end1;display ( );(分数:40.00)_正确答案:(void display()char str100 ch;int i=0;while (ch=getche() !=/r)stri=ch;i+;stri=/0;coute
13、nd1strend1;)解析:解析 本题考查的是考生对于基本的数据输入输出和字符数组的掌握。C+以空字符(/0)作为一个字符串的结束标志,另外本题中未涉及的常用字符串函数也是需要掌握的。三、3综合应用题(总题数:1,分数:30.00)3.使用 VC6 打开考生文件夹下的工程 test35_3。此工程包含一个 test35_3.cpp,其中定义了时钟类clock,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)定义类 clock 的私有数据成员 hour 和 minute,它们都是 int 型的数据。请在注释“/*1*”之后添加适当的语句。(2)补充完全类 clock 的构造函
14、数,私有数据成员 hour 和 minute 分别初始化为参数 h 和 m 的值,请在注释“/*2*”之后添加适当的语句。(3)完成类 clock 的成员函数 printtime,的定义,该函数以“Now the time is hour:minute”的格式输出数据成员 hour 和 minute 的值,如 hour=3、minute=59,则输出为“Now the time is 03:59”,请在注释“/*3*”之后添加适当的语句。(4)完成类 clock 的成员函数 addoneminutetime 的定义,该函数可将 clock 类对象表示的时间加一分钟,如现在 hour=3、 mi
15、nute=59,运行该函数后 hour=4、minute=0。请在注释“/*4*”之后添加适当的语句。程序的输出结果如下:Now,the time is 12:59Now,the time is 13:00注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件 test35_3.cpp 清单如下:#includeiostream.hclass clockprivate:/ * 1 *public:clock(int h, int m)/ * 2 *int presenthour()return hour;int presentminute()return minute;void
16、 addoneminutetime();void printtime();void clock:printtime()if(hour10) cout0;/ * 3 *if(minute10) cout0;coutminuteend1;void clock:addoneminutetime()/ * 4 *if(minute59)minute-=60;hour+;if(hour23)hour=0;void main ( )clock c(12,59);c.printtime();c.addoneminutetime();c.printtime();(分数:30.00)_正确答案:(1)int hour;int minute;(2)hour=h;minute=m;(3)cout“Now,the time is“hour“:“;(4)minute+;)解析:解析 本题主要考查考生对于类基本概念的掌握和将具体问题转换为模型并编程实现的能力。特别是对于程序中小时与分的范围限定是必不可少的。