首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShe
阅读以下函数说明和C代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShe
admin
2012-02-20
30
问题
阅读以下函数说明和C代码,回答问题
[说明]
对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图7-1显示了各个类间的关系。以下是JAVA语言实现,能够正确编译通过。
[图7-1]
[C代码]
typedef bool(*fun1)();
typedef (1) (*fun2)();
const int BOOK_MAX = 10;//最大书本数
struct Book{
char name30;
};
struct BookShelf{//书架
struct Book books[BOOK MAX];
int index;//书架上最后一本书的下标加1,即下一本书的下标,如0表示有0本书
};
Struct Book* getBookAt(struct BookShelf *BS, int index)
//从书架BS上取得下标为index的书
//只有当下标大于等于0且不大于当前书架上的最后一本书对应的下标,才取书成功:
//否则失败,返回NULL
{
if(index >= 0 && (2) ){
return &BS->books[index];
}
return NULL;
}
bool appendBook(struct BookShelf *BS, struct Book book)
{
if(BS->index < BOOK_MAX){
BS->books[BS->index++] = book;
return true;
}
return false;
}
int getLength(struct BookShelf *bookShelf)
{
return bookShelf->index;
}
struct Iterator{//迭代器
fun1 hasNext;//判断是否还有下一个元素
fun2 next;//取得下一个元素
};
struct BookshelfIteratorf{//书架迭代器
int index;
struet BookShelf* bookShelf;
}bookShelfIterator = {0, NULL};
bool BShasNext()//判断是否还有下一本书
{
if(bookShelfIterator.index
return true;
}else{
return false;
}
}
struct Book* BSnext()//取得下一本书,并将index加1,以便下一次正确访问
{
return getBookAt(bookShelfIterator.bookShelf,
(3) );
}
void main()
{
struct BookShelf bookShelf;
bookShelf.index = 0;
//将书籍上架,省略代码
//将bookShelf与bookShelfIterator相关联
bookShelfIterator.bookShelf = (4) ;
struct Iterator iterator;
iterator.hasNext = BShasNext;
iterator.next = BSnext;
struct Book* b;
while( (5) ){//遍历书架,输出书名
b=iterator.next();
printf("%s\n", b->name);
}
}
选项
答案
(1)struct Book* indexindex bookShelfIterator.index++ &bookShelf iterator.hasNext()
解析
是某个函数类型定义,先看空(2),根据注释,此处应填下标index“不大于当前书架上的最后一本书对应的下标”,而结构体BookShelf中的字段index是表示“书架上最后一本书的下标加1,即下一本书的下标,如0表示有0本书”,故空(2)应填:indexindex。
继续看空(3),根据注释函数BSnext()的功能是“取得下一本书,并将index加1,以便下一次正确访问”,而函数getBookAt(BS,index)是“从书架BS上取得下标为index的书”,因此空(3)应填欲取书的下标,应为bookShelfIterator.index,故空(3)应填bookShelflterator.index++。
书架迭代器BookShelflterator中的字段bookShelf是struct BookShelf*类型的,因此空(4)应填&bookshelf,注意取地址符&。
while循环是遍历书架,输出书名,循环条件是“还有下一记录(书)”,故空(5)应填iterator.hasNext()。
现在再来看空(1),由迭代器Iterator中字段next的定义:fun2 next;以及赋值语句iterator.next=BSnext;可得,fun2应该定义了与BSnext函数同参数的函数指针,函数指针的定义原型为:函数返回类型函数指针变量名(参数列表),又知函数BSnext的定义为struct Book*BSnext(),故空(1)应填struct Book*。
转载请注明原文地址:https://kaotiyun.com/show/XlDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
假设关系R1和R2如下图所示:若进行R1R2运算,则结果集分别为(1)元关系,共有(2)个元组。(1)
操作系统通过______来组织和管理外存中的信息。
在开发一个字处理软件时,首先快速发布了一个提供基本文件管理、编辑和文档生成功能的版本,接着发布提供更完善的编辑和文档生成功能的版本,最后发布提供拼写和语法检查功能的版本,这里采用了()过程模型。
对于以下编号为①、②、③的正规式,正确的说法是(35)。①(aa*|ab)*b②(a|b)*b③((a|b)*|aa)*b
某企业有生产部和销售部,生产部负责生产产品并送入仓库,销售部从仓库取出产品销售。假设仓库可存放n件产品。用PV操作实现他们之间的同步过程如下图所示。其中,信号量S是一个互斥信号量,初值为(1);S1是一个(2);S2是一
驻留在多个网络设备上的程序在短时间内同时产生大量的请求消息冲击某Web服务器,导致该服务器不堪重负,无法正常响应其他合法用户的请求,这属于(9)。
计算机采用分级存储体系的主要目的是为了解决()的问题。
某汽车维修公司有部门、员工和顾客等实体,各实体对应的关系模式如下:部门(部门代码,部门名称,电话)员工(员工代码,姓名,部门代码)顾客(顾客号,姓名,年龄,性别)维修(顾客号,故障情况,维修日期,员工代码)假设每个部门允许有多部电话,则电话属性为
静态图像压缩标准JPEG2000中使用的是(60)算法。
下图是________________设计模式的类图,该设计模式的目的是________________,图中,Decorator和Component之间是________________关系,ConcreteDecorator和Decorator之间是_
随机试题
小儿麻痹症的病原体是()
A.苏叶、半夏、茯苓、前胡、苦桔梗、枳壳、甘草、生姜、大枣、杏仁、橘皮B.桑叶煅、石膏、甘草、人参、胡麻仁、真、阿胶、麦门冬、杏仁、枇杷叶C.熟地、生地、归身、白芍、甘草、桔梗、玄参、贝母、麦冬、百合D.熟地、生地、归身、白芍、甘草、陈皮、玄参、贝母
下列哪项是肺癌中最常见的一种,约占30%~40%,多发生在靠肺门区
吸入高浓度镉烟后发生食入可溶性钡盐后发生
不属于中耳结构的是
中间消防车道与环形消防车道的交接处满足消防车转弯行驶且消防车道之间的间距不大于()的要求。
Excel表格处理操作考试要求:(1)将标题字体设为“魏碑”,24磅,粗体,置于表格正上方居中。(2)计算每名学生的总成绩。公式:总评成绩二期中成绩×40%+期末成绩×60%(3)将总评成绩的最高分显示在“总成绩”的最后一栏
2004年,广东省委省政府首次提出珠江三角与山区及东西两翼共建产业转移工业园。截至2009年4月,广东全省已认定产业转移园32个,14个欠发达地市已至少有一个产业转移园。至2008年底,广东省29个产业转移园已投入开发资金111.38亿元,入园项目(含意向
迄今为止未列入《人类非物质文化遗产代表作名录》的是()
TheDoctor’sAdviceOldJohnwenttoseeadoctor.Thedoctorexaminedhimandsaid,"Medicinewon’thelpyou.Youmusthave
最新回复
(
0
)