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

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

1、国家二级( C+)机试模拟试卷 47及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test33_1,此工程包含一个源程序文件test33_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: Number=1,2,3 sum=16 源程序文件 test33_1.cpp清单如下; #include iostream.h class Num public: /* found */ void Num(int a,int b, int c); void PrintNumber(); void PrintSum(); private: int x

2、,y,z; static int sum; ; /* found */ int sum=10; Num:Num(int a,int b, int c) x=a; y=b; z=c; sum=sum+x+y+c; void Num:PrintNumber() cout “Number=“ x “,“ y “,“ z end1; void Num:PrintSum() cout “sum=“ sum end1; void main( ) Num m(1,2,3),*n; n= m. PrintNumber(); /* found */ n. PrintSum(); 二、简单应用题( 40分) 2

3、请编写一个函数 sum(int array,int len),该函数返回数组 array的所有整数元素的和,其中 len为数组 array的长度。 注意:部分源程序已存在文件 test34_2.cpp中。 请勿修改主函数 main和其他函数中的任何内容,仅在函数 sum的花括号中填写若干语句。 程序输出结果如下: sum of array 15 文件 test34_2.cpp的内容如下: #include iostream.h int sum(int array,int len) void main() static int a5-1,2,3,4,5; int result=sum(a,5);

4、 cout “sum of array “ result end1; 三、综合应用题( 30分) 3 使用 VC6打开考生文件夹下的工程 test32_3。此工程包含一个 test32_3.cpp,其中定义了复数类 complex,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义复数类 complex的私有数据成员 real和 image,用来分别表示复数的实部和虚部,它们都是 double型的数据。请在注释 “/*1*”之后添加适当的语句。 (2)添加复数类 complex的带一个参数的构造函数,分别将 real和 image赋值为参数 r的值和 0.0,请在注释 “

5、/*2*”之后添加适当的语句。 (3)完成复数类 complex的 “+”运算符重载成员 函数的定义,两个复数相加是将复数的实部和虚部分别进行相加,请在注释 “/*3*”之后添加适当的语句。 (4)完成复数类 complex的友元函数 isequal(complex *cl,complex *c2)的定义,如果复数 c1与 c2相等即 c1与 c2的实部和虚部分别相等,则返回 1,否则返回 0。请在注释 “/*4*”之后添加适当的语句。 程序输出结果如下: 36+0i=36+0i 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件 test32_3.cpp清单如下: #i

6、nclude iostream.h class complex public: complex()real=image=O.O; complex(double r) /* 2 * complex operator+(const complex friend bool isequal(complex *c1,complex *c2 void display(); ; complex complex:operator+(const complex temp.image=image+c.image; return temp; bool isequal(complex *c1,complex *c2)

7、 / /* 4 * return 1; else return 0; void complex: display() cout real; if (image =0) cout “+“ image “i“; else if (image 0) cout image “i“; void main() complex c1,c2(36.0); c1=c1+c2; c1.display(); if (isequal( else coat “ “; c2.display(); cout end1; 国家二级( C+)机试模拟试卷 47答案与解析 一、程序改错题( 30分) 1 【正确答案】 (1) 错

8、误: void Num(int a,int b,int c); 正确: Num(int a,int b,int c); (2) 错误: int sum=10; 正确: int Num: sum=10; (3) 错误: n PrintSum(); 正确: n- PrintSum(); 【试题解析】 (1)函数 Num为构造函数,构造函数不指定返回类型,其隐含有返回值,由系统内部使用; (2)由于静态数据成员 sum是类 Num的成员,因此在初始 化时必须使用作用域运算符限定其所属的类; (3)n为指向类 Num对象的指针,其访问公有成员函数需使用 “- ”,而不能使用“ ”。 二、简单应用题(

9、40分) 2 【正确答案】 int sum(int array,int len) int sum=0; for (int i=0;i len;i+) sum=sum+arrayi; return sum; 【试题解析】 本题主要考查考生对于数组访问和 for循环语句的掌握。应该注意的是 ,长度为 len的数组 array的下标范围为 0到 len-1,而不是从 1到 len,所以循环控制变量的初始值为 0。 三、综合应用题( 30分) 3 【正确答案】 (1) double real,image; (2) real r; image=0.0; (3) complex temp; (4) if(c1- real=c2- real)&(c1- image=c2- image) 【试题解析】 本题主要考查了类的定义、类构造函数的重载、运算符重载和友元函数等知 识点。特别是在重载运算符 “+”中临时复数类的申请,相加的两个复数实部与虚部数值的获取,都是需要牢记的,这是运算符重载函数编写的核心所在。

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

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

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