1、国家二级 C+机试(操作题)模拟试卷 295及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modi1cpp,但该程序运行有问题,请改正 main函数中的错误,使程序的输出结果是: 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。#includeiostreamh#includeiomaniphVoid main() int a33=1,2,3,4,5,6,7,8,9; int*
2、p,i; *error* p=a; for(i=0;i9;i 十+) coutsetw(2)*(p+i); *error* coutsetw(2)*(a+i); if(i3=2)coutendl; (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2epp。阅读下列函数说明和代码,完成空出部分程序,使该程序输出倒 99口诀。 程序分析:分行与列考虑,共 9行 9列,设置两个变量 i和 j,i 控制行,j控制列。 程序运行结果如下: 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9= 63
3、 8*9=72 9*9=81 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8= 56 8*8=64 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7= 42 7*7=49 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*4=4 2*4=8 3*4=12 4*4=16 1*3=3 2*3=6 3*3=9 1*2=2 2*2=4 1*1=1 注意:只能补充函数 show(),请勿改动其他部分的内容。 #include void
4、 show() void main() cout0;i-) for(int j=1;j=i;j+) coutj*i=i*j; cout解析:解析:(1)由审题分析可知,可利用两重循环来实现输出倒 99口诀,设置两个循环变量,外层循环变量 i从 9开始变化至 1,循环 9次,代表乘号后面的数字。 (2)内部循环变量 i从 1变化到 i,代表乘号前面的数字,输出一行,j=i,这样保证输出的是倒 99口诀。在内层循环体内,利用 cout输出 i的值、“*”、i 的值、“=”和 i*j值,即输出乘法公式。三、综合应用题(总题数:1,分数:2.00)3.使用 VC6打开考生文件夹下的源程序文件 modi
5、3cpp。通过继承完成输入到屏幕指定的信息: TestClassA TestClassB TestClassC 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 B虚继承于 A,请在注释*1*后添加适当的语句。 (2)完成类 C虚继承于 A,请在注释*2*后添加适当的语句。 (3)完成类 D继承于 B,C,请在注释*3*后添加适当的语句。 (4)函数 fun通过调用基类的 fun,完成所输出的内容,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeiostreamhClass TestC
6、lassApublic: void fun() cout“TestClassA“endl; ;*1*class TestClassBpublic: void fun() cout“TestClassB“endl; ;*2*class TestClassCpublic: void fun() cout“TestClassC“endl; ;*3*class TestClassDpublic: Void fun() *4* ;Void main() TestClassD test; testfun(); return;(分数:2.00)_正确答案:(正确答案:(1)将“class TestClass
7、B:”补充完整为:class TestClassB:virtual public TestClassA (2)将“class TestClassC:”补充完整为:class TestClassC:virtual public TestClassA (3)将“class TestClassD:”补充完整为:class TestClassD:public TestClassB,public TestClassC (4)添加语句: TestClassA:fun();TestClassB:fun();TestClassC:fun();)解析:解析:(1)题目 1要求“完成类 B虚继承于 A”。在 C+
8、中,声明虚基类的一般形式为:class 派生类名:virtual 继承方式基类名,由题目知道 TestClassA为基类,TestClassB 为派生类,所以第 1个标识下修改为“class TestClassB:virtual public1estClassA”。 (2)同(1),题目 2和题目 3中要求的标识 2和 3下的语句修改为“class TestClassC:virtual public TestClassA”和“class TestClassD:public TestClassB,public TestClassC”。 (3)题目 4要求“函数 fun通过调用基类的fun,完成所输出的内容”。在 C+中调用基类的成员函数,要使用作用域限定符“:”,类名 A:函数 fun,就是调用类 A的函数 fun,根据题目中的要求补全对类 TestClassA、TestClassB 以及TestClassC中的 fun函数,即:TestClassA:fun();TestClassB:fun();TestClassC:fun();。