C++上机考试题库答案
析构函数的定义    第 1 套题解析
    题目一:基本操作题
    【参考答案】 (1)delete [] array;
    (2)cout array[i] ' '; (3)MyClass obj(10); 【考点分析】
    本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态数组、语句初始化。一般 考到类时就会涉及构造函数,要注意构造函数的定义方法。析构函数就是考查delete语句的用法, 其一般形式为: delete []+要释放的指针。 【解题思路】
    (1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete [] 后面即可。 (2) 考查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout<expr;其 中,expr代表一个表达式,\称为插入运算符,该语句的含义是;将表达式expr的值输出到屏幕 上。使用cin进行数据输入操作,一般格式为:cin>  vari。其中,var是代表一个变量,\
称为提取运 算符,该语句的含义是,将用户输入的数据保存到var中。 (3) 考查语句的初始化,我们来看MyClass类的构造函数: MyClass(int len) {  </expr;其>
    array = new int[len]; arraySize = len;
    for(int i = 0; i  arraySize; i++) array[i] = i+1;
    }
    注意形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给 len赋值为10。 【解题宝典】
    delete语句是最常考的知识点,用于释放指针变量,其一般形式为:delete[]+要释放的指针。
    题目二:简单应用题
    【参考答案】 (1) a[num] = e; (2) Array(s)
    (3) a[j] = a[j - 1]; (4) a[i] = e; 【考点分析】
    本题考查数组类Array以及Array的派生类SortedArray,其知识点涉及构造函数、析构函数、虚函 数、动态数组。考到函数时,首先要看函数名,通过函数名称能大概知道该函数的功能,比如Array 类中的 virtual void add(int e) 函数,看到这个函数我们能得到如下信息:
    1) 有关键字virtual,说明该函数是虚函数,在Array类的派生类里肯定会有对add函数的定义。 2) 有关键字void,说明此函数没有返回值。
    3) add的意思是添加,它的形参是int e,那么我们大概可以猜到该函数的功能是把整型数值e添加 到数组a中。 【解题思路】
    (1) 考查的是虚函数virtual void add(int e)的定义,即添加一个整型数已到 a[num] 中。
    (2) 主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始 化。
    (3) 因为SortedArray类是排序类,所以数组a中的元素是要从小到大排序的。在if (e  a[i])条件下,
    要把i后的元素逐个往后移一位,因此此处为a[j] = a[j - 1]。
    (4) 主要考查虚函数virtual void add(int e)在派生类SortedArray类中的定义,把插入的数据放在数 组a的第i+1个位置,即a[i] = e;。
    【举一反三】第31套的简单应用题。
    题目三:综合应用题
    【参考答案】
    (1) MyVector::MyVector (2) i.x - j.x, i.y - j.y (3) v1 + v2 【考点分析】
    本题考查二维向量类MyVector,其中涉及到的知识点有构造函数,重载运算符+、-、。在类外定 义构造函数时,语法要和定义其他类函数一样,前面要加上类名和作用域符号。重载运算符函数要 注意其返回值类型和参数类型。 【解题思路】
    (1) 主 要 考 查 的 是 构 造 函 数 , 在 类 外 定 义 构 造 函 数 时 要 使 用 类 名 和 作 用 域 , 即 MyVector::MyVector。
    (2) 主要考查重载运算符\的返回语句,返回值应为向量i和j的差,即MyVector(i.x - j.x, i.y - j.y);。
(3) 主要考查重载运算符\的使用,由题目可知v3是v1和v2的和,前面我们已经重新定义了运算 符\所以在这里直接使用语句v3 = v1 + v2即可。
    第 2 套题解析
    题目一:基本操作题
    【参考答案】 (1)MyClass(int i)
    (2)int Max(int x, int y, int z)
    (3)cout \【考点分析】
    本题考查:MyClass类,构造函数,析构函数,成员函数,函数重载。函数重载必须要形参类型不同,或 者形参个数不同。 【解题思路】
    (1)考查构造函数,构造函数前不加void或其它任何类型名,直接使用MyClass(int i)即可。 (2)主要考查函数重载,在
    int Max(int x, int y) { return xy ? x : y; }中两个形参变量都是int型,而语句int Max(int x, int y, int z = 0)的前两个形参也都是int 型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参 数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把int z=0 改为int z,才能构成函数重载。
    (3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的 用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。 【举一反三】第28套的程序改错题。
    【参考答案】 (1)item(val) (2)delete [] p (3)temp = top
    (4)temp-next = top 【考点分析】
    本题考查:堆栈类Stack类,Item类,构造函数,析构函数,成员函数,函数调用。堆栈类的节点一般使用
    题目二:简单应用题
    指针表示,也就会考查到指针的相关知识点,要注意释放指针应使用delete [] 语句。 【解题思路】
    (1)主要考查构造函数,对私有成员进行初始化,即item(val)。 (2)主要考查delete语句释放指针,一般格式为:delete []+指针。
    (3)指向栈顶节点的是top指针,要使temp指向栈顶节点,故使用语句temp = top。
    (4)指向栈顶结点的是top指针,要使新节点的next指针指向栈顶数据,故使用语句temp-next = top。 【解题宝典】
    本题涉及堆栈类,栈是先进后出,后进先出的存储结构。对于此类问题指针的使用是个难点,要记 住栈中指向栈顶节点的是top指针,添加数据时要往栈顶添加。 【举一反三】第46套的简单应用题。
    题目三:综合应用题
    【参考答案】
    (1)MyPoint p1, MyPoint p2
    (2)X(), Y() (3)double MyRectangle:: 【考点分析】
    本题考查:表示平面坐标系中的点的类MyPoint,表示矩形的类MyRectangle,构造函数,成员函数。 【解题思路】
    (1)考查构造函数,构造函数中的参数要给私有成员赋值,在下句中up_left(p1),down_right(p2){}指 出私有成员赋值要使用形参p1和p2,所以这里参数要定义为MyPoint p1, MyPoint p2。
    (2)主要考查成员函数的返回语句,MyPoint My Rectangle: getDownLeft()const函数要求返回一个 左下角的点坐标,因此使用语句MyPoint(X(), Y());。
    (3)主要考查成员函数的定义,在MyRectangle类中已经声明double area()const,因此此处只要添加 double MyRectangle::即可。 【解题宝典】
    构造函数的参数定义时要注意在赋值语句中使用的参数。考查构造函数一般都会考查到形
参,应 注意联系上下文。类的成员函数在类外定义时要在函数名前面加上:返回值类型 + 类名 + 作用 域(::)。
    【举一反三】第28套的综合应用题。
    第 3 套题解析
    题目一:基本操作题
    【参考答案】
    (1)MyClass(int val) : value(val) {}
    (2)void MyClass::SetValue(int val) { value = val; } (3)cout \【考点分析】
    本题主要考查:MyClass类,构造函数,成员函数以及成员函数调用。 【解题思路】
    (1)考查构造函数,定义构造函数时不能使用void,直接使用MyClass(int val)即可。
    (2)主要考查成员函数定义,类的成员函数定义时要使用前缀MyClass,而inline是内联函数的
关键 字,在此是错误的,应该删掉inline并在函数名前加上前缀MyClass,即void MyClass::SetValue(int val) { value = val; }。
    (3)考查成员函数调用 ,value是私有成员 ,在主函数中不能直接调用 value,可以使用成员函数 GetValue()来得到value的值。 【解题宝典】
    构造函数前不能添加任何类型,如void,int,double等。类的成员函数定义时要加上前缀,即类的名
    字。私有成员只能被类的成员函数调用。 【举一反三】第32套的程序改错题。
    题目二:简单应用题
    【参考答案】 (1)new char[s] (2)delete [] p (3)p[top] = c (4)return p[top] 【考点分析】

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。