1、计算机二级 C+上机考试 4+2015 年及答案解析(总分:30.00,做题时间:90 分钟)1.基本操作 请使用“答题“菜单或使用 VC6 打开考生文件夹 proj1 下的工程 proj1,其中有“住宅“类 Home 和主函数 main 的定义。程序中位于每个/ ERROR *found*下的语句行有错误,请加以更正。更正后程序的输出应该是: 南 21 条 12 号 李四 注意:只能修改每个/ ERROR *found*下的那一行,不要改动程序中的其他内容。(分数:10.00)_2.简单应用 请使用“答题“菜单或使用 VC6 打开考生文件夹 proj2 下的工程 proj2,其中有坐标点类P
2、oint、圆形类 Circle 和圆柱形类 Cylinder 的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: 表面积:408.407 体 积:628.319 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“/*found*“。(分数:10.00)_3.综合应用 请使用“答题“菜单或使用 VC6 打开考生文件夹下的工程 proj3,其中声明了 List 类,它是一个用于表示整数列表的类。List 的成员函数 insert 的功能是将一个指定的整数插入到列表的指定位置处,原位置处的及其后的所有元素依次向后顺移一个位
3、置。请补充完整成员函数 insert。在 main 函数中给出了一组测试数据,此情况下程序的输出应该是: 5 3 7 9 13 2 6 8 1 0 5 3 7 13 2 6 8 1 0 5 -23 3 7 13 2 6 -19 8 1 0 注意:只需在 /*333* 和 /*666* 之间填入所编写的若干语句,不要改动程序中的其他内容。(分数:10.00)_计算机二级 C+上机考试 4+2015 年答案解析(总分:30.00,做题时间:90 分钟)1.基本操作 请使用“答题“菜单或使用 VC6 打开考生文件夹 proj1 下的工程 proj1,其中有“住宅“类 Home 和主函数 main 的
4、定义。程序中位于每个/ ERROR *found*下的语句行有错误,请加以更正。更正后程序的输出应该是: 南 21 条 12 号 李四 注意:只能修改每个/ ERROR *found*下的那一行,不要改动程序中的其他内容。(分数:10.00)_正确答案:(1) Home(const char *ad=NULL, const char * ow=NULL)或 Home(const char *ad, const char * ow) (2) if(ad=NULL) (3) if(owner) delete owner;)解析:【解题思路】 (1)主要考查考生对构造函数默认参数的掌握,如果有一个形
5、参具有默认实参,那么它后面所有的形参都必须有默认实参。Home 构造函数中 ad 具有默认实参,所以 ow 也必须有默认实参。 (2)主要考查考生对赋值操作符和相等操作符区别的掌握,在 if 语句的判断条件中,使用赋值操作符时,表达式值始终为 true,这里需要修改为相等操作符。 (3)主要考查考生对动态分配的掌握,在 Home 构造函数中,使用 new char对 owner 动态分配内存,那么在析构函数必须对应使用 delete owner 释放内存。2.简单应用 请使用“答题“菜单或使用 VC6 打开考生文件夹 proj2 下的工程 proj2,其中有坐标点类Point、圆形类 Circ
6、le 和圆柱形类 Cylinder 的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: 表面积:408.407 体 积:628.319 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“/*found*“。(分数:10.00)_正确答案:(1)( y-p.y)*(y-p.y); (2) return PI*radius*radius; (3) bottom.area()*2+bottom.perimeter()*height; (4) return bottom.area()*height;)解析:【解题思路】 (1
7、) 主要考查考生对成员函数定义的掌握情况,要求返回指定点的距离,根据距离公式,得出调用该成员函数的对象与参数 P 点之间的距离。 (2)主要考查考生对成员函数定义的掌握,根据圆面积计算公式,给出成员函数 area()的定义。 (3) 主要考查考生对成员函数定义的掌握,根据圆柱体表面积计算公式,给出成员函数 area()的定义。 (4)主要考察考生对成员函数定义的掌握,根据圆柱体体积计算公式,给出成员函数 volume()的定义。3.综合应用 请使用“答题“菜单或使用 VC6 打开考生文件夹下的工程 proj3,其中声明了 List 类,它是一个用于表示整数列表的类。List 的成员函数 ins
8、ert 的功能是将一个指定的整数插入到列表的指定位置处,原位置处的及其后的所有元素依次向后顺移一个位置。请补充完整成员函数 insert。在 main 函数中给出了一组测试数据,此情况下程序的输出应该是: 5 3 7 9 13 2 6 8 1 0 5 3 7 13 2 6 8 1 0 5 -23 3 7 13 2 6 -19 8 1 0 注意:只需在 /*333* 和 /*666* 之间填入所编写的若干语句,不要改动程序中的其他内容。(分数:10.00)_正确答案:(for (int i = count-1; i = pos; i-) elemi+1 = elemi; elempos = data; count+;)解析:【解题思路】 主要考查考生对对象处理的掌握,函数 insert 的功能是将一个指定的整数 data 插入到列表的指定位置 pos 处,原位置处的及其后的所有元素依次向后顺移一个位置。首先通过比较 count与 MAX_SIZE 判断存储空间是否已满,若存储空间已满,直接返回;然后判断插入的位置是否在当前数组最后元素之后,若是,则紧贴最后元素之后插入新元素即可;最后使用 for 循环,将 pos 位置及其之后的所有元素向后顺移一位,再将 data 插入 pos 位置,同时更新 count 的值。