1、国家二级 C+机试(操作题)模拟试卷 86及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include *error* template void fun(T t) std: : cout VOid fun(bool t) std: cout ; #define MAXLINE 1 00 _int fun(int a, int *index) void main() i
2、nt AMAXLINE; int index; int maxdata ; maxdata=fun(A, &index); count C1ass CBase private: int Number; public: *1* CBase(int x) void display() cout (2)删除 “template” (3)bool flag=true; 【试题解析】 程序要求输出字符串 Hello test。从已定源程序的 main主函数开始入手,调用函数 fun实现字符的输出。 解题思路 (1)C+中的模板类格式为 template,所以将题目中程序中的第 1个标识下语句 “temp
3、late”修改为 “template”。 (2)在第 2个标识下的 “void fun(bool t)”函数中,其中 t变量为布尔型变量,是 C+中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的 “bool flag=TRUE; ”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE并不是合法值, C+中区分大小写,所以逻辑真值应为 true,即“bool flag=true; ”0 二、简单应用题 2 【正确答案】 int 1, n; do 输入数组的大小 coutn; while(n99); coutai; *in
4、dex=0; 元素下标值初始化 for(i=1; i: , , ); 类 CPri是 CBase的公共继承类,因此第 2个标识下应改为 “class CPri: public CBase”。 (3)CPri构造函数有两个形式参数,第一个是对 CBase的初始化,第二个缺省为0,用来对变量 Number2进行初始化,这里对 CBase的初始化也不能 在函数体内完成,因此也必须采用参数初始化表来完成,即第 3个标识下应改为 “CPri(int X, hat y=0): CBase(x)”,调用 CBase的构造函数完成对 CBase的初始化。 (4)函数 display()重载于 CBase的打印函数。完成对变量 Number2的输出,然后调用基类的打印函数 display0,基类的 displayO和派生类的 display()重名,调用基类的 displayO应过类名来直接调用,即第 4个标识下应添加“tout”Number2=”Number2endl; CBase: : display(); “。