{ int j,k,length=O;
while(s[1ength])
【16】 ;
–i:
j=i;
}
if( 【17】 )
{ k=i+n;
if(i+n<=length)
while(k s[j++]=s[k++]; s[j]=‘\0’; } 答案:【16】length++ 【17】i 评析:第一个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到第i+n或最后一个间的所有字符。删除前,应判断i<=length。由于已经进行了一i运算,故实际应填入i (17)下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。 int word(char*s) { int num=O,flag=O; while(*s) { if( 【18】 ==”)flag=O; else if( 【19】 ){flag=1;num++} } return 【20】 ; } 答案:【18】*s++ 【19】flag==O或*(s-1)==” 【20】num 评析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必需判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=O,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应flag==O或*(s-1)==”;最后一个空格需填写的是返回的单词的个数,即num。 一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下面叙述正确的是________。 A)算法的执行效率与数据的存储结构无关 B)算法的空间复杂度是指算法程序中指令(或语句)的条数 C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 D)算法的时间复杂度是指执行算法程序所需要的时间 答案:C 评析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。 (2)以下数据结构属于非线性数据结构的________。 A)队列 B)线性表 C)二叉树 D)栈 答案:C 评析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈又称后进先出表(Last In First Out);队列又称先进先出表(First:In First Out)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。 (3)在一棵二叉树上第8层的结点数最多是________。 A)8 B)16 C)128 D)256 答案:C 评析:根据二叉树的性质:二叉树第i(i≥1)层上至多有2i-1个结点。得到第8层的结点数最多是128。 (4)下面描述中,不符合结构化程序设计风格的是________。 A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B)自顶向下 C)注重提高程序的执行效率 D)限制使用goto语句 答案:C 评析:结构化程序设计方法的四条原则是:1.自项向下;2.逐步求精;3.模块化;4.限制使用goto语句。 (5)下面概念中,不属于面向对象方法的是________。 A)对象、消息 B)继承、多态 C)类、封装 D)过程调用 答案:D 评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。