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

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

1、国家二级( C+)机试模拟试卷 42及答案与解析 一、程序改错题( 30分) 1 使用 VC6打开考生文件夹下的工程 test28_1,此工程包含一个源程序文件test28_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: 5 5 源程序文件 test28_1.cpp清单如下: #include iostream.h class A public: /* found * static int n=1; A()n+; A() (n-; ; /* found * int n=0; int main() A a; A b3; A *c=new A; c= /* found

2、* cout c.n end1; cout A:n end1; return 0; 二、简单应用题( 40分) 2 编写函数 fun(),它的功能是求 n以内 (不包括 n)同时能被 3与 7整除的所有自然数之和的平方根 s,并做为函数值返回。例如: n为 1000时,函数值应为 s153.909064。 注意:部分源程序给出如下。 请勿改动主函 数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include conio.h #include math.h #include stdio.h double fun(int n) main() c

3、lrscr(); printf(“s=%fn“, fun(1000); 三、综合应用题( 30分) 3 使用 VC6打开考生文件夹下的工程 test27_3。此工程包含一个 test27_3.cpp,其中定义了类 ARRAY,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成类 ARRAY的带一个参数的构造函数,参数 i为 int型,如果 i不是正数则输出错误信息并退出,否则申请 int型的大小为 i的空间,然后把 i赋值给类的数据成员 num。请在注释 “/*1*”之后添加适当的语句。 (2)完成类 ARRAY的拷 贝初始化构造函数,注意解决重复删除的问题,请在注释“/*

4、2*”之后添加适当的语句。 (3)完成类 ARRAY的重载的运算符函数 ,参数 i为 int型,如果 i超界则输出错误信息并退出,否则把下标为 i的元素返回,请在注释 “/*3*”之后添加适当的语句。 (4)完成类 ARRAY的重载的运算符函数二,同样需要注意解决重复删除的问题,不能只是简单的赋值,请在注释 “/* 4*”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件 test27_3.cpp清单如下; #include iostream.h #include stdlib.h class ARRAY private: int* p, num;

5、public: ARRAY ( ) p=new int 10 , num=10; ARRAY ( int i) / * 1 * cout “错误 !数组长度应为正。 n”; exit(0); p=new inti; num= i; ARRAY(const ARRAY int ARRAY() delete p; ARRAY friend ARRAY operator+(ARRAY friend ostream ; ARRAY: :ARRAY(const ARRAY i num; i+) pi=a.pi; int exit (0); return pi; ARRAY p=new int num;

6、for (int i=0; i num; i+) pi=a.pi; / * 4 * ARRAY operator+(ARRAY exit (0); ARRAY t (a.num); for(int i=0;i a.num;i+) t.pi=a.pi+b.pi; return t; ost ream for(;i a.num; i+) cout a.pi ; if (!(i+1) %10) ) cout end1; return os; void main ( ) ARRAY a(3); a0=a1 =a2=3; cout a a end1; ARRAY b ( a ); cout b b en

7、d1; ARRAY c(2); c=a+b+b; cout c c end1; c=( (b= (a+b) +c); cout a a b b c c end1; a7=3; cout a; 国家二级( C+)机试模拟试卷 42答案与解析 一、程序改错题( 30分) 1 【正确答案】 (1) 错误: static int n=1; 正确: static int n; (2) 错误: int n=0; 正确: int A: n=0; (3) 错误: cout c.n end1; 正确: cout c- n end1; 【试题解析】 (1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态

8、数据成员的初始化: (2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类: (3)c为类的对象指针,访问类成员函数时使用符号 “- ”,而不能用 “ ”。 二、简单应用题( 40分) 2 【正确答案】 double fun(int n) double s 0.0; int i; for(i=0; i n;i+) /*从 0 n中找到既能被 3整除同时又能被 7整除的数,并将这些数求和 */ if (i%3=0 s=sqrt (s); /*对 s求平方根 */ return s; 【试题解析】 本题的解题思路是逐个取得从 0 n之间的所有数,对每次取得的数进行条件判断,条件是既能被

9、 3整除同时又能被 7整除,注意:这两个条件要求 同时成立,因此用到了 “&及, 运算符。满足条什,该数就被累加到 s中去,所有符合条件的数找完后,用 sqd()函数 (包含于头文件 math.h中 )对 s求平方根。 三、综合应用题( 30分) 3 【正确答案】 (1) if(i =0) (2) num=a.num; p=new intnum; (3) d(i =num|i 0) (4) return * this; 【试题解析】 主要考查考生对于一个特殊的类 安全数组的掌握,其中涉及了友元函数、重载函数等,其中 (2)中必需申请新的空间,这样可以使得两个对象分别占用不同的两个空间,在自动调用析构函数时不会遇到重复删除的问题,这种方法要掌握。

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

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

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