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

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

1、国家二级( C+)机试模拟试卷 43及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test29_1,此工程包含一个源程序文件test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: A: no parameters B: int parameter A: no parameters B: int parameter C: int parameter 源程序文件 test29_1.cpp清单如下; #include iostream.h class A /* found */ private: A() cout “A:no pa

2、rametersn“; A(int a) cout “A: int parametern“; ; class B:public A public: B(int a)cout “B:int Parametern“; ; /* found */ class C:public B,public A public: /* found */ C(int a) :B(a) cout “C: int parametern“; ) ; void main ( ) B b(1); C c(2); 二、简单应用题( 40分) 2 请编写一个函数 fun(int x,int n),该函数返回 x的 n次幂的值,其中

3、 x和 n都是非负整数。 x的 n次幂的计算方法是 1与 x相乘 n次,如 x的 20次幂的计算为 1与 x相乘 20次, 注意:部分源程序已存在文件 test30_2.cpp中。 请勿修改主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填写若干语句。 如输入 3和 4,输出结果如下 : 3 4 81 文件 test30_2.cpp清单如下: #include iostream.h double fun(int x, int n) void main ( ) int x,n; cin x n; cout fun(x,n) end1; 三、综合应用题( 30分) 3 使用 VC

4、6打开考生文件夹下的工程 test28_3。此工程包含一个 test28_3.cpp,其中定义了类 Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类 Person的私有数据成员 forename、 surname 和 money, forename 和 surname都是 char型的指针数据, money是 double型的数据。请在注释 “/*1*”之后添加适当的语句。 (2)完成类 Person的带三个参数的构造函数 Person(char *f, char *s, double m),分别为 forename和 surname申请新的空间来存储参

5、数 f和 s指针指向的内容,注意空间的大小,最后把参数 m的值赋给 money,请在注释 “/*2*”之后添加适当的语句。 (3)完成类 Person的析构函数的定义,把 forename和 surname指向的空间释放,请在注释 “/*3*”之后添加适当的语句。 (4)完成类 Person的成员函数 display的定义,使其以格式 “forname surname has money”的形式输出内容,请在注释 “/*4*。 ”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 输出结果如下: Richard Berk has 1000.56 源程序文件 te

6、st28_3.cpp清单如下: #include iostream.h #include string.h class Person private: /* 1 * double money; public: Person(char *f, char *s, double m); Person(); void display(); ; Person:Person(char *f, char *s, double m) /* 2 * strcpy(forename, f); surname = new charstrlen(s)+1; strcpy(surname, s); money=m; P

7、erson: :-Person () /* 3 * void Person: display ( ) /* 4 * void main ( ) Person p(“Richard“, “Berk“, 1000.56); p.display ( ); 国家二级( C+)机试模拟试卷 43答案与解析 一、程序改错题( 30分) 1 【正确答案】 (1)错误: private: 正确: public: (2)错误: class C: public B,public A 正确: class C: public B (3)错误: C(int a): B(a)cout “C: int parametern

8、“; ) 正确: C(int a): B(a)cout “C: int parametern“; 【试题解析】 (1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用; (2)A已经是 B的基类, C公有继承 B, A也就成为了 C的基类,根据程序的运行结果可知, C是要公有继承 B; (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“: ”,而不是 “: ”; 二、简单应用题( 40分) 2 【正确答案】 double fun(int x, int n) if(x 0) r

9、eturn 0; if(n 0) return 1; int y 1; for(int i 0; i n; i+) y* x; return y; 【试题解析】 本题主要考查考生利用已学的基本控制结构与函数知识,解决实际问题的能力。求 x的 n次幂是数学中常用的运算,编程时在 x=0与 n=0时需特殊处理。 三、综合应用题( 30分) 3 【正确答案】 (1) char *forename; char *surname; (2) forename = new charstrlen(f)+1; (3) delete forename; delete surname; (4) cout forename “ “ surname “has“ money end1; 【试题解析】 主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌握,具中 (2)中 new关键字是动态申请空间,里面使用了函数 strlen,该函数是返回参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记。 (3)中 delete是释放动态内存的关键字,释放一位数组占用的内存格式是先写 ,之后是指针名,括号内不写数组的大小。

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

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

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