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

上传人:孙刚 文档编号:502487 上传时间:2018-11-29 格式:DOC 页数:6 大小:32KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷39及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷39及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷39及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷39及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级(C++)机试模拟试卷39及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 39及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test25_1,此工程包含一个源程序文件test25_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: privatel from derived1:30 privatel from derived2:30 源程序文件 test25_1.cpp清单如下: /*found*/ include iostream.h class base protected: int privatel; public: base(int p)privatel=p; ; /

2、*found*/ class derived1:public base public: derivedl(int p1):base(p1); int get_private()return private1; class derived2:virtua1 public base public: derived2(int p2):base(p2); int get_private()return private1; ; class derived12:public derived1,public derived2 public: /*found*/ derived12(int p1,int p2

3、,int pb):derived1(p1), base(pb), derived2(p2); ; void main() derived12 d(10,20,30); cout “privatel from derived1:“ d.derived1:get_private(); cout “nprivatel from derived2:“ d.derived2:get_private(); cout endl; 二、简单应用题( 40分) 2 请编写函数 fun(),该函数的功能是判断字符串是否为回文,若是则函数返回 1,主函数中输出 YES:否则返回 0,主函数中输出 NO。回文是指顺读

4、和倒读都一样的字符串。 例如:字符串 LEVEL是回文,而字符串 123312就不是回文。 注意;部分源程序已存在文件 test26_.cpp中。 请勿修改主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填写若干语句。 文件 test26_2.cpp的内容如下: #include iostream.h #include stdio.h #define N 80 int fun(char*str) void main() char sN; cout “Enter a string:“ endl; getss); cout “nn“; puts(s); if(fun(s) cou

5、t “YESn“; else cout “NOn“; 三、综合 应用题( 30分) 3 使用 VC6打开考生文件夹下的工程 test24_3,此工程包含一个源程序文件test24_3.cpp,其中定义了抽象类 point和它的派生类 line,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类 point的构造函数,函数含参数 i和 j它们都是 int型数据,默认值都是0,用 i和 j分别将 point的数据成员 x0和 y0初始化。请在注释 “/*1*”之后添加适当的语句。 (2)完成类 point的成员函数纯虚函数 void set()和 void draw()的定

6、义,请在注释“/*2*”之后添加适当的语句。 (3)添加类 line的构造函数,函数含参数 i, j, m和 n,它们都是 int型数据,默认值都是 0,用 i和 j分别将 point的数据成员 x0和 y0初始化。请在注释 “/*3*”之后添加适当的语句。输出结果如下: line:set()called 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件 test24_3.cpp清单如下: #include iostream.h class point public: /*1* /*2* protected: int xO,yO; class line: public

7、point public: /*3* x1=m; y1=n; void set() cout “line:set() called.n“; void draw() cout “line:draw() called.n“; protected: int x1,y1; ; void main() line *lineobj = new line; 1ineobj- set(); 国家二级( C+)机试模拟试卷 39答案与解析 一、程序改错题( 30分) 1 【正确答案】 (1)错误: include iostream.h 正确: #include iostream.h (2)错误: class d

8、erivedl:public base 正确: class derivedl:virtual public base (3)错误: derived12(int p1,int p2,int pb):derivedl(p1), base(pb), derived2(p2); 正 确: derived12(int p1,int P2,int Pb):derivedl(P1), derived2(p2), base(Pb); 【试题解析】 (1)主要考查考生对于 include关键字的掌握,它的正确使用是#include; (2)主要考查考生对于虚基类的使用,为了正确的显示结果,这里应该使用虚基类的定

9、义,这样在调用函数的时候就可以不产生二义性; (3)主要考查考生对于初始化参数表中赋值顺序的掌握,它是按照从右至左依次赋值的 二、简单应用题( 40分) 2 【正确答案】 int fun(char*str) int i, n=O, fg=1; char*p=str; while(*p) n+; p+; for(i=0; i n/2;i+) if(stri=strn-1-i) ; else fg=O; break; return fg; 【试题解析】 解答本题的主要思路是:首先要利用循环中指针的移动来求得字符串的长度 n,然后用一个 for循环依 次取得数组中的前半部分元素,用取得的前半部分内的

10、元素逐个与后半部分内的对应位置的元素进行比较,如果相同,不做任何工作,接着取下一个元素,继续比较:如果不相同,可以判断该字符串肯定不是回文,就给标志变量 fg赋值 0(fg的初始值为 1)。最终把 fg作为函数的返回值返回 (fg值为 1表明是回文, fg值为 0表明不是回文 )。 三、综合应用题( 30分) 3 【正确答案】 (1) point(int i=O, int j=0)x0=i; y0=j; (2) virtual void set()=0; virtual void draw()=0; (3) line(int i=O, int j=0, int m=0, int n=0): point(i,j) 【试题解析】 本题主要考查考生对于纯虚函数和抽象类以及派生类构造函数的使用,注意 (2)中纯虚函数的定义格式。纯虚函数是一种特殊的函数,不是在基类中实现,而是在派牛类中实现,说明格式是在函数声明中加入关键字 “virtual”和“=0”。 如: virtual void set()=0;。而带有纯虚函数的类就是抽象类, 它是不能定义对象的,只是一个公共的类。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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