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

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

1、国家二级 C+机试(操作题)模拟试卷 31及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil epp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在 *error*的下面,修改该语句即可。 1 #include 2 class CMyClass 3 4 private: 5 int number; 6 int Add(int i) 7 8 return number+=i ; 9 10 int Sub(int i) 11 12 return number -=i; 13 14 int Mul(int

2、i) 15 16 return number*=i; 17 18 int Div(int i) 19 i 20 if(i!=0) 21 22 return number =i ; 23 24 else 25 return number; 26 27 *error* 28 typedef int(FUNC)(int); 29 *error* 30 FUNC func; 31 public: 32 CMyClass() 33 34 func0=CMyClass: Add; 35 func1=CMyClass: Sub; 36 func2=CMyClass: Mul; 37 func3=CMyCla

3、ss: Div; 38 number=0 ; 39 40 int CallFunction(int i, int J) 41 42 *error* 43 return(funci)(J); 44 45 ; 46 void main() 47 48 CMyClass myobj; 49 cout 2 #define NUM 8 3 void func(int ANUM, int n) 4 5 6 j 7 int main() 8 9 int ANUM=(1, 2, 3, 4, 5, 6, 7, 8); 10 func(A, 6); 11 for(int i=0 ; i 2 const doubl

4、e pi=3 14 16 ; 3 class circle 4 5 protected: 6 *1* 7 8 public: 9 *2* 10 11 12 r=0 0 ; 13 14 circle(double radius) 15 16 r=radius ; 17 18 void print() 19 20 area=r*r* pi ; 21 cout*funci)(j); 【试题解析】 CMyClass类有一个成员变量 number,多个成员函数分别实现加减乘除功能。使用 typedef定义了一个返回值是整型并带有一个整型参数的函数指针,并通过实例化一个容量为 4的函数指针数组实现对类中定

5、义的方法的调用。 解题思路 (1)在类 中定义函数指针须指定类名及指针定义运算符 *,因此第 1个标识下函数指针正确的定义为 “typedef intrCMyClass: *FUNC)(int); ”。 (2)函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向四种算数运算,因此定义指针数组大小为 4,即第 2个标识下应改为 “FUNC func4; ”。 (3)func是指针数组,因此访问的时候需要有指针运算符 “*”,第 3个标识下应改成 “retum(this-*funci)(j); ”。 二、简单应用题 2 【正确答案】

6、 1 for(int i=0 ; in 2 ; i+) 2 3 int temp=Ai;交换 4 Ai=A In i; 5 An i=temp ; 6 【试题解析】 func()函数完成对数组内容的重排,下标为 i的数字与下标为 n i的数字交换,可以用循环来实现。 解题思路 (1)用循环来实现该过程,题目要求从 0开始,交换 N 2次,因此 循环变量 i的范围从 0变化到 N 2。 (2)下标为 0的元素与下标为 n的元素交换,下标为 1的元素与下标为 n 1的元素交换,依此类推,在循环体内,用一个临时变量记录第一个元素,然后将第二个元素赋值给第一个元素,临时变量值赋给第二个元素,如此完成两

7、个元素的交换。 三、综合应用题 3 【正确答案】 (1)添加语句: double r, area ; (2)添加语句: Circle() (3)添加语句: column(double radius, doubleheight) (4)添加语句: cout“height=“h “vol=“area*hendl; 【试题解析】 本题的功能是计算圆的面积和周长。在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类和成员函数实现各种输出操作。 解题思路 (1)题目 1要求 “定义类 circle的保护

8、数据成员函数 r和 area,它们都是 double型的数据 ”。保护成员与 private和 public一样是用来声明成员的访问权限的 。在已有程序 circle类中的 protected:区域,添加变量 r和 area的定义,即“doubler,area; ”。 (2)题目 2要求 “添加类 circle的无参数的构造函数,使得类 circle对象的 r默认值为 0”。在 C+中,构造函数是一种特殊的成员函数,它的名字与类同名,没有参数的构造函数一般形式为:构造函数名 (),所以这里添加 “circle()”。 (3)题目 3要求 “添加派生类 column的构造函数的定义 ”。同 (2),另外带参数的构造函数的一般格式为:构造函数名 (类型 1形参 1,类型 2形 参 2, ) ,所以这里添加 “column(double radius, double height)”。 (4)题目 4要求 “完成派生类 column的成员函数 print()的定义 ”。根据题干中输出结果,知道第一个输出值为 height,第二个输出值为 vol,即 area*h,所以这里添加 “cout“height=“h “vol=”area*hendl; ”。

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

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

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