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

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

1、国家二级 C+机试(操作题)模拟试卷 502及答案与解析 一、基本操作题 1 请打开考生文件夹下的解决方案文件 proj1,此工程中包含一个源程序文件main cpp,其中有类 Book(“书 ”)和主函数 main的定义。程序中位于每个 “ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: 书名: C+语句程序设计总页数: 299 已把 “C+语言程序设计 ”翻到第 50页 已把 “C+语言程序设计 ”翻到第 51页 已把 “C+语言程序设计 ”翻到第 52页 已把 “C+语 言程序设计 ”翻到第 51页 已把书合上。 当前页: 0 注意:只修改每个 “ E

2、RROR*found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; class Book char*title; int num_pages;页数 int cur_page;当前打开页面的页码, 0表示书未打开 public: ERROR*found* Book(const char*theTitle, int pages)num_pages(pages) title=new charstrlen(theTitle)+1; strcpy(title, theTitle); cout endl “书名: “ title “

3、总页数: “ num_pages; Book( )delete title; bool isClosed( )constreturncur_page=0; 书合上时返回 true,否则返回 false bool isOpen( )constreturn!isClosed( ); 书打开时返回 true,否则返回 false int numOfPages( )constreturn num_pages; 返回书的页数 int currentpage( )constreturn cur_page;返回打开页面的页码 ERROR*found* void openAtPage(int page_no)

4、 const把书翻到指定页 cout endl: if(page_no 1|page_no num_pages) cout “无法翻到第 “ cur_page “页。 “; close( ); else cur_page=page_no; cout “已把 “ title “” 翻到第 “ curpage “页 “; void openAtpreVPage( )openAtPage(cur_page-1); 把书翻到上一页 void openAtNextPage( )openAtPage(cur_page+1); 把书翻到下一页 void close( )把书合上 cout endl; if(

5、isCloSed( ) cout “书是合上的。 “; else ERROR*found* num_pageS=0; cout “已把书合上。 “; cout endl; ; int main( ) Book book(“C+语言程序设计 “, 299); book openAtPage(50); book openAtNextPage( ); book openAtNextPage( ); book openAtPreVpage( ); book close( ); cout “当前页: “ book currentPage( ) endl; return0; 二、简单应用题 2 请打开考生

6、文件夹下的解决方案文件 proj2,该工程中包含一个程序文件main cpp,其中有类 CPolygon(“多边形 ”)、 CRectangle(“矩形 ”)、 CTriangle(“三角形 ”)的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序的正确输出结果应为: 20 10 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 #include iostream using namespace std; class CPolygon public: *found* _纯虚函数 area声明 void printarea(VO

7、id) *found* cout _ endl; ; class CRectangle: public CPolygon int width;长方形宽 int height; 长方形高 public: CRectangle(int w, int h): width(w), height(h) int area(void)return(width*height); ; class CTriangle: public CPolygon int length;三角形一边长 int height;该边上的高 public: CTriangle(int l, int h): length(1), hei

8、ght(h) *found* int area(void)return(_) 2; ; int main( ) CRectangle rect(4, 5); CTriangle trgl(4, 5); *found* _*ppoly1, *ppoly2; ppoly1=▭ pp02y2=&trgl; ppoly1- printarea( ); ppoly2- printarea( ); return0; 三、综合应用题 3 请打开考生文件夹下的解决方案文件 proj3,其中包含了类 Polynomial(“多项式 ”)的定义。 形如 5x4+3 4x2-7x+2的代数式称为多项式,其

9、中的 5为 4次项系数,3 4为 2次项系数, -7为 1次项系数, 2为 0次项 (常数项 )系数。此例缺 3次项,意味着 3次项系数为 0,即省略了 0x3。在 Polynomial中,多项式的各个系数存储在一个名为 coef的数组中。例如,对于上面的多项式,保存在 coef0、coef1coef4 中的系数依次为: 2 0、 -7 0、 3 4、 0 0、 5 0,也即对于 i次项,其系数就保存在 coefi中。成员函数 getValue计算多项式的值,多项式中 x的值是由参数指定的。 请补充完成文件 Polynomial cpp中成员函数 getValue的定义。此程序的正确输出结果应

10、为: Value of p1whenx=2 0: 59 8 Value of p2whenx=3 0: 226 8 注意:只在函数 getValue的 “ *333*”和“*666*”之间填入 若干语句,不要改动程序中的其他内容。 Polynomiac h #include iostream using namespace std; class Polynomial “多项式 ”类 public: Polynomial(double coef , int num): coef(new doublenum),num_of_terms(num) for(int i=0; i num_of_term

11、s; i+) this- coefi=coef i; Polynomial( )delete coef; 返回指定次数项的系数 double getCoefficient(int power)constreturn coefpower; 返回在 x等于指定值时多项式的值 double getValue(double x) const; private: 系数数组, coef0为 0次项(常数项 )系数, coef1为 1次项系数, coef2为 2次项 (平方项 )系数,余类推。 double*coef; int num_of_terms; ; void writeToFile(const c

12、har*path); Polymomial cpp #include“Polynomial h“ double polynomial: getValue (double x)const 多项式的值 value为各次项的累加和 double value=coef0; *333* *666* return valme; main cpp #include“Polynomial h“ int main( ) double p1 =5 0, 3 4, -4 0, 8 0,p2 =0 0, -5 4, 0 0, 3 0, 2 0; Polynomial polyl(p1, sizeof(p1)sizeo

13、f(double), poly2(p2, sizeof(p2) sizeof(double); cout “Value of p1 when x=2 0: “ polyl getValue(2 0) endl; cout “Value of p2 when x=3 0: “ poly2 getValue(3 0) endl: writeToFile(“ “); return0; 国家二级 C+机试(操作题)模拟试卷 502答案与解析 一、基本操作题 1 【正确答案】 (1)Book(const char*theTitle, int pages): num_pages(pages) (2)voi

14、d openAtPage(int page_no)把书翻到指定页 (3)cur_page=0; 【试题解析】 (1)主要考查考生对构造函数的掌握,构造函数的成员列表初始化法要注意它的格式,即成员列表前要有标识符 “: ”,因此语句改为: Book(const char *theTitle, int pages): nun_pages(pages)。 (2)主要考查考生对 const函数的掌握,在函数体中可以看到有语句cur_page=page_no,即 cur_page的值发生改变,因此该函数不是 const函数。 (3)主要考查考生对成员函数的掌握,题目 要求输出的最后一条是 “当前页: 0

15、”,可知主函数中调用 close函数后当前页为 0,因此应该是 cur_page=0;。 二、简单应用题 2 【正确答案】 (1)vinual int area(void)=0; (2)area( ) (3)length*height (4)Cpolygon 【试题解析】 (1)主要考查考生对纯虚函数的掌握,在定义纯虚函数时要看在派生类中函数的定义: int area(void)。由此可知纯虚函数应该为: vinual int area(void)=0;。 (2)主要考查考 生对纯虚函数的掌握情况,由 void printai ea(void)可知,该函数要打印面积,因此在此要调用纯虚函数 a

16、rea,即 eont area( )。 (3)主要考查考生对数学公式的掌握,该函数要返回三角形面积,三角形的面积公式为长乘以该边上的高除以 2,即 return(1ength*height) 2;。 (4)主要考查考生对抽象类的掌握情况,根据程序段: ppoly1=&reet: ppoly2=&trgl: 可知指针 ppolyl指向 (Rectangle类,而指针 ppoly2指向 CTriangle类 ,因此在这里只能填这两种类的基类 CPolygon类。 三、综合应用题 3 【正确答案】 for(int i=1; i num_of_terms; i+)从 i=1开始遍历数组 coef的所有

17、项 int j=i-1; 把 i-1赋值给 j,保证从零次方开始 double x_value=x; 把 x赋给 x_value while(j 0) 当 j大于零时,做相乘操作,即完成该项的乘方动作 x_value*=x; j-; value+=coefi*x_value; 把 i项的乘方结果 乘以该项系数后加进 value中 【试题解析】 题目要求成员函数 getValue计算多项式的值,多项式中 x的值由参数指定,多项式的值 value为各次项的累加和。由类的定义可知数组 coef中存储的是各次项的系数,这里使用 for循环来完成题目要求,当次项为 0时,value=coef0。当次项为 1时, value=coef1*x+coef0。依次类推直到 x的最高次数。

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

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

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