ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:43.50KB ,
资源ID:497591      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-497591.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C++机试(操作题)模拟试卷493及答案与解析.doc)为本站会员(explodesoak291)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C++机试(操作题)模拟试卷493及答案与解析.doc

1、国家二级 C+机试(操作题)模拟试卷 493及答案与解析 一、基本操作题 1 请打开考生文件夹下的解决方案文件 proj1,此工程中含有一个源程序文件proj1 cpp。其中位于每个注释 “ ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: NUM=0 Value=1 注意:只修改注释 “ ERROR*found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include lostEeam using namespace std; class MyClass int_i; friend VOid Increment; (MyClass

2、&f); public: const int NUN; ERROR*found* NyClass(int i=0)NUM=0; _i=i; int GetValue( )constreturn_i; ; ERROR*found* void Increment( )f _i+; ) int main( ) HyClass obj; ERROR*found* NyClass: TncEement(ohj); cout “NUN=“ oh3 NUN endl “Value=“ obj GetValLie( ) endl; retuEn0; 二、简单应用题 2 请打开考生文件夹下的解决方案文件 pro

3、j2,该工程中包含一个程序文件main cpp,其中有坐标点类 point、线段类 Line和三角形类 Triangle的定义,还有main函数的定义。程序中两点间距 离的计算是按公式 d= 实现的,三角形面积的计算是按公式 f= 实现的,其中 s= 请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: Side1: 9 43398Side2: 5Side3: 8area: 20注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “*found*”。 #include iostEeam #include cmath using n

4、amespace std; class Point坐标点类 public: const double x, y; Point(double x=0 0,doubley=0 0): x(x), y(y) *found*double distanceTo(_)const到指定点的距离 return sqrt(x-p x)*(x-p x)+(y-p y)*(y-p y); ; class Line线段类 public: const Point p1, p2线段的两个端点 *found*Line(Point p1, Pointp2): _double length( )constreturnp1 di

5、stanceTo(p2); 线段的长度 ; class Triangle三角形类 public: const Point p1, p2, p3;三角形的三个顶点*found*Triangle(_): p1(p1), p2(p2), p3(p3)double lengthl( )const边 p1, p2的长度 return Line(p1, p2) length( ); double length2( )const边 p2, p3的长度 return Line(p2, p3) length( ); double length3( )const边 p3, p1的长度 return Line(p3

6、, p1) length( ); double area( )const三角形面积 *found*double s=_; return sqrt(s*(s-lengthl( )*(s-length2( )*(s-length3( ); ; int main( )Triangle r(Point(0 0, 8 0), Point(5 0, 0 0), Point(0 0, 0 0); cout “Side1: “ r length1( ) endl; cout “Side2: “ r length2( ) endl; cout“Side3: “ r length3( ) endl; cout “

7、area: “ r area( ) endl;return0; 三、综合应用题 3 请打开考生文件夹下的解决方案文件 proj3,其中定义了一个字符串 变量类StringVar。类成员的说明在程序注释中。请在 *333*和*666*之间填写 StringVar成员函数和友元函数的实现代码。在main函数中给出了一组测试数据,运行时输入: Hello Kitty 此情况下程序的输出应该是: Hello Kitty Borg Borg 注意:只需在 *333*和 *666*之间填入 所编写的若干语句,不要改动程序中的其他内容。 StringVar h #include ioStream #incl

8、ude cstdlib #include cstddef #include cstring using namespace std; VOid writeToFile(const char*path); class StringVar public: StringVar(int size);构造函数, size为字符串长度 (字符个数 )初始值;字符串内容初始化为空串 StringVar(const char a );构造函数,用 参数数组 a的内容初始化当前对象 StringVar(const StringVar&strobj);复制构造函数 StringVar( )delete value

9、; ;析构函数 int length( )constreturnstrlen(value); 从输入流 ins输入一个字符串,其中可以包括空格 void input_line(istream&ins); 返回字符串首地址 char*getValue( )constreturn value; private: char*value;字符串首地址 int max_length;字符串最大长度 (字符个数最大值 ) ; 将 the string通过输出流 outs输出 ostream&operator (ostream&outs, const StringVar the_string); main

10、cpp #include iostream #include string #include“StringVar h“ *333* *666* int main( ) StringVar namel(30), name2(“Borg“); name1 input_line(cin); StringVar name3(name2); cout name1 endl; cout name2 endl; cout name3 endl; writeToFile(“ “); return0; writeToFile cpp #include iostream #include fstream #inc

11、lude SStream #include string using namespace std; #include“StringVar h“ void writeToFile(const char*path) char filename30; strcpy(filename, path); strcat(filename, “out dat“); ofstream fout(filename); istringstream is (string(“Jenny Zheng“); StringVar name1(40), name2(“John“); name1 input line(is);

12、StringVar name3(name2); fout name1 name2 name3; fout close( ); 国家二级 C+机试(操作题)模拟试卷 493答案与解析 一、基本操作题 1 【正确答案】 (1)MyClass(int i=0): NUM(0) (2)void Increment(MyClass&f)f _i+; (3)Increment(obj); 【试题解析】 (1)主要考查考生对常量数据成员初始化方法的掌握,常量数据成员的初始化只能通过构造函数的成员初始化列表进行,并且要使用关键字 const修饰。该题的前一条语句 const int NUM;,说明 NUM是常

13、量数据成员。 (2)主要考查考生对友元函数的掌握,友元函数的定义与声明要一致,先看该友元函数的声明部分: friend void Increment(MyClass&f);,返回类型为 void,函数参数为 MyClass&f;再比较出错的语句: void Increment( )f _i+; , 错误在于该函数没有参数,应把 MyClass&f填在括号内。 (3)主要考查友元函数的调用,友元函数并不属于类,因此调用友元函数时不需要添加类名及作用域,只需要像调用普通函数一样即可。 二、简单应用题 2 【正确答案】 (1)const Point&p (2)pl(p1), p2(p2) (3)Po

14、int p1, Point p2, Point p3 (4)(length1( )+length2( )+length3( ) 2 【试题解析】 (1)主要考查考生对函数形参的掌握,由函数的注释可知有本坐标点到达某个坐标点类的距离,再根据函数体 return sqrt(x-p x)*(x-p x)+(y-p y)*(y-p y);可知,该坐标点类名为 p,因此可以知道形参为 Point&p,为了不改变该坐标点的值,前面要加上 const。 (2)主要考查考生对构造函数的掌握,对于常变量型私有成员 const Point p1,p2,只能用成员初始化列表进行赋值。 (3)主要考查考生对构造函数的

15、掌握,由空格后面的语句: p1(p1), p2(p2), p3(p3)可知,该构造函数需要进行成员列表初始化,再看类的私有成员 const Point p1,p2, p3,可知 p1, p2, p3是 Point类型,因此形参为 Point p1, Point p2, Point p3。 (4)主要考查考生对成员函数的掌握,根据函数注释,可知本函数要求计算三角形面积,再看题目的提示: s=(a+b+c) 2。可知空格处要填的是三角形的三条边之和除以 2,而求边长的函数已经给出,这里直接调用即可。 三、综合应用题 3 【正确答案】 StringVar: StringVar(int size):

16、max_length(size)使用成员初始化列表初 始化 max_length value=new charsize; value0= 0; StringVar: StringVar(constchar a ) max_length=strlen(a)+1; value=new charmax_length; Strcpy(value, a); StringVar: StringVar(constStringVar&strobj) max_length=strobj max_length; value=new charstrlen(strobj value)+1; strcpy(value,

17、 strobj value); void StringVar: input_line(istream&ins) int i=0; char ch; while(i max length-1&(ch=ins get( )!= n) valuei+=ch; valuei= 0; ostream&operator (ostream&outs, const StringVar the_string) outs the_string getValue( ) endl; return outs; 【试题解析】 由 StringVar h这个头文件可知:头文件中定义了 StringVar类,它包含的成员信息

18、如下: 两个数据成员: char*类型的 value,指向字符串的首地址; int类型的max_length,表示字符串的最大长度。两个构造函数:接收 int类型的构造函数和接收 const char a 的构造函数。一个复制构造函数:用参数 strobj对象的成员值给当前对象的成员赋值; 析构函数:使 用 delete 释放 value指向的地址空间; length( )成员函数:返回成员 value指向的字符串长度; input_line( )成员函数:使用输入流参数输入一个字符串,保存到 value指向的内存空间; getValue( )成员函数:常成员函数,返回value的值。 另外类

19、定义体外部还声明一个重载 “ ”运算符函数,将 StringVar对象中 value指向的字符串输出,并返回输出流 outs的引用 StringVar h中,已经给出的定义有:析构函数、 length( )函数和 getValue( )函数,所以需要我们完成的函数定义有:构造函数、复制构造函数、 input_line( )函数和重载的 “ ”运算符函数 StringVar(int size); 题意指出, size为字符串长度 (字符个数 )初始值,字符串内容初始化为空串,所以需要使用 size设置成员 max_length,为 value申请 size个字符的存储空间,并把value的第一个

20、字符设置为 0表示空串,这样保证析构函数的 delete 也是正确的。 StringVar(const char a ); 题意指出,使用参数数组 a的内 容初始化对象的成员,即将数组 a中的内容,存放到 value指向的内存空间,由于 value是使用 new分配的 (保证析构函数的delete 是正确的 ),所以不能简单的把数组 a的首地址赋给 value,需要将数组 a的内容复制到 value指向的内存空间中,另外成员 max_length,初值最小必须是value指向的内存空间长度,即 value指向的字符串长度 +l(题意中 max_length表示字符个数的最大值,所以需要包含字符

21、串结束符 0)(此构造函数的形参必须传人的是字符串,如果是字符数组,必须传入数组的长度, 以防数组 a的最后一个字符不是结束符 0,此时 strlen( )函数获取的长度,就不是字符数组 a的字符个数 ) slringVar(const slringVar&strobj); 复制构造函数需要将形参 strobj的成员赋给当前调用该复制构造函数的对象成员,在赋值 value时,同样需要为 value分配足够的内存空间。 input_line(istrearn&ins); input_line( )函数需要使用形参 ins输入流,输入一个字符串存放到 value中,题意要求可以输入空格,所以我们不

22、能直接用输人 流 ins和输入运算符,因为输入运算符会丢弃空白符、空格符和制表符,可以使用输入流 ins的成员函数: get( )和while循环,逐个输入字符存放到 value下标 i的字符中,直到输入的字符为换行符或 value存满 (i=max_length)为止,当这两个条件满足其一,那么就应该停止输入,另外需要注意: value指向的字符串结尾,必须包含空字符 0,所以下标。max_length-1必须是空字符,循环输入时, i取值最大为 max_length-2。 ostream&operator (oStream&outs, const stringVar the_string); 输出运算符重载函数,题意要求将 the-string通过输出流 outs输出,由于the_string是 StringVar对象,所以输出的应该是对象的成员 value指向的字符串,根据返回值可知,函数必须返回输入流 ostream的引用;另外由于第一形参是输入流 outs,所以无法通过 stringVar对象来调用,该函数不是类的成员函数,函数定义时,不能限定 stringVar作用域,由于该函数不是类的成员函数,所以使用输出流 outs输出 value指向的字 符串时,不能直接使用私有成员 value,而是应该使用 getValue( )公有成员函数,返回 value的值,再输出。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1