导航菜单

NCRE

全国计算机等级考试二级笔试样卷C语言程序设计-解答

样卷在这里!

以下内容均为个人答案,如有错误请联系我修正!谢谢~

正在学习中…

选择题答案(没有学习过数据结构,8-10题未做): 1~10 DADBD CD BA 21~40 DACBC DBCAC BB… 11~20 ADDAD CDAAC

填空题答案: (1) (2)程序调试 (3)元组(记录) (4)栈 (5)线性结构 (6)123 (7)12 11 (8) (9)1 1 (10)n/=10 (11)第一空x+8第二空sin(x) (12) (13)18

一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分)

(1)下列选项中不符合良好程序设计风格的是(D)

A) 源程序要文档化

B) 数据说明的次序要规范化

C) 避免滥用goto语句

D) 模块设计要保证高耦合、高内聚

B项数据说明的次序应当规范化,编写任何代码都需要遵循一定的规范并且也要写出有自己风格的一套规范来,比如Java这种具有很强的逻辑性的语言一定要有逻辑!

C项正确,goto语句的坏处之前有讲过!

具体就是这样滴:

三,C语言中不允许使用goto语句?

不是不允许,是不提倡,最好不用;

goto使用注意(来自csdn):

不加限制地使用goto:破坏了清晰的程序结构,使程序的可读性变差,甚至成为不可维护的"面条代码"。经常带来错误或隐患,比如它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。

关于使用goto语句的原则:

(1)使用goto语句只能goto到同一函数内,而不能从一个函数里goto到另外一个函数里。 (2)使用goto语句在同一函数内进行goto时,goto的起点应是函数内一段小功能的结束处,goto的目的label处应是函数内另外一段小功能的开始处。 (3)不能从一段复杂的执行状态中的位置goto到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。 (4)应该避免向两个方向跳转。这样最容易导致"面条代码"。

D项应为高耦合、低内聚!原因:

以下内容来自CSDN:

https://blog.csdn.net/villainy13579/article/details/93507954

模块就是从系统层次去分成不同的部分,每个部分就是一个模块,分而治之, 将大型系统的复杂问题,分成不同的小模块,去处理问题。

耦合:

主要是讲模块与模块之间的联系

模块与模块之间有写操作是有关联的, 如果改动一个模块其他的模块都有可能受到影响,模块与模块之间的关系越是紧密,独立性就越不好。

例如:如果模块1直接操作了模块2红的数据,这种操作模块与模块之间就为强耦合,甚至可以认为这种情况之下基本算没有分模块!如果1只是通过数据与2模块交互,这种称之为弱耦合。

微服务独立的模块,方便去维护,或者写单元测试等等…如果模块之间的依赖非常严重,将会非常不易于维护。

内聚:

内聚主要指的是模块内部【东西聚合在一起形成了一个模块】例如方法,变量,对象,或者是功能模块

模块内部的代码, 相互之间的联系越强,内聚就越高, 模块的独立性就越好。 一个模块应该尽量的独立,去完成独立的功能!如果有代码非得引入到独立的模块,建议拆分成多模块!低内聚的代码,不好维护,代码也不够健壮。【代码必须要有健壮性噢~】

以下这些接口设计原则,就是参考低耦合高内聚

设计模式一般参照六大设计原则,许多的设计模式,包括一些框架,都是参考高内聚低耦合这个点的。

单一职责原则:一个类值负责一个功能的职责开闭原则:扩展开放,修改关闭。里氏代换原则:使用父类的地方都能使用子类对象依赖倒转原则:针对接口编程,接口隔离原则:针对不同部分用专门接口,不用总接口,需要哪些接口就用哪些接口迪米特法则: 软件实体类,尽量不与其他实体类发生关系相互作用,对外都统一的暴露接口就行了关于这道题的理解可以看看这个,写的很好! https://blog.csdn.net/weixin_43319713/article/details/106591337?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161572593716780262599373%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161572593716780262599373&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-106591337.first_rank_v2_pc_rank_v29&utm_term=%E6%BA%90%E7%A8%8B%E5%BA%8F%E6%96%87%E6%A1%A3%E5%8C%96 具体:

程序设计风格

源程序文档化:

标识符的命名安排注释程序的视觉组织

数据说明:

数据说明的次序应当规范化当多个变量名在 一个语句中说明时,按字母顺序排列;应当对过程和函数的形参排列有序:输入参数在前,输出参数在后;整型参数在前,实型参数次之,其他参数在后

结构化程序设计

强调使用几种基本控制结构、由粗到细,一步步展开

主要原则:使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。选用的控制结构只准许有一个入口和一个出口复杂结构应该用基本控制结构进行组合嵌套来实现

自顶向下,逐步细化的过程

(2)从工程管理角度,软件设计一般分为两步完成,它们是(A)

A) 概要设计与详细设计

B) 数据设计与接口设计

C) 软件结构设计与数据设计

D) 过程设计与数据设计

就是概设和详设!

(以下内容来自CSDN):

https://blog.csdn.net/jiangbqing/article/details/114122781?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161572652516780271547430%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161572652516780271547430&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-114122781.first_rank_v2_pc_rank_v29&utm_term=%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E4%B8%80%E8%88%AC%E5%88%86%E4%B8%BA%E4%B8%A4%E6%AD%A5%E5%AE%8C%E6%88%90 解析设计阶段的主要目的是设计如何把已经确定的需求转换成实际的软件。软件设计一般分为概要设计和详细设计两阶段。概要设计也称为总体设计,其基本目标是能够对软件需求分析中提出的一系列软件问题,概要的回答问题如何解决,例如,软件系统将采用什么样的体系架构,需要创建哪些功能模块,模块之间的关系如何,数据结构如何,软件系统需要提供什么样的网络环境提供者支持,需要采用什么类型的后台数据库等。经过概要设计阶段的工作,已经确定了软件的模块结构和接口描述,但每个模块如何实现仍不清晰,详细设计阶段的根本目标是确定如何具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,因此,详细设计的结果基本上决定了最终程序代码的质量。以下内容来自CSDN: https://blog.csdn.net/weixin_39889788/article/details/111157584?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E4%B8%80%E8%88%AC%E5%88%86%E4%B8%BA%E4%B8%A4%E6%AD%A5%E5%AE%8C%E6%88%90&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-8-111157584.first_rank_v2_pc_rank_v29

软件设计的基本概念

软件设计是确定系统的物理模型。

软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。

从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。

(1)结构设计定义软件系统各主要部件之间的关系;

(2)数据设计将分析时创建的模型转化为数据结构的定义;

(3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;

(4)过程设计则是把系统结构部件转换为软件的过程性描述。

从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。

(1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;

(2)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

(3)下列选项中不属于软件生命周期开发阶段任务的是(D)

A)软件测试 B)概要设计 C)软件维护 D)详细设计

软件生命周期

定义:https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/861455?fr=aladdin它是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。可分为软件定义,软件开发及软件维护3个阶段。软件生命周期中,能够准确确定软件系统必须做什么和必须具备哪些功能的阶段是:需求分析。详细解释: 内容来自:https://zhidao.baidu.com/question/319031139.html软件生命周期分为问题定义、可行性研究、需求分析、开发阶段、维护这5个阶段。各个阶段的主要任务是:

1、问题定义 要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认。 2、可行性研究 一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性分析。 3、需求分析 弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。 4、开发阶段 开发阶段由四个阶段组成:概要设计、详细设计、实现、测试(两个设计) 5、维护 维护包括四个方面: (1)改正性维护:在软件交付使用后,由于开发测试时的不彻底、不完全、必然会有一部分隐藏的错误被带到运行阶段,这些隐藏的错误在某些特定的使用环境下就会暴露。 (2)适应性维护:是为适应环境的变化而修改软件的活动。 (3)完善性维护:是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。 (4)预防性维护:是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。

可以知道软件维护是开发以外的另一个阶段! 解析:内容来自https://www.cnblogs.com/137point5/p/13701119.html 软件生命周期开发的五个阶段: 第一阶段:计划和需求分析(Planning and Requirement Analysis) 第二阶段:设计项目构架(Project Archiecture) 第三阶段:开发和编程(Development and coding) 第四阶段:测试(Testing) 第五阶段:部署(Deployment)

(4)在数据库系统中,用户所见的数据模式为(B)

A) 概念模式 B)外模式 C)内模式 D)物理模式 解释: 内容来自:

https://blog.csdn.net/liaohong940908/article/details/51906697/?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%94%A8%E6%88%B7%E6%89%80%E8%A7%81%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%BC%8F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-51906697.first_rank_v2_pc_rank_v29

外模式(External Schema)

定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

理解:

① 一个数据库可以有多个外模式;

② 外模式就是用户视图;

③ 外模式是保证数据安全性的一个有力措施。

外模式(External Schema)

是用户的数据视图,亦即是用户所见到的模式的一个部分,它由概念模式推导而出,概念模式给出了系统全局的数据描述而外模式则给出每个用户的局部描述。一个概念模式可以有若干个外模式,每个用户只关心与它有关的模式,这样可以屏蔽大量无关信息且有利于数据保护,因此对用户极为有利。在一般的DBMS中都提供有相关的外模式描述语言(外模式DDL)。

(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和(D)

A) 编码设计 B) 测试阶段 C)运行阶段 D)物理设计 解释:

数据库设计分为四个阶段: 1)需求分析阶段:编写软件规格说明书及初步的用户手册,提交评审。 2)概念设计(概要设计)阶段:E-R图设计阶段。 3)逻辑设计阶段:主要是E_R转换成关系模式。 4)物理设计阶段。

参考:

https://blog.csdn.net/k3108001263/article/details/87073831https://blog.csdn.net/Edraw_Max/article/details/108871488?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161572798416780262541683%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161572798416780262541683&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-108871488.first_rank_v2_pc_rank_v29&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1%E7%9A%84%E5%9B%9B%E4%B8%AA%E9%98%B6%E6%AE%B5https://blog.csdn.net/sinat_21312425/article/details/51105252?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161572798416780262541683%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161572798416780262541683&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-5-51105252.first_rank_v2_pc_rank_v29&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1%E7%9A%84%E5%9B%9B%E4%B8%AA%E9%98%B6%E6%AE%B5

(6)设有如下三个关系表 在这里插入图片描述

下列操作中正确的是(C)

A)T=R∩S B)T=R∪S

C)T=R×S D)T=R/S 这个不懂,猜的~

(7)下列叙述中正确的是(D)

A)一个算法的空间复杂度大,则其时间复杂度也必定大

B)一个算法的空间复杂度大,则其时间复杂度必定小

C)一个算法的时间复杂度大,则其空间复杂度必定小

D)上述三种说法都不对 解释:

内容来自:

https://blog.csdn.net/sunstars2009918/article/details/6755965?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161572840116780262570816%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161572840116780262570816&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-2-6755965.first_rank_v2_pc_rank_v29&utm_term=%E7%AE%97%E6%B3%95%E7%9A%84%E7%A9%BA%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E5%92%8C%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E7%9A%84%E5%85%B3%E7%B3%BB

有“必定”的话不对。因为对一些特殊情况存在特例有高的时空复杂度或同时为低的时空复杂度。但对一般情况下给定存储空间如给定65535K的内存但不限定时间时,就存在时间空间的负相关关系。对于既不限定时间,也不限定空间的程序,算法的时间复杂度和空间复杂度可以同时很大,也可以同时很小。如T(n)=O(n)且S(n)=O(1)的情况比如一个for(i=0;i0) B)(x-y

相关推荐: