国家二级C语言机试(选择题)模拟试卷4(共348题)_第1页
国家二级C语言机试(选择题)模拟试卷4(共348题)_第2页
国家二级C语言机试(选择题)模拟试卷4(共348题)_第3页
国家二级C语言机试(选择题)模拟试卷4(共348题)_第4页
国家二级C语言机试(选择题)模拟试卷4(共348题)_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言机试(选择题)模拟试卷4(共9套)(共348题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。2、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择A。3、下面对对象概念描述正确的是()。A、对象间的通信靠消息传递B、对象是名字和方法的封装体C、任何对象必须有继承性D、对象的多态性是指一个对象有多个操作标准答案:A知识点解析:消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。所以答案选择A。4、结构化程序设计中,下面对goto语句使用描述正确的是()。A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、以上说法都不对标准答案:C知识点解析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使用,所以选择C。5、结构化程序包括的基本控制结构是()。A、主程序与子程序B、选择结构、循环结构与层次结构C、顺序结构、选择结构与循环结构D、以上说法都不对标准答案:C知识点解析:结构化程序包括三种基本控制结构,分别为顺序结构、选择结构和重复结构(也称为循环结构),所以答案选C。6、下面属于整数类的实例是()。A、0x518B、0.518C、-518D、518E-2标准答案:A知识点解析:选项B)和选项D)均为小数,选项C)为字符串常量,选项A表示的是十六进制整数,所以选A)。7、下面属于字符类的实例是()。A、’518’B、5C、’nm’D、’’标准答案:D知识点解析:字符类的数据只能包含一个字符,因此选项A)和选项C)不属于字符类的实例。选项B)使用的中文的双引号,也不属于字符类的实例。选项D)是一个转义字符常量,为正确答案。8、下面不属于对象基本特点的是()。A、标识唯一性B、可复用性C、多态性D、封装性标准答案:B知识点解析:对象的基本特点主要有:标识唯一性、分类性、多态性、封装性和模块独立性好。所以本题答案选B。9、有三个关系R、S和R如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。10、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。11、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。12、在软件开发中,需求分析阶段产生的主要文档是()。A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。13、数据流图中带有箭头的线段表示的是()。A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。14、在软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B)。15、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、编译程序B、操作系统C、教务管理系统D、汇编程序标准答案:C知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。16、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行"错误定位"是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。17、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A)错误,B)正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C)与D)错误。18、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B)、C)、D)都是系统软件,只有A)是应用软件。19、下面描述中错误的是()。A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A)错误。20、软件设计中划分模块的一个准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。21、软件详细设计生产的图如下该图是()。A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:N-S图提出了用方框图来代替传统的程序流程图,所以A)不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B)不对。E-R图是数据库中的用于表示E-R模型的图示工具,所以D)不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。22、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。23、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。24、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。25、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A。26、程序调试的任务是()。A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。27、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。28、下面描述中,不属于软件危机表现的是()。A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。29、下面不属于需求分析阶段任务的是()。A、确定软件系统的功能需求B、确定软件系统的性能需求C、需求规格说明书评审D、制定软件集成测试计划标准答案:D知识点解析:需求分析阶段的工作有:需求获取;需求分析;编写需求规格说明书;需求评审,所以选择D。30、在黑盒测试方法中,设计测试用例的主要根据是()。A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B。31、在软件设计中不使用的工具是()。A、系统结构图B、PAD图C、数据流图(DFD图)D、程序流程图标准答案:C知识点解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。32、数据字典(DD)所定义的对象都包含于()。A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:A知识点解析:数据字典是用来定义数据流图中各个成分的具体含义的,所以数据字典所定义的对象都包含于数据流图中。33、软件需求规格说明书的作用不包括()。A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件需求规格说明书的作用为:便于用户、开发人员进行理解和交流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。所以答案选择D。34、下面属于黑盒测试方法的是()。A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认测试,所以答案选C。35、下面不属于软件设计阶段任务的是()。A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:指定软件确认测试计划属于软件测试阶段的任务,不属于软件设计阶段的任务,所以答案选C。36、下面属于白盒测试方法的是()。A、等价类划分法B、逻辑覆盖C、边界值分析法D、错误推测法标准答案:B知识点解析:白盒测试的主要方法有逻辑覆盖、基本路径测试等,所以答案选B。37、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高耦合高内聚C、高内聚低耦合D、低耦合高内聚标准答案:C知识点解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。38、构成计算机软件的是()。A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:计算机软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。答案选D。39、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是()。A、测试B、设计C、可行性研究D、实现标准答案:C知识点解析:在软件生命周期中,可行性研究属于定义阶段的任务,其余选项均属于开发阶段,所以答案选C。40、下面不能作为结构化方法软件需求分析工具的是()。A、系统结构图B、数据字典(DD)C、数据流程图(DFD图)D、判定表标准答案:A知识点解析:结构化分析就是使用数据流图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为机构化规格说明的目标文档,所以答案选A。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、以下程序段中的变量已定义为int类型sum=pad=5;pAd=sum++,pAd++,++pAd;printf("%d\n",pad);程序段的输出结果是()。A、5B、4C、6D、7标准答案:A知识点解析:C语言对大小写敏感,所以pad和pAd是两个不同的变量,答案选A。2、sizeof(double)是()。A、一个整型表达式B、一个函数调用C、一个双精度表达式D、不合法的表达形式标准答案:A知识点解析:sizeof为求字节数的运算符,操作的对象可以是类型说明符、数组名或者表达式,求得的结果为一个整数,所以答案选A。3、有以下程序#include#includemain(){inta=1,b=4,c=2;doublex=10.5,y=4.0,z;z=(a+b)/c+sqrt(y)*1.2/c+x;printf("%f\n",z);}程序运行后的输出结果是()。A、13.700000B、14.000000C、15.400000D、14.900000标准答案:A知识点解析:考查运算符与表达式。表达式(a+b)/c+sqrt(y)*1.2/c+x;先计算(a+b)/c,a、b、c均为整数,所以计算的结果也为整数即2;然后计算sqrt(y)*1.2/c,即2.0*1.2/c,结果为1.2;最后计算2+1.2+x的值,为13.7,输出结果为选项A)。4、有以下程序#includemain(){intx=010,y=10;printf("%d,%d\n",++x,y--);}程序运行后的输出结果是()。A、9,10B、11,10C、010,9D、10,9标准答案:A知识点解析:八进制整常数以数字"0"作为前缀,格式控制符为"%d"表示按照十进制输出,而且自加自减运算中,++x和--x都是先计算后使用该变量,而x++和x--是先使用该变量再计算,所以在输出的时候输出的是x自加1之后的十进制数字,即9,还有y自减之前的十进制数字,即10,所以答案选A。5、以下选项中叙述正确的是()。A、C语言的标识符可分为关键字、预定义标识符和用户标识符三类B、C语言的标识符可分为语句、变量和关键字三类C、C语言的标识符可分为函数名、变量和预定义标识符三类D、C语言的标识符可分为运算符、用户标识符和关键字三类标准答案:A知识点解析:C语言的标识符可分为关键字、预定义标识符和用户标识符三类。答案选A。6、以下选项中,合法的C语言常量是()。A、1.234B、’C++’C、"\2.0D、2Kb标准答案:A知识点解析:字符常量只包含一个字符,选项B)错误;C语言中有"\""表示双引号符,但是没有""\"的形式,选项C)错误;2Kb只是表示字节数,并不是C语言常量,选项D)错误;选项A)为合法的实型常量,所以答案选A)。7、以下选项中,合法的C语言实数是()。A、.2e0B、3.1e0.4C、E13D、7.12E标准答案:A知识点解析:科学计数法中,e/E前后必须有数字并且后面的数字必须为整数,答案选A。8、设a,b,c是整型变量且均已赋值,则以下选项中错误的赋值语句是()。A、a=(b=3)=1;B、a=(b=2)+c;C、a=b=c+10;D、a=1+(b=c=2);标准答案:A知识点解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选A。9、有如下程序#includemain(){intx=072;printf("%d\n",x+1);}程序运行后的输出结果是()。A、59B、73C、115D、72标准答案:A知识点解析:八进制整常数以数字"0"作为前缀,printf中的格式控制符为"%d"表示按照十进制输出,所以输出的是x加1之后的十进制数字,即59,答案选A。10、以下选项中,合法的数值型常量是()。A、3.1415B、AC、092D、0xDH标准答案:A知识点解析:数值型常量包含整型常量、实型常量和字符常量,字符常量用的是单引号而不是双引号,选项B)错误;以数字"0"作为前缀的是八进制整常数,不能包含数字9,选项C)错误;以"0x"作为前缀的是十六进制整常数,不能包含"H",选项D)错误。答案选A)。11、以下选项中,合法的实数是()。A、4.5E2B、E1.3C、7.11ED、1.2E1.2标准答案:A知识点解析:科学计数法中,e/E前后必须有数字并且后面的数字必须为整数,答案选A。12、若有定义inta,b,c;以下选项中的赋值语句正确的是()。A、a=(b=c)+1;B、(a=b)=c=1;C、a=(b==c)=1;D、a+b=c;标准答案:A知识点解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选A。13、有如下程序#includemain(){intx=0x13;printf("%d\n",x+1);}程序运行后的输出结果是()。A、20B、14C、12D、13标准答案:A知识点解析:十六进制整常数以数字"0x"作为前缀,printf中的格式控制符为"%d"表示按照十进制输出,x对应的十进制数值为19,x加1之后的十进制数字为20,答案选A。14、在C语言中,以下选项中不能正确表示10×1000之值的是()。A、1.0E4.0B、1.E4C、10E3D、1.0e4标准答案:A知识点解析:科学计数法中,e/E前后必须有数字并且后面的数字必须为整数,选项A)不是正确的表示方法,所以答案选A)。15、设有定义:inta=0,b=1,c=1;以下选项中,表达式值与其它三个不同的是()。A、b=a==cB、a=b=cC、a=c==bD、c=a!=c标准答案:A知识点解析:关系运算符的优先级要高于赋值运算符。所有的表达式均是先计算关系表达式然后再计算赋值运算,除了选项A)的表达式的值为0之外,其余的所有选项的表达式的值均为1,所以答案选A)。16、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑表达式的值只有0或者1,逻辑或运算符"||"两侧的运算对象只要有一个为真,该逻辑表达式的值就为真。在题中的逻辑表达式中,判定的是a==1和a!=1相或的值,易得知该逻辑表达式的值为真,即1,答案选A。17、以下选项中不能作为C语言合法常量的是()。A、’cd’B、0.1e+6C、\aD、’\011’标准答案:A知识点解析:字符常量是由单引号括起来的单个字符,选项A)错误,而选项B)是由科学计数法表示的实型常量,选项C)是由转义字符\a表示的字符串常量,选项D)是由3位八进制数所代表的字符。答案选A)。18、有以下定义语句,编译时会出现编译错误的是()。A、chara="aa";B、chara=’\n’;C、chara=’a’;D、chara=’\x2d’;标准答案:A知识点解析:由两个双引号""引起来的是一个字符串常量,而字符变量只能存放单个字符常量,答案选A。19、当变量c的值不为2、4、6时,值为"真"的表达式是()。A、(c>=2&&c<=6)||(c!=3)||(c!=5)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)标准答案:A知识点解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项A)中,只要c的值不为3或者不为5或者在2和6之间,这个表达式就为真,所以答案选A)。20、已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printf("%d,%d",c1,c2-2);的输出结果是()。A、65,66B、A,68C、A,BD、65,68标准答案:A知识点解析:字符常量与其ASCII码值一一对应,在计算的时候,一般是字符常量对应的ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII码。字符变量是字符数据在内存中的存储形式,存放的是字符的ASCII值。本题中,c1的值为’A’,输出其ASCII码值为65,c2的值为’D’,对应ASCII码值为68,所以输出结果为68-2为66,答案选A。21、以下选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==0B、x/2C、x%2!=0D、x%2==1标准答案:A知识点解析:题中x为大于1的奇数,"%"为取余运算符,x对2取余,即"x%2"的值肯定为1,答案选A。22、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是()。A、c=(’A’+c)%26-’a’B、c=c+32C、c=c-’A’+’a’D、c=(c-’A’)%26+’a’标准答案:A知识点解析:字符常量与其ASCII码值一一对应,一个字符对应小写字母的ASCII码要比对应大写字母的ASCII码值大32。所以将大写字母转换成小写字母,只需要将对应字符加上32即可,只有选项A)不是在原来字符的基础上加32,所以答案选A)。23、以下选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==0B、x/2C、x%2!=0D、x%2==1标准答案:A知识点解析:题中x为大于1的奇数,"%"为取余运算符,x对2取余,即"x%2"的值肯定为1,答案选A。24、以下选项中,值为1的表达式是()。A、1-’\0’B、1–’0’C、’1’-0D、’\0’-’0’标准答案:A知识点解析:字符型数据参与运算时使用其对应的ASCII码值,’\0’的ASCII码值为0,’0’的为48,’1’的为49,所以答案选A。25、当变量c的值不为2、4、6时,值为"真"的表达式是()。A、(c>=2&&c<=6)||(c!=3)||(c!=5)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)标准答案:A知识点解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项A)中,只要c的值不为3或者不为5或者在2和6之间,这个表达式就为真,所以答案选A)。26、以下选项中非法的C语言字符常量是()。A、’aa’B、’\b’C、’\007’D、’\xaa’标准答案:A知识点解析:字符常量是由单引号括起来的单个字符,选项A)错误,而选项B)是转义字符,选项C)是由3位八进制数所代表的字符,选项D)是由2位十六进制数所代表的字符,答案选A)。27、以下选项中非法的C语言字符常量是()。A、’\09’B、’9’C、’\x09’D、’\x9d’标准答案:A知识点解析:选项B)由单个字符构成的字符常量,选项C)、D)为由2位十六进制数所代表的字符,没有用两个十进制数代表的字符,答案选A)。28、若有定义语句charc=’\101’;则变量c在内存中占()。A、1个字节B、2个字节C、3个字节D、4个字节标准答案:A知识点解析:?\101?为由3位八进制数所代表的字符,是一个字符常量,占用空间为1个字节,答案选A。29、若有以下程序#includemain(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n",c1,c2);}则程序的输出结果是()。A、H9B、表达式不合法输出无定值C、F’9’D、H’9’标准答案:A知识点解析:字符常量与其ASCII码值一一对应,在计算的时候,一般是字符数据对应的ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII码。本题中,′8′-′3′结果为5,′C′+5的结果为72即′H′,所以c1=′H′。′9′-′0′为9,所以c2=9。故而输出结果为选项A)。30、表示关系式x≤y≤z的C语言表达式的是()。A、(x<=y)&&(y<=z)B、(x<=y)||(y<=z)C、(x<=y<=z)D、(x<=y)!(y<=z)标准答案:A知识点解析:关系式"x≤y≤z"表示的是y值大于x并且小于z,所以用逻辑与运算符"&&",答案选A。31、若变量已正确定义,以下选项中非法的表达式是()。A、’a’=1/2*(x=y=20,x*3)B、a!=4||’b’C、’a’%4D、’A’+32标准答案:A知识点解析:赋值运算符的左侧必须为变量而不能是表达式或者常量,选项A)的表达式非法,答案选A)。32、有以下程序#includemain(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}程序运行后的输出结果是()。A、1B、0C、35D、66标准答案:A知识点解析:逻辑表达式的值只能为1或者0,而逻辑表达式"((x)&&(z<?b?))"中表达式"(x)"为真,大写字母的ASCII要比对应的小写字母的ASCII码值小32,所以表达式"(z<?b?)"为真,逻辑表达式为真,其值为1,所以答案选A。33、与数学表达式x≥y≥z对应的C语言表达式是()。A、(x>=y)&&(y>=z)B、(x>=y>=z)C、(x>=y)!(y>=z)D、(x>=y)||(y>=x)标准答案:A知识点解析:关系式"x≥y≥z"表示的是y值小于x并且大于z,所以用逻辑与运算符"&&",答案选A。34、以下叙述中正确的是()。A、关系运算符两边的运算对象可以是C语言中任意合法的表达式B、在C语言中,逻辑真值和假值分别对应1和0C、对于浮点变量x和y,表达式:x==y是非法的,会出编译错误D、分支结构是根据算术表达式的结果来判断流程走向的标准答案:A知识点解析:C语言中,运算符两侧的运算对象可以任意合法的表达式,选项A)正确;非0和0分别对应逻辑真值和假值,选项B)错;关系运算符"=="两侧的运算对象只要为合法的表达式就可以编译通过,选项C)错;分支结构是根据if或者elseif后面的圆括号内的表达式(不仅仅是算术表达式,还有赋值表达式、逗号表达式、关系表达式、逻辑表达式等)的值来判定流程走向的,选项D)错误;所以答案选A)。35、下面选项中合法的字符常量是()。A、’X’B、XC、’abc’D、’\’标准答案:A知识点解析:字符常量是由单引号括起来的ASCII码表中的字符,除了特殊的转义字符外,字符常量通常为一个字符,所以答案选A。36、以下叙述中正确的是()。A、字符常量需要用单引号括起来B、字符常量在内存中占2个字节C、转义字符要用双引号括起来,以便与普通的字符常量区分开D、字符常量是不能进行关系运算的标准答案:A知识点解析:字符常量是由单引号括起来的ASCII码表中的字符,特殊的转义字符也要用单引号括起来表示其为一个字符,字符常量在内存中占1个字节,参与运算的时候,通常使用该字符的ASCII码进行计算。答案选A。37、以下叙述中正确的是()。A、由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象B、C语言的关系表达式:0C、逻辑"非"(即运算符!)的运算级别是最低的D、逻辑"或"(即运算符||)的运算级别比算术运算要高标准答案:A知识点解析:"0算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符>逗号运算符。所以逻辑"或"的运算级别要比算术运算低,选项D)错;逻辑或和逻辑与表达式均有"短路求值"的现象,所以答案选A)。38、以下叙述中正确的是()。A、表达式:’a’>’b’的结果是"假"B、a表示一个字符常量C、’\0’表示字符0D、’\"’是非法的标准答案:A知识点解析:字符常量进行计算的时候使用其ASCII码参与运算,‘a’的ASCII码值为97,‘b’的ASCII码值为98,所以表达式的结果为"假",选项A)正确;"a"表示的是一个字符串常量,选项B)错;‘\0’为一个转义字符,ASCII码值为0,选项C)错;‘\"’为一个转义字符,表示一个双引号符,选项D)错。答案选A)。39、以下叙述中正确的是()。A、字符常量可以参与任何整数运算B、字符变量在定义时不能赋初值C、同一英文字母的大写和小写形式代表的是同一个字符常量D、转义字符用@符号开头标准答案:A知识点解析:字符常量进行计算的时候使用其ASCII码参与运算,所以字符常量可以参与整数运算,选项A)正确;任何变量都可以在定义时赋初值,选项B)错;C语言对大小写敏感,所以大小写不同的英语字母代表不同的字符常量,选项C)错;转义字符以反斜杠"\"作为开头,选项D)错;所以答案选A)。40、若有定义语句:chara=’\82’;则变量a()。A、说明不合法B、包含1个字符C、包含2个字符D、包含3个字符标准答案:A知识点解析:以反斜杠开始的为转义字符,C语言中可以用1~3位八进制数代表一个转义字符(形式为?\ddd?),或者由两位十六进制数代表一个字符(形式为?\xhh?),但是没有用两个十进制数代表的字符,所以答案选A。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上说法均错误标准答案:A知识点解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。2、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列的修改是依先进先出的原则进行的,D正确。3、以下叙述中正确的是A、int*p1;int**p2;int*p3;都是合法的定义指针变量的语句B、指针变量只能通过求地址运算符(&)来获得地址值C、语句p=NULL;与p=\0;是等价的语句D、语句p=NULL;执行后,指针p指向地址为0的存储单元标准答案:A知识点解析:B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NULL;和p=0;或p=’\0’;等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-"空"。因此A选项正确。4、一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是A、1,2,3,A,B,CB、C,B,A,1,2,3C、C,B,A,3,2,1D、1,2,3,C,B,A标准答案:C知识点解析:栈的修改是按后进先出的原则进行的,所以顺序应与入栈顺序相反,故选C。5、下面属于白盒测试方法的是A、等价类划分法B、逻辑覆盖C、边界值分析法D、错误推测法标准答案:B知识点解析:白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖,选择B。其余为黑盒测试法。6、下面对对象概念描述正确的是A、对象间的通信靠消息传递B、对象是名字和方法的封装体C、任何对象必须有继承性D、对象的多态性是指一个对象有多个操作标准答案:A知识点解析:对象之间进行通信的构造叫做消息,A正确。多态性是指同一个操作可以是不同对象的行为,D错误。对象不一定必须有继承性,C错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,B错误。7、软件设计中模块划分应遵循的准则是A、低内聚低耦合B、高耦合高内聚C、高内聚低耦合D、以上说法均错误标准答案:C知识点解析:根据软件设计原理提出如下优化准则:①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。②一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。③软件结构的深度、宽度、扇入、扇出应适当。④模块的大小要适中。C正确。8、下面描述中不属于数据库系统特点的是A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。9、数据库设计过程不包括A、概念设计B、逻辑设计C、物理设计D、算法设计标准答案:D知识点解析:数据库设计过程主要包括需求分析、、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。10、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。11、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令C、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达D、只有简单算法才能在有限的操作步骤之后结束标准答案:B知识点解析:C语言程序可以不包含三种基本结构,也可以包含其中的一种或多种,所以A错误。三种基本结构可以表示任何复杂的算法,所以C错误。正确的算法,不管是简单算法还是复杂算法都可以在有限的操作步骤之后结束,这是算法的有穷性,所以D错误。12、以下叙述中正确的是A、在算法设计时,可以把复杂任务分解成一些简单的子任务B、在C语言程序设计中,所有函数必须保存在一个源文件中C、只要包含了三种基本结构的算法就是结构化程序D、结构化程序必须包含所有的三种基本结构,缺一不可标准答案:A知识点解析:C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#include命令来引用,所以B错误。结构化程序可以包含三种基本结构中的一种或几种,所以C,D错误。13、以下叙述中正确的是A、只能在函数体内定义变量,其他地方不允许定义变量B、常量的类型不能从字面形式上区分,需要根据类型名来决定C、预定义的标识符是C语言关键字的一种,不能另作它用D、整型常量和实型常量都是数值型常量标准答案:D知识点解析:变量可以定义在函数体外也可以定义在函数体内,所以A错误。常量的类型可以从字面形式上区分,比如1为整型常量,1.0为实型常量,a为字符型常量,所以B错误。预定义的标识符不是C语言的关键字,所以C错误。14、以下叙述中正确的是A、在C程序中的八进制和十六进制,可以是浮点数B、整型变量可以分为int型、short型、long型和unsigned型四种C、八进制数的开头要使用英文字母o,否则不能与十进制区分开D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符标准答案:B知识点解析:C程序中的实型常量只有十进制一种数制,所以A错误。八进制数以0打头,所以C错误。C语言中整数只有十进制、八进制、十六进制三种没有二进制数制,所以D错误。15、以下叙述中正确的是A、在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上B、在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔C、在printf函数中,各个输出项只能是变量D、使用printf函数无法输出百分号%标准答案:A知识点解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A正确。scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以B错误。Printf函数可以输出常量也可以输出变量,所以C错误。Prinf函数可以用"\%"来输出百分号%,所以D错误。16、以下叙述中正确的是A、在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符B、只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度C、scanf函数中的字符串,是提示程序员的,输入数据时不必管它D、复合语句也被称为语句块,它至少要包含两条语句标准答案:A知识点解析:在printf和scanf函数中都可以指定数据的宽度,所以B错误。scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配,所以C错误。复合语句可以由任意多条语句构成,可以使一条也可以没有,所以D错误。17、以下叙述中正确的是A、逻辑"或"(即运算符||)的运算级别比算术运算要高B、C语言的关系表达式:0C、逻辑"非"(即运算符!)的运算级别是最低的D、由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象标准答案:D知识点解析:B选项中,(x>0)&&(x<10)的值是1或0,条件是x>0并且x<10。但是0<x<10这种写法的结果任何时候都是1;C选项中,逻辑"非"(即运算符!)的运算级别是最高的;A选项中,算术运算符优先级较高,关系和逻辑运算符优先级较低。因此D选项正确。18、以下叙述中正确的是A、if语句只能嵌套一层B、if子句和else子句中可以是任意的合法的C语句C、不能在else子句中再嵌套if语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:B知识点解析:A选项中,if语句的嵌套没有规定层数;C选项中,可以在else子句中再嵌套if语句;D选项中,改变if-else语句的缩进格式,不会改变程序的执行流程,需要注意if和else的配对问题。因此B选项正确。19、以下叙述中正确的是A、只要适当地修改代码,就可以将do-while与while相互转换B、对于"for(表达式1;表达式2;表达式3)循环体"首先要计算表达式2的值,以便决定是否开始循环C、对于"for(表达式1;表达式2;表达式3)循环体",只在个别情况下才能转换成while语句D、如果根据算法需要使用无限循环(即通常所称的"死循环"),则只能使用while语句标准答案:A知识点解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。20、以下叙述中正确的是A、只能在循环体内和switch语句体内使用break语句B、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环D、在while语句和do-while语句中无法使用continue语句标准答案:A知识点解析:break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。B、C和D三个选项中均有错误。因此A选项正确。21、以下叙述中正确的是A、’\0’表示字符0B、"a"表示一个字符常量C、表达式:’a’>’b’的结果是"假"D、’\"’是非法的标准答案:C知识点解析:A选项中,’\0’表示结束;B选项中,字符常量是用单引号括起来的一个字符;D选项中,’\"’是双引号符。因此C选项正确。22、以下叙述中正确的是A、字符变量在定义时不能赋初值B、字符常量可以参与任何整数运算C、同一英文字母的大写和小写形式代表的是同一个字符常量D、转义字符用"\"符号开头标准答案:B知识点解析:A选项中,字符变量在定义时可以赋初值;C选项中,同一英文字母的大写和小写形式代表的是不同的字符常量;D选项中,转义字符以反斜线"\"开头的。因此B选项正确。23、以下叙述中正确的是A、函数名允许用数字开头B、函数调用时,不必区分函数名称的大小写C、调用函数时,函数名必须与被调用的函数名完全一致D、在函数体中只能出现一次return语句标准答案:C知识点解析:B选项中,函数调用时,函数名称是需要区分大小写的;A选项中,函数名不允许以数字开头;D选项中,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行。因此C选项正确。24、以下叙述中正确的是A、如果p是指针变量,则&p是不合法的表达式B、如果p是指针变量,则*p表示变量p的地址值C、在对指针进行加、减算术运算时,数字1表示1个存储单元的长度D、如果p是指针变量,则*p+1和*(p+1)的效果是一样的标准答案:C知识点解析:B选项中,如果p是指针变量,则*p表示变量p所指向的地址的值;A选项中,如果p是指针变量,则&p表示变量p的地址;D选项中,如果p是指针变量,*p+1表示将p所指的值加上1,而*(p+1)表示的是先将指针右移一位再取所指向变量的值。因此C选项正确。25、以下叙述中正确的是A、基类型不同的指针变量可以相互混用B、函数的类型不能是指针类型C、函数的形参类型不能是指针类型D、设有指针变量为double*p,则p+1将指针p移动8个字节标准答案:D知识点解析:B选项中,所谓函数类型是指函数返回值的类型。在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数;C选项中,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型;A选项中,虽然不同基类型的指针变量占用字节数是相同的,但是不能混用。因此D选项正确。26、如果定义floata[10],x;则以下叙述中正确的是A、语句a=&x;是非法的B、表达式a+1是非法的C、三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表达式*&a[1]是非法的,应该写成*(&(a[1]))标准答案:A知识点解析:B选项中,表达式a+1不是非法的;C选项中,*(a+1)即指a[1];D选项中,*&a[1]不是非法的。因此A选项正确。27、有以下程序#includemain(){inta[]={2,4,6,8},*p=a,i;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n",a[2]);}程序的输出结果是A、2B、8C、4D、6标准答案:D知识点解析:本题通过语句"*p=a"将一维数组a的首地址的值赋值给变量p,即p的值为2。执行for循环,a[i]=*p++,指将p的值赋给a[i]后,再进行++操作,因此4次循环后a[2]的值为6。因此D选项正确。28、以下叙述中正确的是A、语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式B、语句inta[4][3]={1,2,4,5};是错误的初始化形式C、语句inta[][3]={1,2,4,5};是错误的初始化形式D、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵标准答案:D知识点解析:二维数组在初始化时,可以省略第1维,但是不可以省略第2维。可以为部分数组元素初始化。B选项、C选项和A选项内的初始化都没有错误。因此D选项正确29、以下叙述中正确的是A、字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素B、不能用字符串常量对字符数组名进行整体赋值操作C、charstr[7]="string!";在语法上是合法的,运行也是安全的D、char*str;str="Hello";与charstr[];str="Hello";效果是一样的标准答案:B知识点解析:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符’\0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占(n+1)个字节。选项A中有6个元素,其中包含结尾字符,C选项中字符串常量包含8个字符,所以不能赋值在str[7]中,D选项后者赋值错误。30、以下叙述中正确的是A、在语句charstr[]="string!";中,数组str的大小等于字符串的长度B、语句charstr[10]="string!";和charstr[10]={"string!"};并不等价C、对于一维字符数组,不能使用字符串常量来赋初值D、对于字符串常量"string!",系统已自动在最后加入了’\0’字符,表示串结尾标准答案:D知识点解析:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符’\0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占(n+1)个字节。B选项中两者等价,C选项中可以使用字符串常量来给一维字符数组赋值,就像B选项中一样,A选项中数组长度比字符串长度小一个字节,字符串中包含隐含的结尾符。31、设有定义charstr[]="Hello";则语句printf("%d%d",sizeof(str),strlen(str));的输出结果是A、5,5B、6,6C、6,5D、5,6标准答案:C知识点解析:本题考查sizeof和strlen对字符串的处理不同之处,sizeof求出字符串的字符个数,包括结尾符。Strlen求出字符串的实际字符,不包括结尾符。所以答案为6,5,C选项正确。32、在32位编译器上,设有定义char*str1="Hello",str2[]="Hello";,则以下语句printf("%d%d",sizeof(str1),sizeof(str2));的输出结果是A、56B、55C、66D、46标准答案:D知识点解析:本题主要考查了指向字符串的指针和字符数组,str1为一个字符指针,所以sizeof为4,str2为字符数组,其中包含6个字符,所以答案为46.33、以下叙述中正确的是A、任何情况下都不能用函数名作为实参B、函数既可以直接调用自己,也可以间接调用自己C、函数的递归调用不需要额外开销,所以效率很高D、简单递归不需要明确的结束递归的条件标准答案:B知识点解析:在某些情况下,函数名可以作为实参传递,所以A选项错误。函数递归调用使用栈区来递归,需要额外开销,并且效率不高,C选项错误。递归调用需要明确指出递归结束条件,否则就陷入死循环了。34、以下叙述中正确的是A、函数的形式参数不属于局部变量B、对于变量而言,"定义"和"说明"这两个词实际上是同一个意思C、在复合语句中不能定义变量D、全局变量的存储类别可以是静态类标准答案:D知识点解析:声明变量不分配空间,定义变量要分配空间,所以B选项错误。符合语句中可以定义变量,所以C选项错误。函数的形参属于局部变量,所以A选项错误。35、以下叙述中正确的是A、在一个程序中,允许使用任意数量的#include命令行B、在包含文件中,不得再包含其他文件C、#include命令行不能出现在程序文件的中间D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接标准答案:A知识点解析:本题考查预处理中文件包含的概念,包含文件中可以包含其他文件,B选项错误,#include可以出现在程序文件的中间,C选项错误,包含文件被修改了,包含该文件的源程序必须重新进行编译和连接。36、以下叙述中正确的是A、函数的返回值不能是结构体类型B、在调用函数时,可以将结构体变量作为实参传给函数C、函数的返回值不能是结构体指针类型D、结构体数组不能作为参数传给函数标准答案:B知识点解析:本题考查结构体变量作为函数参数,函数返回可以是结构体类型,也可以是结构体类型的指针,结构体数组可以作为参数传给函数。37、以下叙述中正确的是A、结构体数组名不能作为实参传给函数B、结构体变量的地址不能作为实参传给函数C、结构体中可以含有指向本结构体的指针成员D、即使是同类型的结构体变量,也不能进行整体赋值标准答案:C知识点解析:本题考查结构体变量作为函数参数,结构体变量的地址可以作为参数传给函数,结构体数组名就是一个地址,可以传给函数,如果是同类型的结构体变量,可以整体赋值。38、.设有如下的说明和定义struct{inta;char*s;}x,*p=&x;x.a=4;x.s="hello";则以下叙述中正确的是A、(p++)->a与p++->a都是合语法的表达式,但二者不等价B、语句++p->a;的效果是使p增1C、语句++p->a;的效果是使成员a增1D、语句*p->s++;等价于(*p)->s++;标准答案:C知识点解析:本题考查结构体变量的引用,++p->a的效果是使成员a增1,p++->a不合法,*p->s++为字符e,与(*p)->s++不等价。39、下面关于位运算符的叙述,正确的是A、||表示"按位或"的运算B、#表示"按位异或"的运算C、&表示"按位与"的运算D、~表示"按位异或"的运算标准答案:C知识点解析:本题考查位运算。^为按位异或,|为按位或,~表示按位取反。所以C选项正确。40、下面关于"EOF"的叙述,正确的是A、EOF的值等于0B、EOF是在库函数文件中定义的符号常量C、文本文件和二进制文件都可以用EOF作为文件结束标志D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF标准答案:B知识点解析:在C语言中,或更精确地说成C标准函数库中表示文件结束符(endoffile)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的效率与问题的规模和数据的存储结构都有关,A错误。算法的时间复杂度,是指执行算法所需要的计算工作量,B正确。由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不是一一对应的,C错误。算法的时间复杂度和空间复杂度没有直接的联系,D错误。2、下列叙述中正确的是A、线性表链式存储结构的存储空间一般要少于顺序存储结构B、线性表链式存储结构与顺序存储结构的存储空间都是连续的C、线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D、以上说法均错误标准答案:C知识点解析:线性表的顺序存储结构具备如下两个基本特征:(1)线性表中的所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此C正确。3、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n0=1,则n2=0,总节点数为12=n0+n1+n2=1+n1+0,则度为1的节点数n1=11,故深度为12,选D。4、对长度为n的线性表作快速排序,在最坏情况下,比较次数为A、nB、n-1C、n(n-1)D、n(n-1)/2标准答案:D知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n-1)+(n-2)+…+1=n(n-1)/2,选D。5、结构化程序设计中,下面对goto语句使用描述正确的是A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、以上说法均错误标准答案:C知识点解析:结构化程序设计中,要注意尽量避免goto语句的使用,故选C。6、下面不属于软件测试实施步骤的是A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。7、下面不属于软件需求分析阶段主要工作的是A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:需求分析阶段的工作可概括为4个方面:①需求获取。②需求分析。③编写需求规格说明书。④需求审评。8、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的A、记录B、行C、属性D、元组标准答案:C知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间有公共域;②通过公共域的等值进行连接,选C。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:关系T是关系R的一部分,并且是关系R去掉R和S相同的元素,符合差操作。10、有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),职员S(职员号,姓名,性别,年龄,学历),工作W(公司号,职员号,工资),则表W的键(码)为A、公司号,职员号B、职员号,工资C、职员号D、公司号,职员号,工资标准答案:A知识点解析:由于职员可以再多加公司兼职,表W的键(码)应为公司关系和职员关系的主码,即公司号和职员号。11、关于算法,以下叙述中错误的是A、某个算法可能会没有输入B、某个算法可能会没有输入C、一个算法对于某个输入的循环次数是可以事先估计出来的D、任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕标准答案:D知识点解析:算法的特征:①有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。②确定性:算法中的每一步都有确切的含义。③可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。⑤输出:一个算法有一个或者多个输出,以反映出数据加工的结果。所以选择D选项。12、关于C语言的变量,以下叙述中错误的是A、变量所占的存储单元地址可以随时改变B、所谓变量是指在程序运行过程中其值可以被改变的量C、程序中用到的所有变量都必须先定义后才能使用D、由三条下划线构成的符号名是合法的变量名标准答案:A知识点解析:一个变量实质上是代表了内存中的某个存储单元,必须先定义后使用,且在定义时为之分配存储单元,不能随时改变,所以选择A选项。13、关于do循环体while(条件表达式);以下叙述中正确的是A、条件表达式的执行次数总是比循环体的执行次数多一次B、循环体的执行次数总是比条件表达式的执行次数多一次C、条件表达式的执行次数与循环体的执行次数一样D、条件表达式的执行次数与循环体的执行次数无关标准答案:C知识点解析:do…while循环的执行过程是先执行一遍循环体后再执行条件表达式判断条件,直到条件不成立跳出循环,所以循环体和条件表达式的执行次数是一致的,所以选择C。14、若有以下程序#includemain(){inta=-11,b=10;a/=b/=-4;printf("%d%d\n",a,b);}则程序的输出结果是A、4-3B、-1-2C、5-2D、5-3标准答案:C知识点解析:先执行b/=-4,即b=b/-4,结果为-2,然后执行a/=-2,即a=a/-2,结果为5,所以选择C。15、若有以下程序#includemain(){inta=0,b=0,c=0c=(a+=++b,b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、1,5,1B、1,5,5C、-1,4,4D、-1,4,-1标准答案:B知识点解析:逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算,且逗号运算符的优先级最低?先计算a+=++b,结果a为1,b为1,然后计算b+=4,b的值为5,逗号表达式的值为其中最后一个表达式的值,所以将5赋给变量c,即a为1,b为5,c为5,所以选择B。16、若有定义inta;floatb;doublec;程序运行时输入:345<回车>能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是A、scanf("%d%f%lf",&a,&b,&c);B、scanf("%d%lf%lf",&a,&b,&c);C、scanf("%d%f%f",&a,&b,&c);D、scanf("%lf%lf%lf",&a,&b,&c);标准答案:A知识点解析:scanf()函数的格式串中,必须含有与输入项一一对应的格式转换说明符,整型数据、float型数据、double型数据对应的格式转换说明符分别为%d、%f、%lf?所以选择A。17、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)&&(b=1))c=2;if((c==3)||(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}则程序的输出结果是A、2,2,2,4B、2,1,2,-1C、5,1,2,-1D、1,2,3,4标准答案:C知识点解析:第一个if语句的判断条件中是逻辑与表达式,只有运算对象均非零结果才为真,执行第一个if判断条件,均为赋值表达式,第一个运算对象a=2非零,判断第二个表达式b=1也非零,所以条件成立执行c=2的赋值操作,执行第二个if判断条件中的逻辑或表达式,只要有一个对象非零结果就是真,本条件中c==3运算对象为假,所以需要判断第二个运算对象d=-1,结果为-1非零,所以条件成立,执行a=5,的操作,所以a值为5,b值为1,c值为2,d值为-1。18、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、3B、7C、6D、10标准答案:D知识点解析:第一个if语句a!=1条件为假,所以执行else后的语句r=1,第二个if语句b==2条件成立,执行r+=2,r的值变为3,第三个if语句c!=3条件为假,所以不做任何操作,执行下面的r+=3操作,r的值变为6,判断第四个if条件,d==4条件成立,执行r+=4操作,结果为10。19、若有以下程序#includemain(){ints=0,n;for(n=0;n<4;n++){switch(n){default:s+=4;case1:s+=1;break;case2:s+=2;break;case3:s+=3;}}printf("%d\n",s);}则程序的输出结果是A、10B、11C、13D、15标准答案:B知识点解析:break语句的作用是终止正在执行的switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出,题干中第一次循环n值为0,执行default语句后的s+=4,s的值变为4,执行case1语句后的s+=1,s的值变为5,遇到break语句跳出switch语句,进入第二次循环,第二次循环时n的值为1,执行case1后的s+=1,s的值变为6,遇到break语句跳出switch语句,进入第三次循环?第三次循环时n的值为2,执行case2后的s+=2,s的值变为8,遇到break语句跳出switch语句,进入第四次循环,第四次循环时n的值为3,执行case3后的s+=3,s的值变为11,再判断循环条件为假,退出循环打印s的值11。20、若有以下程序#includemain(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}则程序的输出结果是A、1,3B、0,2C、1,2D、2,3标准答案:A知识点解析:本题重点考察do-while语句及do-while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),++b即变量b自增1后再参与运算,而a++则表示a参与运算后,再自增1,所以第一次循环结束后,b=1,a=-1,第二次循环后,b=2,a=0,第三次循环后,b=3,a=1,因此A选项正确。21、若有以下程序#includemain(){inta=6,b=0,c=0;for(;a&&(b==0);){b+=a;a-=c++;}printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、5,6,0B、6,0,0C、6,6,1D、5,6,1标准答案:C知识点解析:本题重点考察C语言中for语句和逻辑表达式,for语句的一般形式为:for(表达式1;表达式2;表达式3)语句其循环中的"表达式1(循环变量赋初值)"、"表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论