阅读以下程序说明和C++程序,将程序段中(1)~(5)空缺处的语句填写完整。[说明]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]; //没有越界提示}

阅读以下程序说明和C++程序,将程序段中(1)~(5)空缺处的语句填写完整。

[说明]

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]; //没有越界提示

}


相关考题:

阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。[说明]已知以下C++程序运行时的输出结果如下。1:11:11:1[C++程序]01 include <iostream>02 using namespace std;03 class Stock{04 protect:05 (1) { };06 Stock(int n, int pr=1) {07 shares = n; share_val=pr;08 };09 void ~Stock() { };10 public:11 //成员函数12 void output() {13 (2)<< shares << ":" << share_val << endl;14 }15 private:16 //成员变量17 int shares;18 int share_val;19 };2021 void main() {22 Stock a(1); a.output23 Stock b; b.output24 Stock c = Stock (); c.output25 }请根据C++程序运行时的输出结果,将代码中(1)、(2)空缺处的内容补充完整。

请阅读以下技术说明、类图及C++代码,根据要求将(1)~(5)空缺处的内容填写完整。[说明]已知对某载客车辆(Car)进行类建模,如图4-19所示。其中,类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[C++代码]car.run();}

阅读以下程序说明和C++程序,将程序段中(1)~(7)空缺处的语句填写完整。[说明]使用MFC的CSocket类在两个或者多个应用程序之间建立通信。服务器应用程序先创建一个特殊的 Socket,用于监听客户应用程序的连接请求,然后再创建新的Socket来完成连接。从客户和服务器两端读取该连接,直到一个需要处理的报文到来为止。以下C++程序将封装这些功能,这样所有应用程序需要完成的只是创建一个Socket连接,然后处理到来的报文。这将包括一个新的服务器Socket类、新客户端Socket类和新的报文队列类。创建新的服务器Socket类程序的框架如下。第1个函数ListenEx()用于通知Socket开始监听客户应用程序。第2个函数OnAccept()在接收到连接请求时被调用。在其中创建新的Socket,并立刻设置它开始从客户应用程序读取报文,这些是通过调用第3个函数RecvThread()来完成的,该函数位于它自己的线程中。[C++程序][ListenEX()函数]

阅读以下技术说明及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。[说明]在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件中内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用C++语言实现,能够正确编译通过。[C++代码]

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。[说明]传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-15所示。下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。[C++代码1]请将以上[C++代码1]与[C++代码2]程序段中的(1)~(7)空缺处的语句填写完整。

阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写在对应栏内。【说明】阅读下面几段C++程序回答相应问题。比较下面两段程序的优缺点。①for (i=0; i<N; i++ ){if (condition)//DoSomething…else//DoOtherthing…}②if (condition) {for (i =0; i<N; i++ )//DoSomething}else {for (i=0; i <N; i++ )//DoOtherthing…}

阅读以下说明和C++代码。[说明]已知类SubClass的getSum方法返回其父类成员与类SubClass成员j的和,类 SuperClass中的getSum为纯虚拟函数。程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。[C++代码]

阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。[说明]某订单管理系统的部分UML类图如图5-15所示。图5-15中,Product表示产品,ProductList表示产品目录,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。请完善类Order的成员函数getOrderedAmount()和类SalesSystem的statistic()方法,各个类的属性及部分方法定义参见下面的C++代码。[C++代码]

1、C/C++编译程序是()。A.将C/C++源程序编译成目标程序的程序B.一组机器语言指令C.将C/C++源程序编译成应用软件的程序D.C/C++程序的机器语言版本