⑴ 初级程序员考试内容
主要考试科目是两科:上午是综合知识,75道单选题;下午是应用技术,5道案例题,主要考流程图1题,C语言3题,C++和JAVA二选一,以填空题和选择题为主。
⑵ 求2011年九月以及以前的计算机二级考试C语言试题及答案、以及考试内容分析和解题技巧。记住只要C的。
(1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关
B)算法的空间复杂度是指算法程序中指令(或语句)的条数
C)算法的有穷性是指算法必须能在执行有限个步骤之后终止
D)算法的时间复杂度是指执行算法程序所需要的时间
(1)C
知识点:算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)
评 析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
(2)以下数据结构属于非线性数据结构的是________。
A)队列 B)线性表 C)二叉树 D)栈
(2)C
知识点:栈和队列的定义;栈和队列的顺序存储结构及其基本运算
评 析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out)。队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In First Out)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
(3)在一棵二叉树上第8层的结点数最多是________。
A)8 B)16 C)128 D)256
(3)C
知识点:二叉树的定义及其存储结构
评 析:根据二叉树的性质:二叉树第i(I>1)层上至多有2i-1个结点。得到第8层的结点数最多是128。
(4)下面描述中,不符合结构化程序设计风格的是________。
A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B)自顶向下
C)注重提高程序的执行效率
D)限制使用goto语句
(4)C
知识点:结构化程序设计
评 析:结构化程序设计方法的四条原则是:1.自顶向下:2.逐步求精;3.模块化;4.限制使用goto语句。“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息 B)继承、多态 C)类、封装 D)过程调用
(5)D
知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性
评 析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。
A)可行性分析 B)需求分析 C)详细设计 D)程序编码
(6)B
知识点:结构化设计方法
评 析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流程图和数据字典。
(7)软件生命周期中所花费用最多的阶段是________。
A)详细设计 B)软件编码 C)软件测试 D)软件维护
(7)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评 析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
(8)数据库系统的核心是________。
A)数据模型 B)DBMS C)软件工具 D)数据库
(8)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
(9)下列叙述中正确的是________。
A)数据处理是将信息转化为数据的过程
B)数据库设计是指设计数据库管理系统
C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键
字,则称其为本关系的外关键字
D)关系中的每列称为元组,一个元组就是一个字段
(9)C
知识点:数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型
评 析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。对应存储文件中的字段,故D选项叙述错误。
(10)下列模式中,_______是用户模式。
A)内模式 B)外模式 C)概念模式 D)逻辑模式
(10)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。即对数据的物理结构和存取方式的描述。
36)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
(36)C
知识点:算法复杂度的概念和意义(时问复杂度与空间复杂度)
评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
(37)下列叙述中正确的是_______。
A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构
(37)A
知识点:线性结构与非线性结构的概念
评析:根据数据结构中各数据元素之间相关联关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(38)下面关于完全二叉树的叙述中,错误的是_______。
A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+l
(38)B
知识点:二叉树的定义及其存储结构
评析:这里考察完全二又树与满二叉树的定义及二叉树的性质。满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。因此选项A是正确的,而选项B是错误的。由定义可知,满二叉树肯定是完全二又树,而完全二又树一般不是满二叉树,因此选项c是正确的叙述。选项D即二又树性质(5),也是正确的。
(39)结构化程序设计主要强调的是_______。
A)程序的规模 B)程序的易读性
C)程序的执行效率 D)程序的可移植性
(39)B
知识点:结构化程序设计
评析:结构化程序设计主要强调的足结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试.以保证程序的正确性。
(40)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_______。
A)概要设计 B)详细设计 C)可行性分析 D)需求分析
(40)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:
① 可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。
②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。
⑥运行和维护。将已交付的软件投入运行,并存运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
(41)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_______。
A)控制流 B)加工 C)数据存储 D)源和潭
(41)A
知识点:结构化分析方法,数据流图,数据字典,软件需求规格说明书
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(42)软件需求分析一般应确定的是用户对软件的_______。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
(42)D
知识点:结构化设计方法
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
(43)下述关于数据库系统的叙述中正确的是_______。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
(43)A
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评析:由于数据的集成性使得数据可为多个应JH=j所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身义可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。
(44)关系表中的每一横行称为一个_______。
A)元组 B)字段 C)属性 D)码
(44)A
知识点:数据库的基本概念:数据库.数据库管理系统,数据库系统
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(45)数据库设计包括两个方面的设计内容,它们是_______。
A)概念设计和逻辑设计 B)模式设计和内模式设计
C)内模式设计和物理设计 D)结构特性设计和行为特性设计
(45)A
知识点:数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略
评析:数据库设计可分为概念设计与逻辑设计。数据库概念设计的目的是分析数据问内存语义关联,在此基础上建立一个数据的抽象模型。数据库逻辑设计的主要工作是将E-R图转换为指定的RDBMS中的关系模型。
(61)字符(char)型数据在微机内存中的存储形式是________。
A)反码 B)补码
C)EBCDIC码 D)ASCII码
(61)D
知识点:字符数据在内存中的存储形式
评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
71)算法的空间复杂度是指_______。
A)算法程序的长度 B)算法程序中的指令条数
C)算法程序所占的存储空间 D)算法执行过程中所需要的存储空间
(71)D
知识点:算法的复杂度
评析:一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(72)下列关于栈的叙述中正确的是_______。
A)在栈中只能插入数据 B)在栈中只能删除数据
C)栈是先进先出的线性表 D)栈是先进后出的线性表
(72)D
知识点:栈的输入输出操作
评析:栈是限定在一端进行插入与删除的线性表。
栈是按照“先进后出”的或“后进先出”的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。
(73)在深度为5的满二叉树中,叶子结点的个数为_______。
A)32 B)31 C)16 D)15
(73)C
知识点:二叉树的概念
评析:所谓满二叉树是指除最后一层外,每层上的所有结点都有两个子结点。也就是说,在满二又树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2k-1个结点,且深度为m的满二叉树有2m个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,本题中深度为5,故叶子结点数为25-1=24==16。
(74)对建立良好的程序设计风格,下面描述正确的是_______。
A)程序应简单、清晰、可读性好 B)符号名的命名要符合语法
C)充分考虑程序的执行效率 D)程序的注释可有可无
(74)A
知识点:程序设计风格
评析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
(75)下面对对象概念描述错误的是_______。
A)任何对象都必须有继承性 B)对象是属性和方法的封装体
C)对象问的通讯靠消息传递 D)操作是对象的动态性属性
(75)A
知识点:对象的概念
评析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
(76)下面不属于软件工程的3个要素的是_______。
A)工具 B)过程 C)方法 D)环境
(76)D
知识点:软件:[程的要素
评析:软件工程包括3个要素,即方法、工具和过程。
(77)程序流程图(PFD)中的箭头代表的是_______。
A)数据流 B)控制流 C)调用关系 D)组成关系
(77)B
知识点:软件设计工具
评析:程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
(78)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是_______。
A)数据库系统 B)文件系统 C)人工管理 D)数据项管理
(78)A
知识点:数据管理技术的发展
评析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统。
⑶ 75道程序员面试逻辑测试题(附答案)(1)
【1】 假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面,再灌满6向5里倒3升,剩余3升。
【2】 周雯的妈妈是豫林水泥厂的化验员。一天,周雯来到化验室做作业。做完后想出去玩。"等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验用的玻璃杯,前面3只盛满了水,后面3只是空的。你能只移动1只玻璃杯,就便盛满水的杯子和空杯子间隔起来吗?"爱动脑筋的周雯,是学校里有名的"小机灵",她只想了一会儿就做到了。请你想想看,"小机灵"是怎样做的?
设杯子编号为ABCDEF,ABC为满,DEF为空,把B中的水倒进E中即可。
【3】 三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。小李的命中率是30%,小黄比他好些,命中率是50%,最出色的枪手是小林,他从不失误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。然后这样循环,直到他们只剩下一个人。
那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?
小林在轮到自己且小黄没死的条件下必杀黄,再跟菜鸟李单挑。
所以黄在林没死的情况下必打林,否则自己必死。
小李经过计算比较(过程略),会决定自己先打小林。
于是经计算,小李有873/2600≈33.6%的生机;
小黄有109/260≈41.9%的生机;
小林有24.5%的生机。
哦,这样,那小李的第一枪会朝天开,以后当然是打敌人,谁活着打谁;
小黄一如既往先打林,小林还是先干掉黄,冤家路窄啊!
最后李,黄,林存活率约38:27:35;
菜鸟活下来抱得美人归的几率大。
李先放一空枪(如果合伙干中林,自己最吃亏)黄会选林打一枪(如不打林,自己肯定先玩完了)林会选黄打一枪(毕竟它命中率高)李黄对决0.3:0.280.4可能性李林对决0.3:0.60.6可能性成功率0.73
李和黄打林李黄对决0.3:0.40.7 0.4可能性李林对决0.3:0.7 0.6 0.70.7 0.6可能性成功率0.64
【4】 一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?按:心理问题,不是逻辑问题
是让甲分汤,分好后由乙和丙按任意顺序给自己挑汤,剩余一碗留给甲。这样乙和丙两人的总和肯定是他们两人可拿到的最大。然后将他们两人的汤混合之后再按两人的方法再次分汤。
【5】 在一张长方形的桌面上放了n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一些彼此重叠;当再多放一个硬币而它的圆心在桌面内时,新放的硬币便必定与原先某些硬币重叠。请证明整个桌面可以用4n个硬币完全覆盖。
要想让新放的硬币不与原先的硬币重叠,两个硬币的圆心距必须大于直径。也就是说,对于桌面上任意一点,到最近的圆心的距离都小于2,所以,整个桌面可以用n个半径为2的硬币覆盖。
把桌面和硬币的尺度都缩小一倍,那么,长、宽各是原桌面一半的小桌面,就可以用n个半径为1的硬币覆盖。那么,把原来的桌子分割成相等的4块小桌子,那么每块小桌子都可以用n个半径为1的硬币覆盖,因此,整个桌面就可以用4n个半径为1的硬币覆盖。
【6】 一个球、一把长度大约是球的直径2/3长度的直尺.你怎样测出球的半径?方法很多,看看谁的比较巧妙
把球放在平面上,把直尺的一边卡在平面上,一边卡在球上,球与尺子的接触点到平面的距离就是球的半径.因为直尺长度约为直径的2/3>半径,所以能测量.
【7】 五个大小相同的一元人民币硬币。要求两两相接触,应该怎么摆?
底下放一个1,然后2 3放在1上面,另外的4 5竖起来放在1的上面。
【8】 猜牌问题S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?于是,S先生听到如下的对话:P先生:我不知道这张牌。Q先生:我知道你不知道这张牌。P先生:现在我知道这张牌了。Q先生:我也知道了。听罢以上的对话,S先生想了一想之后,就正确地推出这张牌是什么牌。请问:这张牌是什么牌? 方块5
【9】 一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的)教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。请问您能猜出另外两个人的数吗?
经过第一轮,说明任何两个数都是不同的。第二轮,前两个人没有猜出,说明任何一个数都不是其它数的两倍。现在有了以下几个条件:1.每个数大于02.两两不等3.任意一个数不是其他数的两倍。每个数字可能是另两个之和或之差,第三个人能猜出144,必然根据前面三个条件排除了其中的一种可能。假设:是两个数之差,即x-y=144。这时1(x,y>0)和2(x!=y)都满足,所以要否定x+y必然要使3不满足,即x+y=2y,解得x=y,不成立(不然第一轮就可猜出),所以不是两数之差。因此是两数之和,即x+y=144。同理,这时1,2都满足,必然要使3不满足,即x-y=2y,两方程联立,可得x=108,y=36。
这两轮猜的顺序其实分别为这样:第一轮(一号,二号),第二轮(三号,一号,二号)。这样分大家在每轮结束时获得的信息是相同的(即前面的三个条件)。
那么就假设我们是C,来看看C是怎么做出来的:C看到的是A的36和B的108,因为条件,两个数的和是第三个,那么自己要么是72要么是144(猜到这个是因为72的话,108就是36和72的和,144的话就是108和36的和。这样子这句话看不懂的举手):
假设自己(C)是72的话,那么B在第二回合的时候就可以看出来,下面是如果C是72,B的思路:这种情况下,B看到的就是A的36和C的72,那么他就可以猜自己,是36或者是108(猜到这个是因为36的话,36加36等于72,108的话就是36和108的和):
如果假设自己(B)头上是36,那么,C在第一回合的时候就可以看出来,下面是如果B是36,C的思路:这种情况下,C看到的就是A的36和B的36,那么他就可以猜自己,是72或者是0(这个不再解释了):
如果假设自己(C)头上是0,那么,A在第一回合的时候就可以看出来,下面是如果C是0,A的思路:这种情况下,A看到的就是B的36和C的0,那么他就可以猜自己,是36或者是36(这个不再解释了),那他可以一口报出自己头上的36。(然后是逆推逆推逆推),现在A在第一回合没报出自己的36,C(在B的想象中)就可以知道自己头上不是0,如果其他和B的想法一样(指B头上是36),那么C在第一回合就可以报出自己的72。现在C在第一回合没报出自己的36,B(在C的想象中)就可以知道自己头上不是36,如果其他和C的想法一样(指C头上是72),那么B在第二回合就可以报出自己的108。现在B在第二回合没报出自己的108,C就可以知道自己头上不是72,那么C头上的唯一可能就是144了。
史上最雷人的应聘者
【10】 某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝15%绿85%,事发时有一个人在现场看见了,他指证是蓝车,但是根据专家在现场分析,当时那种条件能看正确的可能性是80%那么,肇事的车是蓝车的概率到底是多少?
15% 80%/(85%×20%+15% 80%)
【11】 有一人有240公斤水,他想运往干旱地区赚钱。他每次最多携带60公斤,并且每前进一公里须耗水1公斤(均匀耗水)。假设水的价格在出发地为0,以后,与运输路程成正比,(即在10公里处为10元/公斤,在20公里处为20元/公斤......),又假设他必须安全返回,请问,他最多可赚多少钱?
f(x)=(60-2x)*x,当x=15时,有最大值450。
450×4
【12】 现在共有100匹马跟100块石头,马分3种,大型马;中型马跟小型马。其中一匹大马一次可以驮3块石头,中型马可以驮2块,而小型马2头可以驮一块石头。问需要多少匹大马,中型马跟小型马?(问题的关键是刚好必须是用完100匹马) 6种结果
【13】 1=5,2=15,3=215,4=2145那么5=?
因为1=5,所以5=1.
【14】 有2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。问:有多少种排队方法使得每当一个拥有1美元买票时,电影院都有50美分找钱
注:1美元=100美分拥有1美元的人,拥有的是纸币,没法破成2个50美分
本题可用递归算法,但时间复杂度为2的n次方,也可以用动态规划法,时间复杂度为n的平方,实现起来相对要简单得多,但最方便的就是直接运用公式:排队的种数=(2n)!/[n!(n+1)!]。
如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/ (n-1)!(n+1)! 种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至于为什么不合格数是(2n)!/[(n-1)!(n+1)!],说起来太复杂,这里就不讲了。
【15】 一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?
2元
【16】 有一种体育竞赛共含M个项目,有运动员A,B,C参加,在每一项目中,第一,第二,第三名分别的X,Y,Z分,其中X,Y,Z为正整数且X>Y>Z。最后A得22分,B与C均得9分,B在百米赛中取得第一。求M的值,并问在跳高中谁得第二名。
因为ABC三人得分共40分,三名得分都为正整数且不等,所以前三名得分最少为6分,40=5 8=4 10=2 20=1 20,不难得出项目数只能是5.即M=5.
A得分为22分,共5项,所以每项第一名得分只能是5,故A应得4个一名一个二名.22=5*4+2,第二名得1分,又B百米得第一,所以A只能得这个第二.
B的5项共9分,其中百米第一5分,其它4项全是1分,9=5+1=1+1+1.即B除百米第一外全是第三,跳高第二必定是C所得.
【17】 前提:
1 有五栋五种颜色的房子
2 每一位房子的主人国籍都不同
3 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物
4 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料
提示:1 英国人住在红房子里
2 瑞典人养了一条狗
3 丹麦人喝茶
4 绿房子在白房子左边
5 绿房子主人喝咖啡
6 抽PALLMALL烟的人养了一只鸟
7 黄房子主人抽DUNHILL烟
8 住在中间那间房子的人喝牛奶
9 挪威人住第一间房子
10抽混合烟的人住在养猫人的旁边
11养马人住在抽DUNHILL烟的人旁边
12抽BLUEMASTER烟的人喝啤酒
13德国人抽PRINCE烟
14挪威人住在蓝房子旁边
15抽混合烟的人的邻居喝矿泉水
问题是:谁养鱼???
第一间是黄房子,挪威人住,喝矿泉水,抽DUNHILL香烟,养猫;! f/ [% a: 6 L! J. Q9 x第二间是蓝房子,丹麦人住,喝茶,抽混合烟,养马;+ o8 _0 S) L8 i' E' u第三间是红房子,英国人住,喝牛奶,抽PALL MALL烟,养鸟;/ N9 o/ n2 M# U" c第四间是绿房子,德国人住,喝咖啡,抽PRINCE烟,养猫、马、鸟、狗以外的宠物;7 P5 l) G, G, |; C, {7 V第五间是白房子,瑞典人住,喝啤酒,抽BLUE MASTER烟,养狗。
【18】 5个人来自不同地方,住不同房子,养不同动物,吸不同牌子香烟,喝不同饮料,喜欢不同食物。根据以下线索确定谁是养猫的人。
10.养鱼的人住在最右边的房子里。
11.吸万宝路香烟的人住在吸希尔顿香烟的人和吸“555”香烟的人的中间(紧邻)
12.红房子的人爱喝茶。
13.爱喝葡萄酒的人住在爱吃豆腐的人的右边隔壁。
14.吸红塔山香烟的人既不住在吸健牌香烟的人的隔壁,也不与来自上海的人相邻。
15.来自上海的人住在左数第二间房子里。
16.爱喝矿泉水的人住在最中间的房子里。
17.爱吃面条的人也爱喝葡萄酒。
18.吸“555”香烟的人比吸希尔顿香烟的人住的靠右
第一间是兰房子,住北京人,养马,抽健牌香烟,喝茅台,吃豆腐;2 G7 x% z0 v; C第二间是绿房子,住上海人,养狗,抽希尔顿,喝葡萄酒,吃面条;% C2 k4 o8 t" p6 L* x第三间是黄房子,住香港人,养蛇,抽万宝路,喝矿泉水,吃牛肉;& N" S% x# o3 a; g第四间是红房子,住天津人,抽555,喝茶,吃比萨;7 5 s. J# d, Q/ N% N' O# ]第五间是白房子,住成都人,养鱼,抽红塔山,喝啤酒,吃鸡。
【19】 斗地主附残局
地主手中牌2、K、Q、J、10、9、8、8、6、6、5、5、3、3、3、3、7、7、7、7
长工甲手中牌大王、小王、2、A、K、Q、J、10、Q、J、10、9、8、5、5、4、4
长工乙手中牌2、2、A、A、A、K、K、Q、J、10、9、9、8、6、6、4、4
三家都是明手,互知底牌。要求是:在三家都不打错牌的情况下,地主必须要么输要么赢。问:哪方会赢?
无解地主怎么出都会输
【20】 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
先拿下第一楼的钻石,然后在每一楼把手中的钻石与那一楼的钻石相比较,如果那一楼的钻石比手中的钻石大的话那就把手中的钻石换成那一层的钻石。
⑷ 2013年计算机软考程序员考试部分真题
试题 1
A. 最有可能成为国际上操作系统的标准的操作系统.
B. 在目前,用于保证软件质量的主要手段.
C. 进入80年代后,已迅速成为常用的程序设计语言之一.
D. 在软件开发中,有利于发挥集体智慧的一种做法.
E. 在开发软件时,可用来提高程序员的工作效率.
供选择的答案:
A. (1)MS-DOS (2)VMS (3)VM (4)UNIX
B. (1)正确性证明 (2)测试 (3)自动程序设计 (4)符号执行
C. (1)Smalltalk-80 (2)Ada (3)C (4)PROLOG
D. (1)设计评审 (2)模块化 (3)主程序员组 (4)进度控制
E. (1)程序开发环境 (2)操作系统的作业管理功能
(3)编译程序的优化功能 (4)并行运算的大型计算机
试题 2
最初的软件开发方式是(A), 人们用笔和纸编写程序. 从60年代后期开始, *
软件开发方式逐步发展成为使用终端设备编写程序的(B), 从80年代初开始, 发*
达坦颤轿国家的软件开发方式正在向(C)转变.
在结构化程序设计思想提出以前, 在程序设计中曾经主要强调程序的(D). *
现在, 与程序的(D)相比, 人们更重视程序的(E).
供选择的答案:
A,B,C: 1.实时方式 2.分时方式 3.批方式 4.并行方式 5.工作站方式 6.阵列方式
D,E: 1.安全性 2.专用性 3.一致性 4.合理性 5.可理解性 6.效率
试题 3
从下列叙述中选出5条正确的叙述.
(1) 每种程序设计语言都有它特定的语法.
(2) 结构化的程序设计语言中没有 GOTO 语句.
(3) 定义程序设计语言时用的字符集各种语言不完全相同.
(4) 在汇编语言中, 用调用指令, 返回指令和转移指令改变程序中指令的执行顺序.
(5) 由于 FORTRAN 语言的结构是块结构, 所以它特别适合于模块化程序设计.
(6) PASCAL 语言允让肆许用户定义结构化的数据结构.
(7) 一般而言, 语言级别越高, 用它编出的程序越短.
(8) 结构化程序设计可以大大提高程序的执行效率.
(9) 编译程序是一种常用的应用软件.
(10) 编译程序在进行优化时有时需要用到源程序的注释.
试题 4
(1) 按逻辑结构分, 文件主要有两类: (A) 和 (B) . UNIX 中的文件系统采用(B).
(2) 文件系统的主要目的是 (C).
(3) 文件系统中用 (D) 管理文件.
(4) 为了允许不同用户的文件具有相同的文件名, 通常在文件系统中采用 (E).
A,B : (1) 网状文件 (2) 只读文件 (3) 读写文件
(4) 记录式文件 (5) 索引文件 (6) 流式文件
C : (1) 实现对文件的按名存取 (2) 实现虚拟存贮器
(3) 提高外部设备的输入洞让输出速度 (4) 用于存贮系统文档
D : (1) 堆栈结构 (2) 指针 (3) 目录 (4) 页表
E : (1) 重名翻译 (2) 多级目录 (3) 约定 (4) 路径
试题 5
排序的方法有许多种, (A) 法从未排序序列中依次取出元素, 与已排序序列
中(初始时为空)的元素作比较, 将其放入已排序序列的正确位置上; (B) 从未排娦蛐蛄兄刑粞≡*, 并将其依次放入已排序序列的一端; 交换排序法是对序列中
的元素进行一系列比较, 当被比较的两元素逆序时, 进行交换.(C) 和 (D) 是基
于这类方法的两种排序方法, 而(D) 是比 (C) 效率更高的方法. 利用某种算法,
根据元素的关键值计算出排序位置的方法是 (E).
(1) 选择排序 (2) 快速排序 (3) 插入排序 (4) 冒泡排序 (5) 合并排序
(6) 二分排序 (7) 杂凑排序 (8) 基数排序
试题6
下列流程图用于从数组K中找出一切满足:
K(I)+K(J)=M
的元素对(K(I),K(J))(1<=I<=J<=N)。假定数组K中的N个不同的整数已按由小到大
的顺序排列,M是给定的常数。
开始
↓
1→I
↓
N→J
┌───────→↓ (A)
│ I:J──────────────┐
│ (B)│ ↓
│ ↓ > 结束
│ ┌───K(I)+K(J):M ────┐
│ ↓ ↓= ↓
│ (C) 输出I,J,K(I),K(J) (D)
│ │ ↓ │
│ │ (C) │
│ │ ↓ │
│ │ (D) │
└──┴─────┴───────┘
此流程图中,比较“K(I)+K(J):M"最少执行次数约为 (E) 。
供选择的答案
A、B : ① > ② ≥ ③ < ④ ≤ ⑤ = ⑥ ≠
C、D : ① I+1→I ② I-1→I ③ J+1→J ④ J-1→J ⑤ I→J ⑥ J→I
E : ① N/4 ② N/2 ③ N ④ 2N
试题 7
将十进制数 0.7109375 转换成二进制数是(A).用ASCII码(7 位)表示字符5 和7 是(B).
浮点数的阶码可用补码或增码(移码)表示,数的表示范围(C).在浮点表示方法中(D)是隐含的.
用 8 位补码表示整数 -126 的机器码算术右移一位后的结果是 (E).
A: (1) 0.1011001 (2) 0.0100111 (3) 0.1011011 (4) 0.1010011
B: (1) 1100101 和 1100111 (2) 1010011 和 0110111
(3) 1000101 和 1000111 (4) 0110101 和 0110111
C: (1) 二者相同 (2) 前者大于后者 (3) 前者小于后者
D: (1) 位数 (2) 基数 (3) 阶码 (4) 尾数
E: (1) 10000001 (2) 01000001 (3) 11000001 (4) 11000010
试题 8
一排队线路, 输入为 A,B,C, 其输出分别为 Fa, Fb, Fc, 在同一时间内只*
能有一个信号通过. 如果同时有两个以上的输入信号出现时, 则按 A, B, C的*
顺序输出. 例如, A=B=C=1, 则 Fa=1, Fb=Fc=0. 那么, Fb 和 Fc 的表达式:
Fb= (A) , Fc= (B).
设X=X1X2 和 Y=Y1Y2 是二个二进制的正整数. 则
判断 "X>Y" 的逻辑表达式 F1= (C); 判断 "X>Y" 的逻辑表达式 F2= (D);娕卸* "X<=Y" 的逻辑表达式 F3= (E)
━━━
━ ━
A,B : (1) A+B+C (2) A+B+C (3) A+B
━━━ ━━━━━ ━━━━━
━ ━ ━ ━
(4) A+B C (5) A+B+C (6) A+A B
━ ━ ━ ━ ━ ━
C,D,E: (1) X1X2+Y1Y2+X1Y2+X2Y1 (2) X1Y1+X2Y1Y2+X1X2Y2
━ ━ ━ ━ ━ ━ ━
(3) X1Y1+X1X1Y2+X1Y1Y2 (4) X1Y1+X1X1Y2+X2Y2
━ ━ ━ ━ ━ ━
(5) Y1Y1+X1Y1X2+X1X2+X1Y1+X1Y1Y2
━ ━ ━ ━ ━ ━ ━ ━
(6) X1Y1+X2Y1Y1+X1X2Y2+X1Y1+X1X2Y2+X2Y1Y2
试题 9
从下列叙述中选出5条正确的叙述.
①磁盘存储器的主要技术指标有存储容量,查找时间,传输速率和记录密度等.
②磁盘转速提高一倍,平均查找时间缩小一半.
③磁盘存储器的数据传输速率决定于磁头定位时间,旋转等待时间和单位时间内
读出或写入的字节数.
④在单总线结构的计算机系统中,I/O设备与主机之间传送数据的方式一般有
程序查询,程序中断和 DMA 三种方式.
⑤对个人计算机进行二次开发后, 可以作为多用户主机的仿真终端. 这样个人计
算机既可以作为独立的计算机使用, 又可以在必要时共享主机的资源.
⑥DMA 方式的地址修改, 传送字节计数等完全由硬件电路来实现.
⑦DMA 用于传送成组数据, 因此不能每传送一个字节就由 DMA 控制器提出一次
总线请求.
⑧通常每个外部设备都用一个接口电路于主机联接. 因此, 主机只能用一个的
地址来访问一个外部设备.
⑨在计算机中处理汉字和处理西文的方法是类似的. 因此, 在西文计算机上扩充
汉字处理功能后, 原有的西文终端都可用作汉字终端.
⑩CRC 校验码的生成或校验可用由移位寄存器, 半加器和简单门电路构成的电路
来实现.
试题 10:
* 在计算机的指令系统中, 通常同时采用多种确定操作数的方式. 当操作数直
接由指令给出时, 操作数称为 (A). 当操作数的地址由某个指定的变址器的内容于
位移量相加得到时, 称为 (B). 如果操作数的地址是主存中于该指令地址无关的存
贮单元的内容, 则称为 (C). 是否进行 (C), 用指令中的某个特征位指定. 把 (D)
看做变址器进行 (B), 称为 (E).
A,B,C,E: (1) 间接寻址 (2) 相关寻址 (3) 相对寻址 (4) 单纯寻址
(5) 变址寻址 (6) 直接数 (7) 低位数 (8) 堆栈寻址
D: (1) 地址寄存器 (2) 指令计数器 (3) 数据寄存器 (4) 缓冲寄存器
试题 11:
Since the time of John von Neumann, the basic conceptual model used to think
about computers and programs has (A) unchanged, in (B) of many advances in
both hardware and software technology. In the (C) that von Neumann proposed, the
basic instruction cycle is for the processor to fetch the instruction pointed at
by the program counter, (D) the program counter, and then execute the instruction.
Because instructions are executed strictly sequentially, there is little inherent
parallelism, and (E) opportunity to employ large numbers of processors to gain 妔peed.
(1) small (2) big (3) add (4) little (5) model
(6) remained (7) style (8) increase (9) stead (10) spite
(11) already (12) period (13) formula (14) decrease (15) not
试题 12
In a computer program, an entity that possesses a value and is known to program
by a name: (A).
An ordered set which contains a fixed number of elements: (B).
To submit a program to a computer for execution: (C).
A secret code used to deny access to unauthorized users: (D).
A large collection of data in support of a set of data processing tasks: (E).
(1) data base (2) password (3) keyword (4) array
(5) procere (6) run (7) data entry (8) variable
(9) vector (10) access (11) user name (12)
试题 13:
(1)When the electricity is switched off, the ROM is cleared of its contents, the
RAM is not.
(2) IF-THEN-ELSE structures in a programming language provide selection.
(3) A program in its original form is known as an object program, and the tran-
slated version is known as a source program.
(4) The CPU is the most important piece of hardware in the entire system and yet
one of the sinplest.
(5) The lowercase letters come after the uppercase letters in the ASCII table.
(6) Queue insertions and deletions are made at the same end of the queue.
(7) Improvements in software quality are necessary to rece program maintenance
costs.
(8) A recursive procere is one that activates itself ring its activations.
(9) A floppy diskette machine is an example of a direct access storage device.
(10) Comments specify actions for a computer to perform when a program is run.
下午试题
试题一 [说明]
本流程图是对某种简单密码文(密文)解密.密文由字符序列组成,解密后产
生的字母序列称为原文.解密算法如下:
把密文s1s2...sn按顺时针方向看成一个环,如下所示:
s1
sn
s3
sn-1
si
解密时按读入的整数值KEY(KEY>1),从S1起顺时针计数,当计数到第KEY个字
符时,取出该字符作为原文的第一个字符,并把它从环中删去.接着从下一个字符
起继续计数,取出第KEY个字符作为原文的第二个字符,并从环中删去.依次类推,
直至N个字符全部取完.由上述算法依次取出的字符序列即为原文.
例如,当KEY=3时,密文NUITP的原文为INPUT.
开始解密时,密文存放在字符数组S中, 长度为N(N>1),所得到的原文也存
放在数组S中.为了从S(1)起依次存放原文字符,在必要时部分未解密的字符作适
当的移动.
试题三(15分)
[程序说明] 本题给出的是计算两个多项式之积的子程序.
设两个多项式分别为
n n-1
F(X)=FnX +Fn-1X +...+F1X+F0
m m-1
G(X)=GmX +Gm-1X +...+G1X+G0
则它们的积多项式为
k k-1
P(x)=F(X)G(X)=PkX +Pk-1X +...P1X+P0
其中, k=n+m; Pi=∑Fi-j*Gj (i=0,...,k);
j
记号∑Fi-j*Gj;表示对给定的i(0≤i≤n+m),和所有满足
0≤i-j≤n,≤j≤m
的j,对Fi-j*Gj求和.
程序用数组存贮多项式的序数,即数组的第i(≥0)个元素存贮多项式i次幂
的系数.例如:
5 3 2
F(X)=5.7X -10.8X +0.49X +2.7用数组表示为
0 1 2 3 4 5
2.7 0 0.49 -10.8 0 5.7
设程序已定义了如下的数据类型:
const maxp=100; {允许的多项式次幂}
type poly=record
power: 0..maxp; {多项式的次幂}
coef: array[0..maxp] of real
{coef [i] 存贮多项式的i次幂项的系数}
end;
[程序]
procere prod(f,g: poly; var p:poly);* var i,j,low,high:integer;
temp: real;
begin
for i:=0 to f.power + g.power do
begin
if __________________
then low:= ____________________
else low:=0;
if __________________
then high:= ____________________
else high:=i;
temp:=0.0;
for j:=low to high do
temp:= _____________________
p.coef[i]:=temp
end;
_______________________
end;
试题七
[程序说明] 本程序用于判别输入的字符串是否为如下形式的字符串:
W&M$
其中子字符串M是子字符串W的字符反向排列.在此假定W不含有字符&和字符$,
字符&用作W与M的分隔符,字符$用字符串的输入结束符.
例如,对输入的以下字符串:
ab&ba$, 11&12$
ab&dd$, &$
程序将分别输出
OK.(是), NO.(不是),
NO.(不是), OK.(是).
[程序]
program accept (input,output);
const
midch='&';
endch='$';
var
an:bollean; ch :char;
procere match (var answer: boolean);
var
ch1,ch2:char;
f:boolean;
begin
read(ch1);
if ch1>endch then
if ________________ then
begin
match (f);
if f then
begin
read (ch2); answer:=____________________
end
else answer:=false
end
else ___________________
else ___________________
end;
begin
writeln('Enter string:');
match (an);
if an
then begin
_______________________
if __________________________ then writeln ('OK.')
else writeln ('NO.')
end
else writeln ('NO.')
end.
试题十一
[程序说明] 本题给出的是将数组a的元素a1,a2,...,an从大到小排列的子程序.
子程序采用改进的选择方法,该方法基于以下思想:
在选择第一大元过程中,al与aj(j=n,n-1,...2)逐个比较,若发现aj1〉
al,则aj1与a1交换,交换后新的aj1有性质aj1≥at(j1<t≤n).若再有aj2 p=""> </t≤n).若再有aj2>
〉a1(j2<j1),aj2与a1交换,则交换后的aj2也有性质aj2≥at(j2<t≤n). p=""> </j1),aj2与a1交换,则交换后的aj2也有性质aj2≥at(j2<t≤n).>
如在挑选第一大元过程中,与a1交换的元素有k(k≥0)个,依次为aj1,aj2,...
ajk则它们都满足这一性质.它们的下标满足n≥j1>j2>...>jk>1.有了这些下标,
在确定第二大元时,可只考虑a2与aj(j=jk,jk-1,...,3)逐个比较.倘若jk=2,
则可不经比较就知道a2就是第二大元.在选择第二大元过程中,将与a2交换过
的元素下标也记录下来,可供选择其他大元使用.但在选则第二大元时,应保证与
a2交换的那些位置上的新值也都满足上的述性质.依次类推,顺序选择第一,第
二,...第n01大元,实现对a的排序.
设程序包含有常量和类型定义:
const maxn=1000;
type vector=array [1..maxn] of integer;
index=1..maxn;
[程序]
procere sort (var a:vector;n:index);
var
p:vector;
i,j,k,m,t:integer;
begin
k:=0;i:=1;m:=n;
while i<n p="" do
begin
for j:=m downto i+1 do
if a[i]<a[j] p="" then
t:=a[i];a[i]:=a[j];a[j]:=t;
k:=k+1;______________
end;
repeat
______________;
if _____________ then _____________
else
begin m:=p[k];k:=k-1 end
until (i<m) (i="n);
if _____________ then
begin
t:=a[i];__________;___________
end
end
end
⑸ 程序员面试题精选100题
准备面试不妨看看《编程之美——微软技术面试心得》。
里面有60道左右的算法、数据结构和程序设计的题目,每个题目均给出了不同的解法和分析。特别是要准备去参加大公司面试,值得参考。