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