【计算机类职业资格】二级C++分类模拟129及答案解析.doc
《【计算机类职业资格】二级C++分类模拟129及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++分类模拟129及答案解析.doc(11页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+分类模拟 129 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.请使用 VC6 或使用【答题】菜单打开 proj1 下的工程 proj1,该工程中包含程序文件 main.cpp,其中有类 Foo 和主函数 main 的定义。程序中位于每个“/ ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: X=a Y=42 注意:只修改每个“/ ERROR *found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; class
2、 Foo public: Foo(char x) x_ = x; char getX() const return x_; public: static int y_; private: char x_; ; / ERROR *found* int Foo.y_ = 42; int main(int argc, char * argv) / ERROR *found* Foo f; / ERROR *found* cout “X =“ f.x_ endl; cout “Y =“ f.y_ endl; return 0; (分数:30.00)_二、简单应用题(总题数:1,分数:30.00)2.请
3、使用 VC6 或使用【答题】菜单打开 proj2 下的工程 proj2。其中有类 Point(“点”)、Rectangle(“矩形”)和 Circle(“圆”)的定义。在程序所使用的平面坐标系统中,x 轴的正方向是水平向右的,y 轴的正方向是竖直向下的。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应该是: -圆形- 圆心=(3,2) 半径=1 面积=3.14159 -外切矩形- 左上角=(2,1) 右下角=(4,3) 面积=4 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/ *found*”。 #include iostream
4、#include cmath using namespace std; /平面坐标中的点 /本题坐标系统中,x 轴的正方向水平向右,y 轴的正方向竖直向下。 class Point public: Point(double x=0.0, double y=0.0): x_(x), y_(y) double getX() const return x_; double getY() const return y_; void setX(double x) x_=x; void setY(double y) y_=y; private: double x_; /x 坐标 double y_; /y
5、 坐标 ; /矩形 class Rectangle public: Rectangle (Point p, int w, int h) : point (p), width (w), height (h) double area() const /矩形面积 return width * height; Point topLeft() const /左上角顶点 return point; Point bottomRight() const /右下角顶点(注:y 轴正方向竖直向下) / *found* return Point(_); private: Point point; /左上角顶点 do
6、uble width; /水平边长度 double height; /垂直边长度 ; /圆形 class Circle public: Circle (Point p, double r):center(p), radius(r) Rectangle boundingBox() const; /外切矩形 double area() const /圆形面积 / *found* return PI *_; public: static const double PI; /圆周率 private: Point center; /圆心 double radius; /半径 ; const double
7、 Circle:PI = 3.14159; Rectangle Circle:boundingBox() const / *found* Point pt(_); int w, h; / *found* w = h =_; return Rectangle(pt, w, h); int main () Point p(3, 2); Circle c(p, 1); cout -圆形- /n“; cout “圆心 = (“ p.getX() “,“ p.getY() “)/n“; cout “半径 =“ 1 endl; cout “面积 =“ c.area() endl endl; Rectang
8、le bb = c.boundingBox(); Point t1 = bb.topLeft(); Point br = bb.bottomRight(); cout “-外切矩形-/n“; cout “左上角 = (“ t1.getX() “,“ t1.getY() “)/n“; cout “右下角 = (“ br.getX() “,“ br.getY() “)/n“; cout “面积 =“ bb.area() endl; return 0; (分数:30.00)_三、综合应用题(总题数:1,分数:40.00)3.请使用 VC6 或使用【答题】菜单打开 proj3 下的工程 proj3,其
9、中定义了 MyString 类,一个用于表示字符串的类。成员函数 reverse 的功能是将字符串进行“反转”。例如,将字符串 ABCDEF“反转”后,得到字符串 FEDCBA;将字符串 ABCDEFG“反转”后,得到字符串 GFEDCBA。请编写成员函数 reverse。在main 函数中给出了一组测试数据,此时程序运行中应显示: 读取输入文件. -反转前- STR1=ABCDEF STR2=ABCDEFG -反转后- STR1=FEDCBA STR2=GFEDCBA 要求: 补充编制的内容写在“/ *333*”与“/ *666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文
10、件 out.dat 中,输出函数 WriteToFile 已经编译为 obj 文件,并且在本程序中调用。 /mgsering.h #include iostream #include cstring using namespace std; class MyString public: MyString(const char * s) str = new charstrlen (s) + 1; strcpy(str, s); MyString() delete str; void reverse(); friend ostream return os; private: char * str;
11、 ; void writeToFile(char *, const MyString /main.cpp #include “mystring.h“ #include fstream void MyString:reverse() / *333* / *666* int main () char inname128, pathname80; strcpy(pathname, “ “); sprintf(inname, “in.dat“, pathname); cout “读取输入文件. /n/n“; ifstream infile(inname); if(infile.fail() cerr
12、“打开输入文件失败!“; exit(1); char buf4096; infile.getline(buf, 4096) ; MyString str1(“ABCDEF“), str2(“ABCDEFG“), str3(buf); cout “-反转前-/n“; cout “STR1 =“ str1 endl; cout “STR2 =“ str2 endl endl; str1.reverse(); str2.reverse(); str3.reverse(); cout “-反转后-/n“; cout “STR1 =“ str1 endl; cout “STR2 =“ str2 endl
13、 endl; writeToFile (pathname, str3); return 0; (分数:40.00)_二级 C+分类模拟 129 答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.请使用 VC6 或使用【答题】菜单打开 proj1 下的工程 proj1,该工程中包含程序文件 main.cpp,其中有类 Foo 和主函数 main 的定义。程序中位于每个“/ ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: X=a Y=42 注意:只修改每个“/ ERROR *found*”下的那一行,不
14、要改动程序中的其他内容。 #include iostream using namespace std; class Foo public: Foo(char x) x_ = x; char getX() const return x_; public: static int y_; private: char x_; ; / ERROR *found* int Foo.y_ = 42; int main(int argc, char * argv) / ERROR *found* Foo f; / ERROR *found* cout “X =“ f.x_ endl; cout “Y =“ f
15、.y_ endl; return 0; (分数:30.00)_正确答案:()解析:(1)int Foo:y_=42; (2)Foo f(“a“); (3)cout “X =“ f.getX() endl; 答案考生文件夹 考点 本题考查的是 Foo 类,其中涉及构造函数、const 函数和静态成员。给类的静态成员赋值时要加上类名和作用域符号,与类的成员函数一样,类的私有成员不能被类外函数调用。 解析 (1)主要考查考生对静态成员的掌握,因为静态整型变量 y_是 Foo 类的公有成员,所以给 y_赋值时要加上“Foo:”,即 int Foo:y_=42;。 (2)主要考查考生对构造函数的掌握,题
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 分类 模拟 129 答案 解析 DOC
