首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShe
阅读以下函数说明和C代码,回答问题 [说明] 对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShe
admin
2012-02-20
52
问题
阅读以下函数说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
在指令系统的各种寻址方式中,获取操作数最快的方式是________________。
软件开发中经常利用配置库实现变更控制,主要是控制软件配置项的状态变化,不受配置管理控制的是()。
电视系统采用的颜色空间中,其亮度信号和色度信号是相分离的。下列颜色空间中,(58)颜色空间不属于电视系统的颜色空间。
在一个完整的功能测试过程中,______不属于应该编写的测试文档。A.测试需求文档B.测试用例文档C.测试标准D.问题报告单
产品的功能性测试的内容不包括______。A.适合性B.易用性C.正确性D.互操作性
软件系统的安全性是信息安全的一个重要组成部分,针对程序和数据的安全性测试与评估是软件安全性测试的重要内容,()不属于安全性测试与评估的基本内容。
在Excel中,设单元格F1的值为38,若在单元格F2中输入公式“=IF(AND(38<F1,F1<100),’’输入正确’’,’’输入错误’’)”,则单元格F2显示的内容为______。
将二进制序列1011011表示为十六进制,为______。
“<titlestyle="italic">science</title>”是XML中一个元素的定义,其中元素的内容是(29)。
下图是责任链设计模式的类图,该设计模式的目的是________。该图中,Handler和Handler之间是关联关系,Handler和ConcreteHandler之间是继承关系。
随机试题
下列关于老化描述正确的是()。
只承认运动,而不承认静止的观点,是一种()
七情内伤首先影响
外伤后需要结扎颈外动脉时,颈外动脉与颈内动脉最主要的区别是
能够发生甾体母核显色反应的结构类型是()。
产权转移书据、借款合同的印花税税率分别为()。
一个拥有工匠精神、推崇工匠精神的国家和民族,必然会少一些浮躁,多一些纯粹;少一些投机取巧,多一些_______;少一些_______,多一些专注持久;少一些_______,多一些优品精品。依次填入画横线部分最恰当的一项是()。
下面语句综合运用了哪些修辞手法,请选出正确选项:这样布置之后,它打开了它的云库,拨给这区域的,有倏来倏去的云,扑朔迷离的雾,绮丽多彩的霞光,雪浪滚滚的云海。
ThegoodnewsaboutAmerica’seconomyisthatjobsareplentifuldespiteslowergrowthandthehousingblues.Some180,000newj
A、Impolitebutcommon.B、Annoyingbutcommon.C、Annoyinganddislikable.D、Commonandacceptable.A选项均为表态度的形容词词组表明,本题可能考查对某件事情的看
最新回复
(
0
)