更多"【说明】 C++语言本身不提供对数组下标越界的判断。为了解决这一问题"的相关试题:
[简答题][说明]
C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下[C++程序]中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。
[C++程序]
#include <iostream.h>
template <class T> class Array;
template <Class T> class ArrayBody {
friend (1) ;
T* tpBody;
int iRows,iColumns, iCurrentRow;
ArrayBody(int IRsz, int iCsz) {
tpBody = (2) ;
iRows = iRsz;
iColumns = iCsz;
iCurrentRow = -1;
}
Public:
T& operator[] (int j) {
bool row_error, column_error;
row_error = column_error =false;
try {
if (iCurrentRow < 0 || iCurrentRow >= iRows)
row_error = true;
if (j<0 || j>= iColumns)
column_error = true;
if (row_error == true || column_error == true)
(3) ;
}
catch(char){
if (row_error == true)
cerr << "行下标越界[" << iCurrentRow << "]";
if (column_error = true)
cerr << "列下标越界[" << j << "]";
cout << "/n";
}
retur
[简答题][说明]
C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下[C++程序]中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。
[C++程序]
#include <iostream.h>
template <class T> class Array;
template <Class T> class ArrayBody
friend (1) ;
T* tpBody;
int iRows,iColumns, iCurrentRow;
ArrayBody(int IRsz, int iCsz)
tpBody = (2) ;
iRows = iRsz;
iColumns = iCsz;
iCurrentRow = -1;
Public:
T& operator[] (int j)
bool row_error, column_error;
row_error = column_error =false;
try
if (iCurrentRow < 0 || iCurrentRow >= iRows)
row_error = true;
if (j<0 || j>= iColumns)
column_error = true;
if (row_error == true || column_error == true)
(3) ;
catch(char)
if (row_error == true)
cerr << "行下标越界[" << iCurrentRow << "]";
if (column_error = tr
[简答题]【说明】
C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息。
#include<iostream.h>
template <class T> class Array;
template <class T> class ArrayBody {
friend (1)
T* tpBody;
int iRows, iColumns, iCurrentRow;
ArrayBody (int iRsz, int iCsz) {
tpBody = (2)
iRows = iRsz; iColumns =iCsz; iCurrentRow =-1;
}
public:
T& operator[] (int j) {
bool row_error, column_error;
row_error=column_error=false;
try{
if (iCurrentRow < 0 || iCurrentRow >=iRows)
row_error=true;
if (j < 0 || j >=iColumns)
column_error=true;
if ( row_error==true || column_error == true)
(3)
}
catch (char) {
if (row_error==true)
cerr << "行下标越界[" << iCurrentRow << "] ";
if (column_error== true )
cerr << "列下标越界[" <<j << "]";
cout << "/n";
}
return tpBody[iCurrentRow * iColumns +j];
};
~ArrayBody ( ) { delete[]
[简答题]【说明】
设计一个类模板SamPle用于对一个有序数组采用二分法查找元素下标。
【C++程序】
#include < iostream. h >
#define Max 100 //最多元素个数
template < class T >
class Sample
{
T A[Max]: //存放有序数序
int n: //实际元素个数
public
Sample( ) { } //默认构造函数
Sample(T a[] ,int i); //初始化构造函数
int seek(T c);
void disp( )
{
for(int i=0;i <n;i ++)
cout<<A[i] <<" ";
cout<<endl:
} } template < class T >
Sample <T>: :Sample(T a[ ],int i)
{
n=i:
for( intj =0;j < i;j ++ )
(1) ;
}
template < class T >
int Sample < T >:: seek( T c)
{
int low =0,high = n-1 ,mid;
while( (2) )
{
mid = (low + high)/2;
if( (3) )
return mid;
else if( (4) )
low=mid+|;
else
(5) ;
}
return-1;
}
void main( )
{
char a[ ] ="acegkmpwxz";
Sample < char > s(a, 1);
cout<<"元素序列:" ;s. disp( );
cout<<"元素’g’的下标:"<<s. seek(’g’) <<endl;
}
[填空题][说明]
设计一个类模板Sample用于对一个有序数组采用二分法查找元素下标。
[c++程序]
#include<iostream. h>
#define Max 100 //最多元素个数
template<class T>
class Sample
T A [Max]; //存放有序数序
int n; //实际元素个数
Public:
Sample //默认构造函数
Sample(T a[] ,int i); //初始化构造函数
int seek(T c);
void disp
for (int i=0; i<n; i++)
cout<<A [i]<<" ";
cout<<endl;
;
template<class T>
Sample<T>::Sample(T a[],int i)
n=I;
for (int j=0; j<I; j++)
(1) ;
template<class T>
int Sample<T>::seek(T c)
int low=0,high=n-1,mid;
while( (2) )
mid=(low+high)/2;
if( (3) )
return mid;
else if ( (4) )
low=mid+1;
else
(5) ;
return-1;
void main( )
char a[]="acegkmpwxz";
Sample<char>s(a,1.);
cout<<"元素序列:" ;s. disp( );
cout<<"元素’g’ 的下标: "<<s. seek(’g’)<<endl;
[填空题]运行异常经常有算术异常、空指针异常、 【10】 、数组负下标异常和数组索引越界异常。
[单项选择]在使用Dim语句定义数组时,在缺省情况卜数组下标的下限为( )。
A. 0
B. 1
C. F
D. 必须指定下标
[填空题]在使用Dim语句定义数组时,在默认情况下数组下标的下限为 【10】 。