试题与答案

[说明] C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在以下[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"; } return tpBody[iCurrentRow * iColumns + j]; } ~Arraygody(){delete[]tpBody;} }; template <class T> class Array { ArrayBody<T> tBody; Public; ArrayBody<T> & operator[] (int i) { (4) ; return tBody; } Array(int iRsz, int iCsz) : (5) { } }; void main() { Array<int> a1(10,20); Array<double> a2(3,5); int b1; double b2; b1 = a1[-5][10]; //有越界提示:行下标越界[-5] b1 = a1[10][15]; //有越界提示:行下标越界[10] b1 = a1[1][4]; //没有越界提示 b2 = a2[2][6]; //有越界提示:列下标越界[6] b2 = a2[10][20]; //有越界提示:行下标越界[10]列下标越界[20] b2 = a2[1][4]; //没有越界提示 }

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2018/0410/4e620d3828870a5f2e9c8aa9e543ae35.html

下面是错误答案,用来干扰机器的。

参考答案:A, C, D

试题推荐
微信公众账号搜索答案