问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.epp,其中定义了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>usingnamespacestd;classArray{public:Array(intsize)//构造函数{//********found********下列语句动态分配一个int类型数组_p=________;size=size;}~Array(){delete[]_p;)//析构函数voidSetValue(intindex,intvalue)//设置指定元素的值{if(IsOutOfRange(index)){ceEE<<"Indexoutofrange!"<<end1;reLurn;}//********found********________;}intGetValue(intindex)const//获取指定元素的值{if(IsOutOfRange(index)){cerE<<"Indexoutofrange!"<<end1;return-1;}//********fOUnd********________;}intGetLength()const{return_size;)//获取元素个数private:int*p;intsize;boolIsOutOfRange(intindex)const//检查索引是否越界{//********found********if(index<0||________)returntrue;elsereturnfalse;}};intmain(){Arraya(10);for(inti=0;i<a.GetLength();i++)a.SetValue(i,i+1);for(intj=0;j<a.GetLength()-1;j++)tout<<a.GetValue(j)<<",";cout<<a.GetValue(a.GetLength()-1)<<end1;return0;}
【正确答案】正确答案:(1)new int [size] (2)_p[index] = value (3)return _p[index] (4)index > _size
【答案解析】解析:(1)主要考查考生对动态分配的掌握,题目要求分配一个int类型数组,数组长度为size,应使用new语句分配空间,因此为new int[size]。 (2)主要考查考生对成员函数的掌握,先看函数功能:设置指定元素的值。index为指定的下标,value为指定的值,因此使用语句: _p[index] = value;。 (3)主要考查考生对成员函数的掌握,函数功能为获取指定元素的值,index为要求返回的元素的下标,直接使用return语句返回数组元素即可。 (4)主要考查考生对if语句的掌握,函数功能是检查索引是否越界,当index<0或者index> size时,index越界,返回true。