1、国家二级 C+机试(操作题)模拟试卷 84及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正错误,使得程序通过运行。 程序输出: 5 a 1 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include template *error* t min(t x, t y) return(xy)?y: x; void main() int n=5 ; *error* char c=“a”; int d=1; *error* cout #define MAXLEN 10
2、24 void ToUpper(char*des, char* str) void main() char destMAXLEN, char*str=”aBcdrFGHij K”; ToUpper(dest, str); cout clasS TestClassA public: void fun() cout”语句中定义的模板类为 T不是 t,所以第 1个标识下的 “t min(t x, ty)”修 改为 “Tmin(Tx,Ty)”。 (2)第 2个标识下的 “char c=”a”: ”语句中的变量 a为 char型,赋值为字符 a,在C+中应该使用单引号标注字符变量,而不是双引号,所以修改
3、为 “charat: ”。 (3)在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。 cout为标准库函数,所以要声明 cout是在命名空间 std中定义的流对象,即添加, using namespace std; ”。 二、简单应用题 2 【正确答案】 for(int i=0; stri !=0; i+) if( Str1 =a & Str1 =a&sVi=z,即该字符比 z小,而且比 a大,如果满足该条件则在该字符基础上加上 (A-a)值转换为大写字母;如果是其他字符的话,无需转换,直接刚该字符放到 des数组中。 三、综合应用题 3 【正确答案】 (1)将 “class T
4、estClassB: ”补充完整为: 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(); 【试题解析】 在
5、 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类和函数 fun实现各种输出操作。 解题思路 (1)题目 1要求 “完成类 B虚继承于 A”。在 C+中,声明虚基类的一般形式为:class派生类名: virtual继承方式基类名,由题目知道 TestClassA为基类,TestClassB为派生类,所以第 1个标识下修改为 “class TestClassB: virtualpublic TestClassA”。 (2)同 (1),题目 2和题目 3中要求的标识 2和 3下的语句修改为 “cl
6、ass 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(); ”。