问答题 请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程prod2,此工程中含有一个源程序文件proj2.cpp,其中定义了Array类。 在C++程序中访问数组元素时,如果索引值(下标)小于0或者大于元素个数减1,就会产生越界访问错误。Array是一个带有检查越界访问功能的数组类,其成员列表如下: 公有成员函数 功能 GetValue 获取指定元素的值 SetValue 将指定元素设置为指定值 GetLength 获取元素个数 私有成员函数 功能 IsOutOfRange 检查索引是否越界 私有数据成员 功能 _p 指向动态分配的整型数组的指针 _size 存放元素个数 Array类的构造函数会动态分配一个int类型数组,以存储给定数量的元素。在公有成员函数GetValue和SetValue中,首先调用私有成员函数IsOutOfRange检查用于访问数组元素的索引是否越界,只有当索引值在有效范围内时,才能进行元素访问操作。 请在横线处填写适当的代码,然后删除横线,以实现Array类的功能。此程序的正确输出结果应为: 1,2,3,4,5,6,7,8,9,10 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。 // proj2.cpp #include <iostream> using namespace std; class Array { public: Array(int size) //构造函数 { //******** found******** 下列语句动态分配一个int类型数组 _p=______; _size = size; } ~Array() { delete []_p; } //析构函数 void SetValue (int index, int value) //设置指定元素的值 { if (IsOutOfRange(index) ) { cerr << "Index out of range!" << endl; return; } //******** found******** ______; } int GetValue(int index) const //获取指定元素的值 { if (IsOutOfRange(index)) { cerr << "Index out of range!" << endl; return -1; } //******** found******** ______; } int GetLength () const { return_size; } //获妈元素个数 private: int *_p; int_size; bool IsOutOfRange(int index) const //检查索引是否越界 { //******** found******** if (index < 0 ||______) return true; else return false; } }; int main() Array a(10); for (int i = 0; i < a.GetLength(); i++) a. SetValue(i, i+1); for (int j = 0; j < a.GetLength() -1 j++) cout << a. GetValue(j) << ","; cout << a. GetValue (a. GetLength()-1) << endl; return 0; }
【正确答案】(1)new int[size] (2)_p[index]=value (3)return_p[index] (4)index>_size
【答案解析】[考点] 本题考查Array类,其中涉及构造函数、析构函数、成员函数和const函数。 [解析] (1)主要考查考生对动态分配的掌握,题目要求分配一个int类型数组,数组长度为size,应使用new语句分配空间,因此为new int[size]。 (2)主要考查考生对成员函数的掌握,先看函数功能:设置指定元素的值。index为指定的下标,value为指定的值,因此使用语句:_p[index]=value;。 (3)主要考查考生对成员函数的掌握,函数功能为获取指定元素的值,index为要求返回的元素的下标,直接使用return语句返回数组元素即可。 (4)主要考查考生对if语句的掌握,函数功能是检查索引是否越界,当index<0或者index>_size时,index越界,返回true。