C语言笔试题带答案

{ 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

评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4