1、国家二级 C+机试(操作题)模拟试卷 289及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modicpp,该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个 catch()必须抛出执行的任何异常。 程序通过抛出异常输出: error 0 ERROR 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamhint main() try throw(“error“); *error* catch(char s)
2、 coutsendl; try throw(int)0); *error* catch() coutiendl; try throw(0); throw(“error“); *error* catch() cout“ERROR“endl; return 0;(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。请完成以下函数: int factorial(int n):求出 n的阶乘,必须使用递归调用。 如果 n小于 1则返回 0。 注意:不能修改函数的其他部分。 #include #include int factor
3、ial(int n) void main() cout1 时,此时递归函数调用自己,即 factorial(n)=n*factorial(n-1),此时的函数的返回值是 n*factorial(n-1),如此来实现递归调用。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi3cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)完成构造函数,设置数组元素的个数为 0,请在注释*1*之后添加语句。 (2)完成函数 AddMember(int n),如果参数 n包含在类的数据成员数组中,则返回 0,否则把数据写入
4、数组,然后返回 1,请在注释*2*之后添加语句。(3)完成函数 DelMember(int n),如果变量在数据中,则删除该变量,并且返回 1,如果不存在则返回0,请在注释*3*之后添加语句。 (4)完成成员函数 islnclude(int n)的定义,该函数检查参数 n是否在类的数据成员数组 elems中,如果在返回 1,否则返回 0。请在注释*4*之后添加语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeiostreamh#define MAX LENGTH 500class CArraypublic: CArray() *1* int AddMember
5、(int n) for(int i=0;ilength;i+) *2* if(Arrayi=n) return 0; Arraylength+=n; return 1; int DeiMember(int n) int i; for(i=0;ilength;i+) i f(Arrayi=n) break; *3* if() for(;ilength-1;i+) Arrayi=Arrayi+1; length-; return 1; return 0; int isInclude(int n) for(int i=0;ilength;i+) *4* if() return 1; return 0
6、; private: int ArrayMAX LENGTH; int length;用来记录数组的个数;int main() CArray obj; objAddMember(1); objAddMember(3); objAddMember(8); objAddMember(23); coutobjisInclude(8)endl; coutobjisInclude(1 1)endl; objDelMember(3); objDelMember(8); coutobjisInclude(2)endl; coutobjisInclude(1)endl; return 0;(分数:2.00)_
7、正确答案:(正确答案:(1)添加语句: length=0; (2)将“i f(Arrayi=n)”补充完整为:if(Arrayi =n) 或 if(n=Arrayi) (3)将“if()”补充完整为:if(i解析:解析:(1)使 length的初始化为 0,因此添加语句:“length=0;”。 (2)第 2个标识下是检查 n是否已经在数组当中存在,用 if语句来判断,即 if(A盯 ayi=n)或 if(n=Atrayi)。 (3)DelMember(int n)函数删除指定的元素,由于元素在数组当中的位置未知,因此必须先查找该元素的位置,在该函数的实现过程当中通过 for循环来完成,即第一个 for循环查找 n在数组中的位置。如果 n存在于数组中,那么 if中的 break语句就会执行跳出循环,此时循环变量 i的值会小于 length,即通过判断 i的值是否小于 length值可以知道 n是否存在数组中,如果存在数组中接下来进行删除操作。即第 3个标识下应改为 if(i