1、国家二级 C+机试(操作题)模拟试卷 9及答案与解析 一、基本操作题 1 使用 VC+6 0打开考生文件夹下的源程序文件 1 cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并 使程序输出的结果为 sizeof(s1)=5 sizeof(s2)=10 sizeof(s3)=1 注意:不要改动 main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 *error*的下面。 (1)不能删除 assert()语句。 (2)只能修改后面的数 字。 提示: assert函数如果为假,则会产生一个中断异常。 试题程序: #include #include void main() c
2、har*s1=“abe“; *error* assert(sizeof(s1)=3); cout void fun(int N4) int main() int N4=1, 2, 3, 0); fun(N); return 0; 三、综合应用题 3 使用 VC+6 0打开考生文件夹下的源程序文件 3 cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为 TCA TCB TCC (1)完成类 B虚继承于 A,请在注释 1后添加适当的语句。 (2)完成类 C虚继承于 A,请在注释 2后添加适当的语句。 (3)完成类 D继承于 B, C,请在注释 3后添加适当的语句
3、。 (4)函数 fun通过调用基类的 fun,完成所输出的内容,请在注释 4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: #include class TCA public: void fun() cout“TCA“end1; ; * * * * * * * * 1 * * * * * * * * claSS TCB public: void fun() cout“TCB“end1; ; * * * * * * * * 2* * * * * * * * class TCC public: void fun() cout“TCC“en
4、d1; ; * * * * * * * * 3 * * * * * * * * class 1“CD public: void fun() * * * * * * * * 4 * * * * * * * * ; void main() TCD test: test fun(); retUrn: ; 国家二级 C+机试(操作题)模拟试卷 9答案与解析 一、基本操作题 1 【正确答案】 (1)应改为 “assert(sizeof(s1)=4); ”。 (2)应改为 “assert(sizeof(s2)=10); ”。 (3)应改为 “assert(sizeof(s3)=1); ”。 【试题解析】
5、assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么 assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)=3); ”语句中 “sizeof(s1)=3”为假,这会使程序产生异常,不能正常执行。因为 str1的值为 abc,但是它还有一个尾符,它的长度应该是 4,而不是 3,所以在第 1处修改为 “assert(sizeof(s1)=4); ”。 str210说明, str2的空间为10,在第 2处修改为 “assert(sizeof(s2)=10); ”。 char str3=23;语句说明 23是字符,所占存储空间为 1,所以修改为
6、 “assert(sizeof(s3)=1); ”。 二、简单应用题 2 【正确答案】 int i, j, k; for(i=0; i4; i+) 百位循环 for(j=0; j(4; j+) 十位循环 for(k=0; k(4; k+) 个位循环 if(i!=j&j!=k&k!=i&Ni!=0) 当三位数不同,并且百位不为 0 coutNiNjNkend1; 输出这三位数组成的数字 【试题解析】 本题利用 3层循环,对 3位数字是否相同进行判断。如果 3位数不同,并且百位不为 0,那么依次输出这 3位数,即由 3位数组成的数字。 三、综合应用题 3 【正确答案】 (1)将 “class TC
7、B: ”补充完整为 “class TCB: virtual public TCA”。 (2)将 “class TCC: ”补充完整为 “class TCC: virtual public TCA”。 (3)将 “class TCD: ”补充完整为 “class TCD: public TCB, public TCC”。 (4)应添加 “TCA: fun(); TCB: fun(); TCC: fun(); ”。 【试题解析】 本题中第 1处要求 “完成类 B虚继承于 A”。在 C+中,声明虚基类的一般形式为: class派生类名: virtual继承方式基类名,由 题目知道 TCA为基类, T
8、CB为派生类,所以第 1处的语句修改为 “class TCB: virtual public TCA”。 根据第 2处和第 3处的要求将标识 2和 3下的语句修改为 “class TCC: virtual public TCA”和 “class TCD: public TCB, public TCC”。 第 4处要求 “函数 fun通过调用基类的 fun,完成所输出的内容 ”。在 C+中调用基类的成员函数,要使用作用域限定符 “: ”,类名 A:函数 fun,就是调用类A的函数 fun,根据题目中的要求补全 对类 TCA、 TCB以及 TCC中的 fun函数,即 “TCA: fun(); TCB: fun(); TCC: !fun(): ”。