计算机二级考试C++上机操作题2Word格式.docx
《计算机二级考试C++上机操作题2Word格式.docx》由会员分享,可在线阅读,更多相关《计算机二级考试C++上机操作题2Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
参考解析:
【参考答案】
(1)MyClass(inti=0):
NUM(0){
(2)voidIncrement(MyClass&
f){f._i++;
}
(3)Increment(obj);
【考点分析】
本题考查的是MyClass类,其中涉及友元函数、构造函数、常量数据成员、成员函数和友元函数的调用。
友元函数的定义要与函数声明相呼应,即返回值、参数类型、参数个数要一致。
友元函数的调用不需要使用类名和作用域。
【解题思路】
(1)主要考查考生对常量数据成员初始化方法的掌握,常量数据成员的初始化只能通过构造函数的成员初始化列表进行,并且要使用关键字const修饰。
该题的前一条语句constintNUM;
说明NUM是常量数据成员。
(2)主要考查考生对友元函数的掌握,友元函数的定义与声明要一致,先看该友元函数的声明部分:
friendvoidIncrement(MyClass&
f);
返回类型为void,函数参数为MyClass&
f;
再比较出错的语句:
voidIncrement(){f._i++;
},错误在于该函数没有参数,应把MyClass&
f填在括号内。
(3)主要考查友元函数的调用,友元函数并不属于类,因此调用友元函数时不需要添加类名及作用域,只需要像调用普通函数一样即可。
【解题宝典】
类的常量数据成员初始化必须使用成员初始化列表进行,否则必然出错。
友元函数与普通函数的区别在于,友元函数可以通过对象名调用类的全部成员,包括私有成员。
所有函数的声明和定义必须一致,包括函数返回值、参数类型、参数个数及有无const关键字。
简单应用题
2[简答题]
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。
请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。
此程序的正确输出结果应为:
按姓名排序
排序前
张三男出生日期:
1978年4月20日
王五女出生日期:
1965年8月3日
杨六女出生日期:
1965年9月5日
李四男出生日期:
1973年5月30日
排序后:
李四男出生日期:
张三男出生日期:
只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
【参考答案】
(1)is_male(is_male),birth_date(birth_date)
(2)returnstrcmp(name,p.getName());
(3)<
本题考查Date类和Person类,其中涉及构造函数、const函数、bool型私有成员及成员函数,以及strcmp()函数。
(1)主要考查考生对构造函数的掌握,由函数体内strcpy(this->
name,name);
可知,要使用成员列表初始化的成员为is_male和birth_date。
(2)主要考查考生对strcmp()函数的掌握,先看程序对该函数的功能要求:
利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于。
因为strcmp()函数的功能是比较字符串大小,因此可以直接被return语句调用:
returnstrcmp(name,p.getName());
。
(3)主要考查考生对成员函数的掌握,程序的注释为:
显示出生月,由此可以知道这里要输出出生月份,直接调用函数getMonth()即可。
strcmp()函数、strcpy()函数、strlen()函数等是经常会用到的系统函数,要了解各个函数的功能:
strait(连接)、strcly(复制)、strump(比较)、strlen(求长度)。
综合应用题
3[简答题]
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示矩形的类MyRectangle;
程序应当显示:
(0,2)(2,2)(2,0)(0,0)4
但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:
(1)在“//**1******found****”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对upjeft和down_right进行初始化。
(2)在“//**2******found****”的下方是成员函数getDownLeft的定义中的一条语句。
函数getDownLefit返回用MyPoint对象表示的矩形的左下角。
(3)在“//**3******found****”的下方是成员函数area的定义,它返回矩形的面积。
只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。
【参考答案】
(1)MyPointpl,MyPointp2
(2)up_left.getX(),down-right.getY()
(3)doubleMyRectangle:
:
本题考查表示平面坐标系中的点的类MyPoint、表示矩形的类MyRectangle、构造函数和成员函数。
(1)考查构造函数,构造函数中的参数要给私有成员赋值,在下句中up_left(p1),down_right(p2){}指出私有成员赋值要使用形参p1和p2,因此这里参数要定义为MyPointp1,MyPointp2。
(2)主要考查成员函数的返回语句,MyPointMy
Rectangle:
getDownLeft()const函数要求返回一个左下角的点坐标,因此使用语句MyPoint(up_left.getX(),down_right.getY());
(3)主要考查成员函数的定义,在MyRectangle类中已经声明doublearea()const,因此此处只要添加doubleMyRectangle:
即可。
构造函数的参数定义时要注意在赋值语句中使用的参数。
考查构造函数一般都会考查到形参,应注意联系上下文。
类的成员函数在类外定义时要在函数名前面加上:
返回值类型+类名+作用域(:
)。