1、二级 C+-62及答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1,其中有矩形类 Rectangle、函数show和主函数 main的定义。程序中位于每个“/ERROR *found*”下一行的语句有错误,请加以改正。改正后程序的输出结果应该是: Upper left=(1,8),down right=(5,2),area=24 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream #incl
2、ude cmath using namespace std; class Rectangle double x1, y1; /左上角坐标 double x2, y2; /右下角坐标 public: / ERROR * found* Rectangle (double x1, y1; double x2, y2) this -x1=x1; this -y1=y1; this -x2=x2; this -y2=y2; double getX1 ()const return x1; double getY1 ()const return y1; double getX2 ()const return
3、 x2; double getY2 ()const return y2; double getHeight () const return fabs(y1-y2); double getWidth () const return fabs(x1-x2); double area () const return getH-eight()* getWidth(); ; / ERROR * found* void show(Rectangle r)const cout “Upper left = (“; / ERROR * found* cout r.x1 “, “ r.y1 “), down ri
4、ght = (“ r.x2 “, “ r.y2; cout “), area =“ r. area () “. “ endl; int main() Rectangle r1 (1, 8, 5, 2); show(r1); return 0; (分数:30.00)_二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文件夹 proj2下的工程 proj2,此工程中包含一个源程序文件main.cpp,其中有坐标点类 Point、线段类 Line和矩形类 Rectangle的定义,还有 main函数的定义。程序中两点间的距离的计算是按公式 (分数:30.00
5、)_三、B综合应用题/B(总题数:1,分数:40.00)3.请使用答题菜单命令或直接用 VC6打开考生文件夹下的工程 proj3,其中声明了一个人员信息类Person。在 Person类中数据成员 name、age 和 address分别存放人员的姓名、年龄和地址。构造函数Person用以初始化数据成员。补充编制程序,使其功能完整。在 main函数中分别创建了两个 Person类对象 p1和 p2,并显示两个对象信息,此种情况下程序的输出应为: Jane 25 Beijing Tom 22 Shanghai 注意:只能在函数 Person中的“/*333*”和“/*666*”之间填入若干语句,
6、不要改动程序中的其他内容。 /proj3.h #include iostream #include string using namespace std; class Person public: char name20; int age; char* address; public: Person (char* name, int_age,char*_add =NULL); /构造函数 void info_display (); /人员信息显示 Person (); /析构函数 ; void writeToFile (const char * path=“); /proj3.cpp #inc
7、lude iostream #include string #include “proj3.h“ using namespace std; Person:Person (char*_name, int_age, char* _add) :age (_age) /把字符串_name 复制到数组 name中 /使address指向一个动态空间,把字符串_add 复制到该数组中。 /* 333* /* 666* void Person:info_display () cout name /t age /t; if (address!=NULL) cout address endl; Person:
8、Person () if (address !=NULL) delete address; void main () char add100; strcpy(add, “Beijing“) ; Person p1 (“Jane“, 25, add) ; p1.info_display () ; strcpy(add, “Shanghai“); Person * p2 =new Person (“Tom“, 22, add); p2 - info_display () ; delete p2; writeToFile (“); (分数:40.00)_二级 C+-62答案解析(总分:100.00,
9、做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1,其中有矩形类 Rectangle、函数show和主函数 main的定义。程序中位于每个“/ERROR *found*”下一行的语句有错误,请加以改正。改正后程序的输出结果应该是: Upper left=(1,8),down right=(5,2),area=24 注意:只修改每个“/ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream #include cmath using namespac
10、e std; class Rectangle double x1, y1; /左上角坐标 double x2, y2; /右下角坐标 public: / ERROR * found* Rectangle (double x1, y1; double x2, y2) this -x1=x1; this -y1=y1; this -x2=x2; this -y2=y2; double getX1 ()const return x1; double getY1 ()const return y1; double getX2 ()const return x2; double getY2 ()cons
11、t return y2; double getHeight () const return fabs(y1-y2); double getWidth () const return fabs(x1-x2); double area () const return getH-eight()* getWidth(); ; / ERROR * found* void show(Rectangle r)const cout “Upper left = (“; / ERROR * found* cout r.x1 “, “ r.y1 “), down right = (“ r.x2 “, “ r.y2;
12、 cout “), area =“ r. area () “. “ endl; int main() Rectangle r1 (1, 8, 5, 2); show(r1); return 0; (分数:30.00)_正确答案:(1)Rectangle(double x1, double y1, double x2, double y2) (2)void show(Rectangle r) (3)coutr.getX1()“, “r.getY1()“), down right=(“r.getX2()“, “r.getY2();)解析:考点 本题考查 Rectangle类,其中涉及构造函数和 c
13、onst函数。 解析 (1)主要考查考生对构造函数的掌握,函数的参数要使用“,”隔开,不能使用“;”。 (2)主要考查考生对 const函数的掌握,程序中调用函数 r.area(),该函数修改了成员值,因此不能使用 const。 (3)主要考查考生对成员函数的掌握,类外函数不能直接调用类的私有成员,只能通过成员函数调用。二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文件夹 proj2下的工程 proj2,此工程中包含一个源程序文件main.cpp,其中有坐标点类 Point、线段类 Line和矩形类 Rectangle的定义,还有 main函数的定
14、义。程序中两点间的距离的计算是按公式 (分数:30.00)_正确答案:(1)const.Point class Person public: char name20; int age; char* address; public: Person (char* name, int_age,char*_add =NULL); /构造函数 void info_display (); /人员信息显示 Person (); /析构函数 ; void writeToFile (const char * path=“); /proj3.cpp #include iostream #include strin
15、g #include “proj3.h“ using namespace std; Person:Person (char*_name, int_age, char* _add) :age (_age) /把字符串_name 复制到数组 name中 /使address指向一个动态空间,把字符串_add 复制到该数组中。 /* 333* /* 666* void Person:info_display () cout name /t age /t; if (address!=NULL) cout address endl; Person: Person () if (address !=NULL
16、) delete address; void main () char add100; strcpy(add, “Beijing“) ; Person p1 (“Jane“, 25, add) ; p1.info_display () ; strcpy(add, “Shanghai“); Person * p2 =new Person (“Tom“, 22, add); p2 - info_display () ; delete p2; writeToFile (“); (分数:40.00)_正确答案:(strcpy(name, _name); /把 name中的内容复制到 name中 address =new charstrlen(add) +1; /动态给 address分配 strlen(-add)+1大小的空间 strcpy(address, _add); /把 add中的内容复制到 address中)解析:考点 本题考查 Person类,其中涉及数组、构造函数、成员函数和析构函数。 解析 主要考查考生对构造函数的掌握,根据题目要求,首先使用 strcpy()函数把字符串_name 复制到数组 name中,然后使用 new语句分配一个动态空间,使 address指向空间首地址,最后把字符串_add 复制到该数组中。