1、国家二级 C+机试(操作题)模拟试卷 78及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modi epp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。 程序输出: S1: n=20 s2: n=10 执行 s3 add(s1, s2) s3: n=30 s4: n=30 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include C1ass TestClass int n; public: TestClass() Testelass(int m) n=m; *error* TestClas
2、s add(TestClass sl, s2) thiS一 n=s1 n+s2 n; *error* return(thiS); void disp() cout #define MAXNLEN 100 void factor(int*des, intin=s1 n+s2 n: ”语句中的 this变量为指针变量,所以第 2个标识下的 “return(this); ”返回语句中的 this变量,应该返回指针型,所以修改为 “retum f*this); ”。 (3)C+中类的定义 格式应为 “class类名 ; ”,以分号为结尾,所以第 3个标识下,类结尾处补充分号 “; ”,即修改为 “;
3、”。 二、简单应用题 2 【正确答案】 1 length=0 ; 2 for(int i=1 ; i=n; i+) 3 4 if(n i=0)判断是否 n的因数 5 6 des1ength=i 7 iength+ 8 9 【试题解析】 (1)找到 n的每一个因数可采用循环方法,循环变量从 1:开始到n,逐个取 n和循环变量的余数。 (2)如果余数为 0说明是 n的因数,添加到 des中,参数 length是采用的引用传递方式,形参的改变会影响实参,因此可直接将 length的值加 1表示 des中元素个数加 1。 三、综合应用题 3 【正确答案】 (1)添加语句: length=0; (2)将
4、 “if(Arrayi =n)”补充完整为: if(Arrayi=n)或 if(n=Arrayi) (3)将 “if()”补充完整为: if(ilength)或 if(i!=length) (4)将 “if()”补充完整为: if(Arrayi=n)或 if(n=Arrayi) 【试题解析】 (1)使 length的初始化为 0,因此添加语句: “length=0; ”。 (2)第 2个标识下是检查 n是否已经在数组当中存在,用 if语句来判断,即if(Arrayi一 n)或 if(n=Arrayi)。 (3)DelMember(int n)函数删除指定的元素,由于元素在数组当中的位置未知,因此必须先查找该元素的位置,在该函数的实现过程当中通过 for循环来完成,即第一个 for循环查找 n在数组中的位置。如果 11存在于数组中,那么 if中的 break语句就会执行跳出 循环,此时循环变量 i的值会小于 length,即通过判断 i的值是否小于 length值可以知道 n是否存在数组中,如果存在数组中接下来进行删除操作。即第 3个标识下应改为 if(ilength)或 if!=length)。 (4)islnclude(int n)成员函数用来判断 n是否存在数组当中,可用 if语句比较,即第4个标识下应改为 “if(Arrayi一 n)或 if(nArrayi)”。