首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 C++语言本身不提供对数组下标越界的判断。为了解决这一问题,在程序6中定义了相应的类模板,使得对厂任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越
admin
2010-01-15
78
问题
阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。
【说明】
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[] 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=s2[10][20]; //有越界提示:行下标越界[10]列下标越界[20]
b2=a2[1][4]; //没有越界提示
}
选项
答案
(1)class Array<T> (2)new T[iRsz*iCsz] (3)throw ’e’ (注:throw后可以填写任意的字符常数) (4)tBody.iCurrentRow=i (5)tBody (iRsz,iCsz)
解析
(1)的前面是友元关键词friend,但在程序中,没有独立的函数,所以只能是另一个模板类Array,所以(1)应填写class Array<T>。
在类模板ArrayBody的定义中,声明了成员变量T tpBody,且在析构函数中有delete []tpBody,由于在C++中,delete总是和new成对出现的,所以(2)应该使用new对tpBody进行初始化。通过程序中return tpBody[iCurrentRow * iColumns+j]行,可以发现该题中采用的是以一维数组来模拟二维数组的创建。在构造函数有两个参数,分别为行数和列数.所以(2)应填写new T[iRsz * iCsz]。
(3)的前后有try{…}和catch{…}语句序列,这是C料中典型的异常处理搭配语句。由于(3)前面已作处理,当有行下标越界时,置row error=true;当有列下标越界时,置 col error=true。且(3)前面的判断是“row error==true||column error=true”,也就是说只要有行下标越界或是列下标越界就执行(3)。错误处理语句写好放在catch中,catch是当正常程序段发生异常时才执行的,并且这里指明了是catch(char),所以只要在(3)抛出一个char异常,即可进行错误处理。所以(3)应填:throw ’e’(这里可以是任何字符)。
再来看Array类中的两个空。首先看(5),这显然是做一些初始化工作,给其成员变量赋初值,而Array类只有一个成员变量tBody,且tBody是ArrayBody类型的,ArrayBody的构造函数需要传递两个参数,分别代表数组的行和列。因此,(5)应填写tBody (iRsz, iCsz)。
main中实例化Array,而在类Array的构造函数对tBody这个变量进行实例化,这时就以一维数组的形式创建了二维数组。在类Array中口运算符重载函数中返回了一个ArrayBody类,而在ArrayBody也存在着[]运算符重载函数,并且在ArrayBody的重载函数中对行下标和列下标同时进行了检查,且返回了一个T类型,对Array<int>来说就是返回了int,也就是数组的一个元素。那么通过对类ArrayBody的观察,发现在整个 ArrayBody中并没有任何地方对iCurrentRow进行赋值,而在ArrayBody的[]运算符重载中却利用其对数组行下标进行判断,而数组的行下标只在Array的口运算符重载中出现,那么 (4)就应该是对类ArrayBody的成员变量iCurrentRow进行赋值,所以(4)应填入 tBody.iCurrentRow=i。
转载请注明原文地址:https://kaotiyun.com/show/00DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在分布式数据库中有分片透明、复制透明、位置透明和逻辑透明等基本概念,其中:___________(19)是指局部数据模型透明,即用户或应用程序无须知道局部使用的是哪种数据模型;___________(20)是指用户或应用程序不需要知道逻辑上访问的表具体是怎
某企业的生产流水线上有2名工人P1和P2,1名检验员P3。P1将初步加工的半成品放入半成品箱B1;P2从半成品箱B1取出继续加工,加工好的产品放入成品箱B2;P3从成品箱B2取出产品检验。假设B1可存放n件半成品,B2可存放m件产品,并设置6个信号量S1、
在WindowsXP操作系统中,用户利用“磁盘管理”程序可以对磁盘进行初始化、创建卷,(23)。通常将“C:\Windows\nyprogram.exe”文件设置成只读和隐藏属性,以便控制用户对该文件的访问,这一级安全管理称之为(24)安全管理。
某软盘有40个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,则读取一个100块的文件需要时间为(24)。
“面向对象技术中,类之间共享属性与行为的机制称为()。
软件测试的基本方法包括白盒测试和黑盒测试方法,以下关于二者之间关联的叙述,错误的是(61)。
软件设计阶段一般又可分为______。A.逻辑设计与功能设计B.概要设计与详细设计C.概念设计与物理设计D.模型设计与程序设计
在软件维护阶段,将专用报表功能改成通用报表功能,以适应将来可能的报表格式变化,则该维护类型为()维护。
国标16260中,在描述外部(内部)效率度量时,给出了若干针对计算机系统时间消耗的定义,以下描述项中正确的有(31)。①响应时间是指从按下传送键到得到结果为止所需要的时间。②处理时间是指从接受一个消息到送出它的结果之间计算机的历时时间。③周转时间是指
某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:①经过自己测试的软件今后不会再出现问题;②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;③承诺不需要其他人员,自己就可以独立进行测
随机试题
况吾与子渔樵于江渚之上,侣鱼虾而友麋鹿,驾一叶之扁舟,举匏樽以相属。寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。挟飞仙以遨游,抱明月而长终。知不可乎骤得,托遗响于悲风。这段文字突出的艺术特点是什么?
先天性肾上腺皮质增生,为________染色体________遗传性疾病,是导致女性假两性畸形最常见的类型。
张某,女,23岁。患尖锐湿疣,外生殖器及肛门出现疣状赘生物,色灰,质柔软,表面秽浊潮湿,触之易出血,恶臭,小便色黄,不畅,舌苔黄腻,脉弦数。治拟利湿化浊,清热解毒。应首选()
钢管管道人行道的最小埋深为()。
土地增值税实行的税率是()。
根据表1,2006年我国贸易差额比2000年约()。2001-2005年期间,我国外商投资企业贸易差额的增速和集体、私营及其他企业贸易差额增速的比为()。
Despitethescandalsoverleakede-mails,thescientificevidenceforglobalwarmingremainsstrong.Thequestion,then,istow
采用精简指令集(RISC)技术的微处理器是______。
Didsheclosethegaragedoor?
Alice’sblogcontains______photographsandhundredsofarticlesandshortvideosfromhertriparoundtheglobe.
最新回复
(
0
)