【计算机类职业资格】二级C++分类模拟138及答案解析.doc

上传人:figureissue185 文档编号:1324215 上传时间:2019-10-17 格式:DOC 页数:8 大小:46.50KB
下载 相关 举报
【计算机类职业资格】二级C++分类模拟138及答案解析.doc_第1页
第1页 / 共8页
【计算机类职业资格】二级C++分类模拟138及答案解析.doc_第2页
第2页 / 共8页
【计算机类职业资格】二级C++分类模拟138及答案解析.doc_第3页
第3页 / 共8页
【计算机类职业资格】二级C++分类模拟138及答案解析.doc_第4页
第4页 / 共8页
【计算机类职业资格】二级C++分类模拟138及答案解析.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、二级 C+分类模拟 138 及答案解析(总分:100.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.请使用 VC6 或使用【答题】菜单打开 proj1 下的工程 proj1,其中在编辑窗口内显示的主程序文件中定义有类 AAA 和主函数 main。程序文本中位于每行“/ ERROR *found*”下面的一行有错误,请加以改正。改正后程序的输出结果应该是: sum=60 注意:只修改每个“/ ERROR *found*”下面的一行,不要改动程序中的其他任何内容。 #include iostream using namespace std; class AAA in

2、t a10; int n; /ERROR *found* private: AAA (int aa , int nn): n(nn) /ERROR *found* for (int i = 0; i n; i+) aai=ai; int Geta (int i) return ai; ; int main() int a6 = 2,5,8,10,15,20; AAA x(a,6); int sum = 0; /ERROR *found* for (int i=0; i6; i+) sum+=x.ai; cout “sum =“ sum endl; return 0; (分数:30.00)_二、

3、简单应用题(总题数:1,分数:30.00)2.请使用 VC6 或使用【答题】菜单打开 proj2 下的工程 proj2,该工程中含有一个源程序文件proj2.cpp。其中定义了类 Set 和用于测试该类的主函数 main。类 Set 是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为 100。为该类实现一个构造函数 Set(char * s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数 InSet(char c),用于测试一个字符 c 是否在一个集合中,若在,则返回 tru

4、e;否则返回 false。 构造函数 Set 和成员函数 InSet 的部分实现代码已在文件 proj2.cpp 中给出,请在标有注释“/ TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。 提示:在实现构造函数时,可以调用 InSet 函数来判断一个字符是否已经在集合中。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“/ *found*”。 /proj2.cpp #include iostream using namespace std; const int MAXNUM = 100; class Set private: int num;

5、/元素个数 char setdataMAXNUM; /字符数组,用于存储集合元素 public: Set(char *s); /构造函数,用字符串 s 构造一个集合对象 bool InSet(char c); /判断一个字符 c 是否在集合中,若在,返回 true,否则返回 false void Print() const; /输出集合中所有元素 ; Set:Set(char * s) num = 0; while (* s) / *found* if (_) /TODO:添加代码,测试元素在集合中不存在 / *found* _; /TODO:添加一条语句,加入元素至集合中 s+; bool

6、Set:InSet (char c) for (int i = 0; i num; i+) / *found* if (_) /TODO:添加代码,测试元素 c 是否与集合中某元素相同 / *found* _; /TODO:添加一条语句,进行相应处理 return false; void Set:Print () const cout “Set elements:“ endl; for(int i = 0; i num; i+) cout setdatai “; cout endl; int main() char sMAXNUM; cin.getline (s, MAXNUM - 1); /

7、从标准输入中读入一行 Set setobj(s); /构造对象 setobj setobj.Print(); /显示对象 setobj 中内容 return 0; (分数:30.00)_三、综合应用题(总题数:1,分数:40.00)3.请使用 VC6 或使用【答题】菜单打开 proj3 下的工程 proj3,其中声明了 MiniComplex 是一个用于表示复数的类。请编写这个 operator+运算符函数,以实现复数的求和运算。两个复数的和是指这样一个复数:其实部等于两个复数的实部之和,其虚部等于两个复数的虚部之和。例如,(23+34i)+(56+35i)等于(79+69i)。 要求: 补充

8、编制的内容写在“/ *333*”与“/ *666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out.dat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。 /Minicomplex.h #include iostream using namespace std; class MiniComplex /复数类 public: friend ostream return osObject; friend istream isObject complex, realPart ch complex.imagPart ch; return i

9、sObject; MiniComplex (double real = 0, double imag = 0); /构造函数 MiniComplex operator + (const MiniComplex /重载运算符+ private: double realPart; /存储实部变量 double imagPart; /存储虚部变量 ; void writeToFile(char *); /main.cpp #include “MiniComplex.h“ MiniComplex:MiniComplex (double real, double imag)realPart=real;i

10、magPart=imag; MiniComplex MiniComplex:operator+(const MiniComplex MiniComplex num1 (23,34),num2 (56,35); cout “Initial Value of Num1 =“ num1 “/nInitial Value of Num2 =“ num2 endl; cout num1 “+“ num2 “=“ num1 + num2 endl; /使用重载的加号运算符 writeToFile (“ “); return 0; (分数:40.00)_二级 C+分类模拟 138 答案解析(总分:100.0

11、0,做题时间:90 分钟)一、基本操作题(总题数:1,分数:30.00)1.请使用 VC6 或使用【答题】菜单打开 proj1 下的工程 proj1,其中在编辑窗口内显示的主程序文件中定义有类 AAA 和主函数 main。程序文本中位于每行“/ ERROR *found*”下面的一行有错误,请加以改正。改正后程序的输出结果应该是: sum=60 注意:只修改每个“/ ERROR *found*”下面的一行,不要改动程序中的其他任何内容。 #include iostream using namespace std; class AAA int a10; int n; /ERROR *found*

12、 private: AAA (int aa , int nn): n(nn) /ERROR *found* for (int i = 0; i n; i+) aai=ai; int Geta (int i) return ai; ; int main() int a6 = 2,5,8,10,15,20; AAA x(a,6); int sum = 0; /ERROR *found* for (int i=0; i6; i+) sum+=x.ai; cout “sum =“ sum endl; return 0; (分数:30.00)_正确答案:()解析:(1)public: (2)for(in

13、t i=0;in;i +) ai=aai; (3)for(int i=0;i6;i+) sum+=x.Geta(i); 答案考生文件夹 考点 本题考查 AAA 类,其中涉及数组、构造函数和成员函数。 解析 (1)构造函数肯定是公有成员,所以应使用 public。 (2)主要考查考生对赋值语句的掌握,因为数组 a 是私有成员,因此 a 应该在左边,而数组 aa 是形参,要赋值给数组 a。 (3)主要考查考生对成员函数调用的掌握,数组 a 是类的私有成员,因此不能被 main 函数直接调用,要通过成员函数 Geta 来调用数组 a。 主要考查考生对公有成员的掌握,构造函数只能是公有成员,而私有成员

14、不能被类外函数调用。二、简单应用题(总题数:1,分数:30.00)2.请使用 VC6 或使用【答题】菜单打开 proj2 下的工程 proj2,该工程中含有一个源程序文件proj2.cpp。其中定义了类 Set 和用于测试该类的主函数 main。类 Set 是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为 100。为该类实现一个构造函数 Set(char * s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数 InSet(char c),用于测试一个字符 c 是否在一个集合

15、中,若在,则返回 true;否则返回 false。 构造函数 Set 和成员函数 InSet 的部分实现代码已在文件 proj2.cpp 中给出,请在标有注释“/ TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。 提示:在实现构造函数时,可以调用 InSet 函数来判断一个字符是否已经在集合中。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“/ *found*”。 /proj2.cpp #include iostream using namespace std; const int MAXNUM = 100; class Set privat

16、e: int num; /元素个数 char setdataMAXNUM; /字符数组,用于存储集合元素 public: Set(char *s); /构造函数,用字符串 s 构造一个集合对象 bool InSet(char c); /判断一个字符 c 是否在集合中,若在,返回 true,否则返回 false void Print() const; /输出集合中所有元素 ; Set:Set(char * s) num = 0; while (* s) / *found* if (_) /TODO:添加代码,测试元素在集合中不存在 / *found* _; /TODO:添加一条语句,加入元素至集

17、合中 s+; bool Set:InSet (char c) for (int i = 0; i num; i+) / *found* if (_) /TODO:添加代码,测试元素 c 是否与集合中某元素相同 / *found* _; /TODO:添加一条语句,进行相应处理 return false; void Set:Print () const cout “Set elements:“ endl; for(int i = 0; i num; i+) cout setdatai “; cout endl; int main() char sMAXNUM; cin.getline (s, MA

18、XNUM - 1); /从标准输入中读入一行 Set setobj(s); /构造对象 setobj setobj.Print(); /显示对象 setobj 中内容 return 0; (分数:30.00)_正确答案:()解析:(1)!InSet(*s) (2)setdatanum+=*s (3)c=setdatai (4)return true 答案考生文件夹 考点 本题考查 Set 类,其中涉及 const 变量、构造函数、const 函数和 bool 函数。 解析 (1)主要考查考生对成员函数的掌握,题目要求:添加代码,测试元素在集合中不存在,由类的定义可知函数 bool InSet(

19、char c)可以测试字符 c 是否在集合中,因此这里直接调用函数 bool InSet(char c)即可。 (2)题目要求:添加一条语句,加入元素至集合中,集合用数组 setdata 表示,直接把元素添加到数组中即可。 (3)主要考查考生对 if 语句的掌握,题目要求:测试元素 c 是否与集合中某元素相同。前一条语句是个for 循环,利用下标 i 遍历整个集合,通过 if 语句中的判断条件判断 c 是否在集合中,用“=”判断。 (4)主要考查考生对成员函数的掌握,先看函数的注释:判断一个字符 c 是否在集合中,若在,返回true,否则返回 false。if 语句成立时,说明字符 c 存在于

20、集合中,因此应该返回 true。三、综合应用题(总题数:1,分数:40.00)3.请使用 VC6 或使用【答题】菜单打开 proj3 下的工程 proj3,其中声明了 MiniComplex 是一个用于表示复数的类。请编写这个 operator+运算符函数,以实现复数的求和运算。两个复数的和是指这样一个复数:其实部等于两个复数的实部之和,其虚部等于两个复数的虚部之和。例如,(23+34i)+(56+35i)等于(79+69i)。 要求: 补充编制的内容写在“/ *333*”与“/ *666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out.dat 中。输出函数 writ

21、eToFile 已经编译为 obj 文件,并且在本程序中调用。 /Minicomplex.h #include iostream using namespace std; class MiniComplex /复数类 public: friend ostream return osObject; friend istream isObject complex, realPart ch complex.imagPart ch; return isObject; MiniComplex (double real = 0, double imag = 0); /构造函数 MiniComplex op

22、erator + (const MiniComplex /重载运算符+ private: double realPart; /存储实部变量 double imagPart; /存储虚部变量 ; void writeToFile(char *); /main.cpp #include “MiniComplex.h“ MiniComplex:MiniComplex (double real, double imag)realPart=real;imagPart=imag; MiniComplex MiniComplex:operator+(const MiniComplex MiniComplex

23、 num1 (23,34),num2 (56,35); cout “Initial Value of Num1 =“ num1 “/nInitial Value of Num2 =“ num2 endl; cout num1 “+“ num2 “=“ num1 + num2 endl; /使用重载的加号运算符 writeToFile (“ “); return 0; (分数:40.00)_正确答案:()解析:MiniComplex sum; /定义复数对象 Sum sum.imagPart = this - imagPart + otherComplex.imagPart; /把 this 中

24、的虚部(this-imagPart)和 othercomplex 虚部相加赋值给 Sum 虚部 sum.realPart = this - realPart + otherComplex.realPart; /把 this 中的实部(this-reapart)加上 othercomplex 实部复制给 Sum 实部 return sum; /返回对象 Sum 答案考生文件夹 考点 本题考查 MiniComplex 类,其中涉及友元函数、运算符重载和构造函数。运算符重载首先要理解被重载的运算符的含义,其次要掌握类的定义。 解析 主要考查考生对运算符重载的掌握,题目要求编写 operater+运算符函数,以实现复数的求和与运算。复数的和的实部等于两个复数的实部之和,虚部等于两个复数的虚部之和。函数要返回的类型是MiniComplex,因此要先定义一个 MiniComplex 类型变量 sum,然后对它们的实部和虚部各自求和,返回sum 即可。

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

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

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