• 276.00 KB
  • 2022-04-22 11:52:18 发布

《计算机软件技术基础》习题及参考答案.doc

  • 32页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'习题11.下列描述中正确的是。A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合2.数据的存储结构是指。A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示3.数据结构中,与所使用的计算机无关的是数据的______。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构4.以下数据结构中不属于线性数据结构的是______。A.队列B.线性表C.二叉树D.栈5.在计算机中,算法是指______。A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法6.在下列选项中,哪个不是一个算法一般应该具有的基本特征______。A.确定性B.可行性C.无穷性D.拥有足够的情报7.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.以上三种描述都不对8.算法分析的目的是______。A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进9.算法的时间复杂度是指______。A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数10.算法的空间复杂度是指______。A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间11.算法一般都可以用哪几种控制结构组合而成______。A.循环、分支、递归B.顺序、循环、嵌套C.循环、递归、选择D.顺序、选择、循环12.下列对于线性表的描述中正确的是。A.存储空间不一定是连续,且各元素的存储顺序是任意的B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的13.线性表的顺序存储结构和线性表的链式存储结构分别是______。A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构C.随机存取的存储结构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构-32- 14.下列关于栈的描述中错误的是。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针15.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。A.ABCEDB.DBCEAC.CDABED.DCBEA16.下列关于栈的叙述中正确的是______。A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表17.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表18.栈和队列的共同点是______。A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点19.用链表表示线性表的优点是______。A.便于插入和删除操作B.数据元素的物理顺序与逻辑顺序相同C.花费的存储空间较顺序存储少D.便于随机存取20.在单链表中,增加头结点的目的是______。A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现21.在一棵二叉树上第5层的结点数最多是______。A.8B.16C.32D.1522.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为______。A.349B.350C.255D.35123.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。A.cedbaB.acbedC.decabD.deabc24.对长度为N的线性表进行二分查找,在最坏的情况下所需要的比较次数为。A.log2nB.n/2C.nD.n+125.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/226.希尔排序法属于哪一种类型的排序法______。A.交换类排序法B.插入类排序法C.选择类排序法D.建堆排序法27.下面描述中,符合结构化程序设计风格的是______。A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.模块只有一个入口,可以有多个出口C.注重提高程序的执行效率D.不使用goto语句28.下面概念中,不属于面向对象方法的是______。A.对象B.继承C.类D.过程调用29.结构化程序设计主要强调的是______。A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性30.对建立良好的程序设计风格,下面描述正确的是______。-32- A.程序应简单、清晰、可读性好B.符号名的命名要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无31.下面对对象概念描述错误的是______。A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通讯靠消息传递D.操作是对象的动态性属性  32.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。A.调用语句B.命令C.口令D.消息33.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考参考答案:1.D2.D3.C4.C5.C6.C7.C8.D9.C10.D11.D12.B13.B14.C15.D16.D17.C18.C19.A20.A21.B22.B23.A24.A25.B26.B27.A28.D29.B30.A31.A32.D33.C-32- 第2章软件工程基础习题2一、单项选择题:1.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。A.可行性分析B.需求分析C.详细设计D.程序编码2.在软件开发中,下面任务不属于设计阶段的是______。A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模型3.结构化程序设计主要强调的是______。A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性4.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。A.概要设计B.详细设计C.可行性分析D.需求分析5.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。A.控制流B.加工C.数据存储D.源和潭6.软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及______。A.阶段性报告B.需求评审C.总结D.都不正确7.下面不属于软件工程的3个要素的是______。A.工具B.过程C.方法D.环境8.程序流程图(PFD)中的箭头代表的是______。A.数据流B.控制流C.调用关系D.组成关系9.检查软件产品是否符合需求定义的过程称为______。A.确认测试B.集成测试C.验证测试D.验收测试10.下列工具中属于需求分析常用工具的是______。A.PADB.PFDC.N−SD.DFD11.下面不属于软件设计原则的是______。A.抽象B.模块化C.自底向上D.信息隐蔽12.信息隐蔽的概念与下述哪一种概念直接相关______。A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度13.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。-32- 第2章软件工程基础A.详细设计B.需求分析C.总体设计D.编程调试14.软件调试的目的是______。A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能15.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法16.下列叙述中,不属于软件需求规格说明书的作用的是______。A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析17.在数据流图(DFD)中,带有名字的箭头表示______。A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分18.视图设计一般有3种设计次序,下列不属于视图设计的是______。A.自顶向下B.由外向内C.由内向外D.自底向上19.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指______。A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程20.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为______。A.PAD图B.N−S图C.结构图D.数据流图21.需求分析阶段的任务是确定______。A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能22.下列不属于结构化分析的常用工具的是______。A.数据流图B.数据字典C.判定树D.PAD图23.软件开发的结构化生命周期方法将软件生命周期划分成______。A.定义、开发、运行维护B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计24.在软件工程中,白盒测试法可用于测试程序的内部结构。此方法将程序看作是______。A.循环的集合B.地址的集合C.路径的集合D.目标的集合-32- 第2章软件工程基础二、填空题:1.软件是程序、数据和_________的集合。2.软件工程研究的主要内容包括:__________技术和软件工程管理。3.数据流图的类型有_________和事务型。4.Jackson方法是一种面向_________的结构化方法。5.软件开发环境是全面支持软件开发全过程的_______的集合。6.软件调试分为静态调试和动态调试,_________是主要的调试手段。7.软件测试过程包括单元测试、集成测试、_________和系统测试。8.按功能来分,软件测试技术分为__________和__________。参考答案:一、选择题1.D2.D3.B4.C5.A6.B7.D8.A9.A10.D11.C12.B13.B14.B15.B16.D17.C18.B19.B20.B21.D22.D23.A24.C二、填空题1.相关文档2.软件开发3.变换型4.数据结构5.软件工具6.静态调试7.确认测试8.白盒测试、黑盒测试-32- 第2章软件工程基础习题3一、单项选择题1.数据库系统的核心是______。A.数据模型B.数据库管理系统C.软件工具D.数据库2.下列叙述中正确的是______。A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致3.下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。A.内模式B.外模式C.概念模式D.逻辑模式4.下述关于数据库系统的叙述中正确的是______。A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据5.关系表中的每一横行称为一个______。A.元组B.字段C.属性D.码6.数据库设计包括两个方面的设计内容,它们是______。A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计7.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是______。A.数据库系统B.文件系统C.人工管理D.数据项管理8.用树形结构来表示实体之间联系的模型称为______。A.关系模型B.层次模型C.网状模型D.数据模型9.关系数据库管理系统能实现的专门关系运算包括______。A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表10.数据的存储结构是指______。A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据-32- 第2章软件工程基础11.索引属于______。A.模式B.内模式C.外模式D.概念模式12.在关系数据库中,用来表示实体之间联系的是______。A.树结构B.网结构C.线性表D.二维表13.将E−R图转换到关系模式时,实体与联系都可以表示成______。A.属性B.关系C.键D.域14.按条件f对关系R进行选择,其关系代数表达式为______。A.B.C.D.15.数据库概念设计的过程中,视图设计一般有三种设计次序,以下各项中不对的是______。A.自顶向下B.由底向上C.由内向外D.由整体到局部16.SQL语言又称为______。A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言17.数据处理的最小单位是______。A.数据B.数据元素C.数据项D.数据结构18.下列有关数据库的描述,正确的是______。A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件19.单个用户使用的数据视图的描述称为______。A.外模式B.概念模式C.内模式D.存储模式20.在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有______。A.数据无冗余B.数据可共享C.专门的数据管理软件D.特定的数据模型二、填空题1.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与“项目”的联系属于___________的联系。2.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构不变,因此基于逻辑结构的应用程序不必修改,称为____________。3.在关系模型中,把数据看成一个二维表,每个二维表称为一个__________。4.关系模型的完整性规则是对关系的某种约束,包括实体完整性、_______________和自定义完整性。5.数据库系统中实现各种数据管理功能的核心软件称为_______________。三、写出SQL语句1.建立student表。2.输入一行数据。-32- 第2章软件工程基础3.查询student表中所有信息。4.查询student表中学号,姓名,性别信息。5.查询student表中女生的信息。6.删除student表。参考答案:一、选择题1.B2.C3.A4.A5.A6.A7.A8.B9.B10.B11.C12.D13.B14.C15.D16.C17.C18.C19.C20.B二、填空题1.一对多2.逻辑独立性3.关系4.参照完整性5.数据库管理系统三、1.CREATETABLEstudent(学号CHAR(5)NOTNULL,姓名CHAR(8)NOTNULL,性别CHAR(2),CONSTRAIANTC1CHECK(性别IN(’男’,’女’)));2.INSERTINTOstudentVALUES(‘98010’,’张三’,’男’);3.SELECT*FROMstudent;4.SELECT学号,姓名,性别FROMstudent;5.SELECT*FROMstudentWHILE性别=’女’;6.DROPTABLEstudent;-32- 第2章软件工程基础习题4一、单项选择题1.计算机网络最突出的优点是。A.运算速度快B.内存容量大C.精度高D.共享资源2.所谓媒体是指。A.各种信息的编码B.计算机屏幕显示的信息C.计算机的输入输出信息D.表示和传播信息的载体3.在多媒体计算机系统中,CD-ROM属于。A.表现媒体B.存储媒体C.表示媒体D.感觉媒体4.在多媒体计算机系统中,打印机属于。A.表现媒体B.存储媒体C.表示媒体D.感觉媒体5.十进制数29.375的二进制数为______。A.11011.101B.11101.011C.111101.011D.111011.1016.二进制数11101.01的十六进制数为______。A.1D.4B.1D.1C.1D.2D.1D.01二、填空题1.计算机网络按通信距离来划分,可以分为和。2.局域网中常用的传输介质有、、、等。3.微型机对环境条件的要求主要有、、、等方面。4.计算机病毒是。5.计算机病毒的主要特点是、、、等。参考答案:一、选择题1.D2.D3.B4.A5.B6.A二、填空题1.广域网、局域网2.双绞线、同轴电缆、光纤、微波3.环境温度、环境湿度、洁净度、电源4.一种人为的特制的具有自复制能力的小程序,通过非授权入侵而隐藏在可执行程序和数据文件中,影响和破坏正常程序的执行和数据安全5.传染性、隐蔽性、可激发性、灵活性-32- 第2章软件工程基础习题5一、单项选择题1.以下______不是C语言的特点。A.语言的表达能力强B.语法定义严格C.数据结构系统化D.控制流程结构化2.C编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的是______。A.编辑和编译B.编译和连接C.连接和运行D.编辑和运行3.下面描述中,不正确的是______。A.C程序的函数体由一系列语句和注释组成。B.注释内容不能单独写在一行上。C.C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明;D.scanf和printf是标准库函数而不是输入和输出语句。4.下面描述中,正确的是______。A.主函数中的花括号必须有,而子函数中的花括号是可有可无的。B.一个C程序行只能写一个语句。C.主函数是程序启动时唯一的入口。D.函数体包含了函数说明部分。二、写出一个C程序的构成。三、上机运行本章例题,掌握系统环境的上机方法和步骤。参考答案:一、选择题1.B2.D3.B4.C略-32- 第2章软件工程基础习题6一、选择题1.以下变量名全部合法的是。A.ABC、L10、a_b、_a1B.?123、print、*p、a+bC._12、Zhang、*p、11FD.Li_Li、P、for、1012.在C语言中规定只能由字母、数字和下划线组成标识符,且。A.第一个字符必须为下划线B.第一个字符必须为字母C.第一个字符必须为字母或数字D.第一个字符不能为数字3.在C语言中int,short和char在内存中所占位数。A.均为16位(2个字节)B.由用户使用的机器的字长确定C.由用户在程序中定义D.是任意的4.下列常数中不能作为C的常量的是。A.0xA5B.2.5e−2C.3e2D.05825.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是。A.0至255B.0至65535C.−256至255D.−32768至327676.下列可以正确表示字符型常数的是。A."a"B."t"C."n"D.2971−7.以下错误的转义字符是。A."\"B.""C."81"D.""8.以下均是C的合法常量的选项是。A.099、−026、0x123、e5B.0034、0x102、13e−3、−0.78C.−0x22d、06f、8e2.3、eD..e7、0xffff、12%、2.5e1.29.以下转义字符全部合法的选项是。A."n"、"\"、"x35"、"""B."t"、"1010"、"v"、"123"C."x110"、"b"、"g"、"xxx"D."rr"、"r"、"55"、"xff"10、以下选项中字符串和字符常量都正确的是。-32- 第2章软件工程基础A."chr"和"a"B."123"和""C."string"和"S"D."678"和""11.C语言中字符型(char)数据在内存中的形式存储是。A.原码B.补码C.反码D.ASCII码12.以下选项中属于C语言的数据类型是。A.复数型B.逻辑型C.双精度型D.集合型13.C语言中整数−8在内存中的存储形式是。A.1111111111111000B.1000000000001000C.0000000000001000D.111111111111011114.字符串"\22a,0n"的长度是。A.8B.7C.6D.5二、填空题1."a"在内存中占个字节,"a"占个字节。2.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是。#include“stdio.h”main(){charcl="A",c2="Y";printf("%d,%dn",c1,c2);}三、字符常量和字符串常量有什么区别?参考答案:一、选择题1.A2.D3.B4.D5.B6.B7.C8.C9.A10.D11.D12.C13.A14.B二、填空题1.22.65、089略-32- 第2章软件工程基础习题7一、单项选择题1.在C语言中运算符的优先级高低的排列顺序是。A)关系运算符算术运算符赋值运算符B)算术运算符赋值运算符关系运算符C)赋值运算符关系运算符算术运算符D)算术运算符关系运算符赋值运算符2.在逻辑运算中逻辑运算符按以下优先次序排列。A)||&&!B)!||&&C)!&&||D)&&!||3.以下正确的选项是。A)10++B)(x+y)−C)++(a1−b2)D)(d++)+(d++)+(d++)4.正确的赋值表达式是。A)a=10+b−−=9+kB)(a=16*9,b+5),b−3C)a=b=c−−D)a=b+7=a−b5.C语言并不是非常严格的算法语言,在以下关于C语言的不严格的叙述中,错误的说法是。A.任何不同数据类型都不可以同用B.有些不同类型的变量可以在一个表达式中运算C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D.同一个运算符号在不同的场合可以有不同的含义6.已知:chara;intb;floatc;doubled;执行语句c=a+b+c+d;后,变量c的数据类型是。A.intB.charC.floatD.double7.已知inti,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是。A.6B.12C.30D.368.已知inti=5;执行语句i+=++i;i的值是。A.10B.11C.12D.A,B,C答案都不对9.已知inti;floatf;正确的语句是。A.(intf)%iB.int(f)%iC.int(f%i)D.(int)f%i10.已知:charc="A";inti=1,j;执行语句j=!c&&i++;则i和j的值是。A.1,1B.1,0C.2,1D.2,0-32- 第2章软件工程基础11.已知:intx=1,y=2,z;则执行:z=x>y?++x:++y;则z的值为。A.1B.2C.3D.412.已知:intx=1,y; 则:y=++x*++x的结果为。A.y=9B.y=6C.y=1D.表达式是错误的13.已知“inta=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a的值为。A.0B.1C.4D.514.已知:charw;intx;floaty;doublez;则表达式w*x+z−y结果的类型是。A.floatB.CharC.intD.double15.已知:intx;则使用逗号运算的表达式“(x=4*5,x*5),x+25”的结果为①,变量x的值为②。①A.20B.100C.表达式不合法D.45②A.20B.100C.125D.4516.执行下面语句后x的值为。inta=14,b=15,x;charc="A";x=((a&b)&&(c<"a"));A.TRUEB.FALSEC.0D.1二、填空题1.表达式32+"A"−2/3*5的值是,a=b=c=6+2/5的值是,逗号表达式b=6,18+(b+=4)*3的值是。2.已知a=3,b=−4,c=5,表达式!(b>c)+(b!=a)||(a+b)&&(b−c)的值是。3.今有a=3,b=−4,c=5,表达式a++−c+b++的值是,++a−c+(++b)的值是。4.关系表达式的运算结果是______值。5.逻辑运算符!是_______运算符,其结合性是由_______。6.表达式的运算对象可以是常数、变量和_______。7.已知charc;表达式(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)&&c==57的值为1,则变量c的值可以是。8.已知:a=15,b=240;则表达式(a&b)&b||b的结果为。三、C语言中如何判断“真”和“假”?系统如何判断一个量的“真”和“假”?四、C语言中如何区分表达式和表达式语句?分别在什么情况下使用?参考答案:一、选择题1.D2.C3.C4.C5.A6.C7.D8.C9.D10.D11.C12.B13.A14.D15.D、A16.D二、填空题1.97、6、482.13.-6、-44.逻辑5.逻辑非、右结合性6.表达式7.278.1略-32- 第2章软件工程基础习题8一、输入四个整数,要求按大小顺序输出,请编程序。二、输入正整数m和n,求它们的最大公约数和最小公倍数。三、企业发放的奖金根据利润提成。利润(I)低于或等于10万元的,奖金可提成10%;利润高于10万元,低于20万元(100000〈I〈=200000〉时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;200000〈I〈=400000时,低于20万元的部分仍按上述办法提成(下同),高于20万元的部分按5%提成;40000〈I〈=600000时,高于40万元的部分按3%提成;600000〈I〈=1000000时,高于60万元的部分按1.5%提成;I〉1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发奖金数。要求:①用if语句编程序;②用switch语句编程序。四、求:五、输入一行字符,分别统计出其中英文字符、空格、数字和其它字符的个数。参考答案:一、main(){inta,b,c,d,t;scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);if(a>b){t=b;b=a;a=t;}if(a>c){t=c;c=a;a=t;}if(a>d){t=d;d=a;a=t;}if(b>c){t=c;c=b;b=t;}if(b>d){t=d;d=b;b=t;}if(c>d){t=d;d=c;c=t;}printf(“%d,%d,%d,%d”,&a,&b,&c,&d);}-32- 第2章软件工程基础二、输入正整数m和n,求它们的最大公约数和最小公倍数。(辗转相除法)main(){intm,n,r,k,l;printf(“请输入两个正整数:“);scanf(“%d,%d”,&m,&n);l=m*n;if(m100000&&I<=200000)j=100000*0.1+(I-100000)*0.075;if(I>200000&&I<=400000)j=100000*0.1+100000*0.075+(I-200000)*0.05;if(I>400000&&I<=600000)j=100000*0.1+100000*0.075+200000*0.05+(I-400000)*0.03;if(I>600000&&I<=1000000)j=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015;if(I>1000000)j=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000)*0.015+(I-1000000)*0.01;Printf(“%d”,j);}-32- 第2章软件工程基础②main(){floatb,b1,b2,b4,b6,b10;intc;longinti;b1=100000*0.1;b2=b1+100000*0.075;b4=b2+200000*0.05;b6=b4+200000*0.03;b10=b6+400000*0.015;scanf(“%ld”,&i);c=i/100000;if(c>10)thenc=10switch(c){case0:b=i*0.1;break;case1:b=b1+(i-100000)*0.075;break;case2:case3:b=b2+(i-200000)*0.05;break;case4:case5:b=b4+(i-400000)*0.03;break;case6:case7:case8:case9:b=b6+(i-600000)*0.015;break;case10:b=b10+(i-1000000)*0.01;}printf(“%f”,b);}四、main(){floatk,s1=0,s2=0,s3=0;inti;intn1=100,n2=50,n3=10;for(i=1;i<=n1;i++)s1=s1+i;for(i=1;i<=n2;i++)s2=s2+i*i;-32- 第2章软件工程基础for(i=1;i<=n3;i++){k=1/(float)i;s3=s3+k;}printf(“%f”,s1+s2+s3);}五、#includemain(){charc;intletter=0,space=0,digit=0,other=0;printf(“请输入一行字符:n”);while((c=getchar())!=’n’){if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)letter++;elseif(c==’’)space++;elseif(c>=’0’&&c<=’9’)digit++;elseother++;}printf(“字母数%d,空格数%d,数字数%d,其它字符数%d”,letter,space,digit,other);}-32- 第2章软件工程基础习题9一、已有变量定义doublea=5.0;intn=5;和函数调用语句mypow(a,n);,用以求a的n次方。请编写doublemypow(doublex,inty)函数。doublemypow(doublex,inty){}二、以下程序的功能是应用下面的近似公式计算e的n次方。函数f1用来计算每项分子的值;函数f2用来计算每项分母的值。请编写f1和f2函数。floatf2(intn){}floatf1(intx,intn){}main(){floatexp=1.0;intn,x;printf("Inputanumber:");scanf("%d",&x);printf("%dn",x);exp=exp+x;for(n=2;n<=19;n++)exp=exp+f1(x,n)/f2(n);printf("nTheisexp(%d)=%8.4fn",x,exp);}运行结果:Inputanumber:3Theisexp(3)=20.0855三、求以下数列前20项之和。四、求之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n为5),n由键盘输入。五、用迭代法求:-32- 第2章软件工程基础的值,求平方根的迭代公式为:要求前后两次求出的x的差的绝对值小于10-5。六、写一函数,输入一行字符,将此字符串中最长的单词输出。参考答案:一、doubleb=1;intI;for(i=1;i<=y;i++)b=b*x;return(b);二、(1)floatb=1;inti;for(i=1;i<=n;i++)b=b*x;return(b);(2)ints=-,t=1,i;for(i=1;i<=n;i++){t=t*I;s=s+t;}return(s);三、main(){inti,n=20;floata=2,b=1,s=0,t;for(i=1;i<=n;i++){s=s+a/b;-32- 第2章软件工程基础t=a;b=t;a=a+b;}printf(“%d”,s);}四、main(){longinta,n,i,x=0,y=0;scanf(“%d,%d”,&a,&n);for(i=1;i<=n;i++){x=x+a;a=a*10;y=x+y;}printf(“%d”,y);}五、#includemain(){floata,x0,x1;scanf();x0=a/2;x1=(x0+a/x0)/2do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf(“%f”,a,x);}六、略-32- 第2章软件工程基础习题10一、编写程序,实现gets()函数的功能。二、编写程序,实现puts()函数的功能。三、编写程序,判断给定字符串是否回文。回文是指顺读和倒读都一样的字符串。四、编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排。五、编写程序,任意输入5个字符串存放到2维数组中,按字符串的长度从短到长顺序输出它们。参考答案:四、#include“stdio.h”#include“string.h”main(){charstr[100],t;intlen,i,j;printf(“输入一个字符串”);scanf(“%s”,str);len=strlen(str);for(i=0,istr[j]){t=str[i];str[i]=str[j];str[j]=t;}printf(“排序后字符串:%sn”,str);}略-32- 第2章软件工程基础习题11一、用带参数的宏定义来实现输入两个整数,求出它们相除后的余数。二、请写出下面程序的输出结果。(1)#defineF(a,t)a*t*t/2main(){floatx=2.2,y=1.5,z;z=F(x+y,x−y);printf(“F=%f”,z);}(2)#defineS(a,b)a+bmain(){intx;x=S(3,2)*S(5,6);printf(“%dn”,x);}三、要求从3个数中找出其中最大的数,试分别用函数和带参数的宏来实现。参考答案:一、#defineCHU(A,B)A%Bmain(){inta,b;scanf(“%d,%d”,&a,&b);printf(“%d”,CHU(a,b);}二、(1)0.9065(2)55三、(1)用函数实现main(){inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);-32- 第2章软件工程基础printf(“%d”,max(a,b,c));}max(intx,inty,intz){intt;t=c>y?x:y;return(t>z?t:z);}(2)用带参的宏实现#defineMAX(a,b)((a)>(b)?(a):(b))main(){inta,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“%d”,MAX(MAX(a,b),c));}-32- 第2章软件工程基础习题12一、写一函数,其功能是交换两个变量x、y的值。编程序实现对数组a[100],b[100]调用此函数,交换a、b中具有相同下标的数组元素的值,且输出交换后的a,b数组。二、用数组方案和指针方案分别编写函数insert(s1,s2,f),其功能是在字符串s1中的指定位置f处插入字符串s2。三、用指针编写比较两个字符串s和t的函数strcmp(s,t)。要求st时返回+1。四、分析并给出下面程序的运行结果:#includemain(){inta[10],b[10],*pa,*pb,i;pa=a;pb=b;for(i=0;i<3;i++,pa++,pb++){*pa=i;*pb=2*i;printf("%dt%dn",*pa,*pb);}printf("n");pa=&a[0];pb=&b[0];for(i=0;i<3;i++){*pa=*pa+i;*pb=*pb+i;printf("%dt%dn",*pa++,*pb++);}}五、输入一行字符,将之中的每个字符从小到大排列后输出。参考答案:一、#include“stdio”voidinsert(int*x,int*y){intm;m=*x;*x=*y;*y=m;}main(){inti,a[100],b[100];-32- 第2章软件工程基础for(i=0;i<100;i++)insert((a+i),(b+i));for(i=0;i<100;i++)printf(“%5dn”,a[i]);for(i=0;i<100;i++)printf(“%5d”,b[i]);}略-32- 第2章软件工程基础习题13一、分析下列程序执行结果。#includemain(){staticstructs1{charc[4],*s;}s1={"abc","def"};staticstructs2{char*cp;structs1ss1;}s2={"ghi",{"jkl","mno"}};printf("%c%cn",s1.c[0],*s1.s);printf("%s%sn",s1.c,s1.s);printf("%s%sn",s2.cp,s2.ss1.s);printf("%s%sn",++s2.cp,++s2.ss1.s);}二、成绩排序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。三、写出以下程序的运行结果。#includemain(){union{chars[2];inti;}g;g.i=0x4142;printf("g.i=%xn",g.i);printf("g.s[0]=%xtg.s[1]=%xn",g.s[0],g.s[1]);g.s[0]=1;g.s[1]=0;printf("g.i=%xn",g.i);}-32- 第2章软件工程基础四、现在有教师(姓名、单位、住址、职称)和学生(姓名、班级、住址、入学成绩)的信息。请输入10名教师和学生的信息后,按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输出姓名、单位、住址和职称,对于学生要输出姓名、班级、住址和入学成绩。请编程实现。参考答案:一、adabcdefghimnohino二、#defineN100structstudent{charnum[10];floatscore;intNO;}stud[N];voidswap(structstudent*p,structstudent*q){structstudentt;inti;for(i=0;i<10;i++){t.num[i]=p->num[i];p.num[i]=q->num[i];q.num[i]=t->num[i];}t.score=p->score;p->score=q->score;q->score=t.score;}main(){inti,j,a[N];structstudent*p,*q;printf(“输入学生学号和成绩n”);for(i=0;iscore<(q+1)->score)swap(q,(q+1));p=stud;p->NO=1;for(i=0;a[0]=1;pscore>(p+1)->score){(p+1)->NO=p->NO+1;i++;a[i]=1;}else{(p+1)->NO=p->NO;a[i]++;}p=stud;for(i=0;;i++){if(a[i]=0)break;else{k=a[i]%10;printf(“%d%f%d”,p->NO,p->score,a[i]);for(j=0;jnum);}if(k!=0)printf(“n”);p=p+a[i];}}三、g.i=4142g.s[0]=41g.s[1]=42g.i=0100四、略-32- 第2章软件工程基础习题14一、单项选择题1.在进行文件操作时,写文件的一般含义是________。A.将计算机内存中的信息存入磁盘B.将磁盘中的信息存入计算机内存C.将计算机CPU中的信息存入磁盘D.将磁盘中的信息存入计算机CPU2.C语言中标准输入文件stdin是指________。A.键盘B.显示器C.鼠标D.硬盘3.系统的标准输出文件stdout是指________。A.键盘B.显示器C.软盘D.硬盘4.在高级语言中对文件操作的一般步骤是________。A.打开文件—操作文件—关闭文件B.操作文件—修改文件—关闭文件C.读写文件─打开文件─关闭文件D.读文件—写文件—关闭文件5.以下可作为函数fopen中第一个参数的正确格式是________。A.c:usertext.txtB.c"usertext.txtC."c:usertext.txt"D."c:\user\text.txt"6.若执行fopen函数时发生错误,则函数的返回值是________。A.地址值B.0C.1D.EOF7.为了显示一个文本文件的内容,在打开文件时,文件的打开方式应当为________。A."r+"B."w+"C."wb+"D."ab+"8.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该是________。A."ab+"B."wb+"C."rb+"D."ab"9.在C语言中,从计算机内存中将数据写入文件中,称为________。A.输入B.输出C.修改D.删除10.C语言可以处理的文件类型是________。A.文本文件和数据文件B.文本文件和二进制文件C.数据文件和二进制文件D.以上答案都不完全11.下列关于文件的结论中正确的是________。A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对文件的操作顺序没有统一规定D.以上三种答案全是错误的12.当顺利执行了文件关闭操作时,fclose函数的返回值是________。A.−1B.TRUEC.0D.113.使用fgetc函数,则打开文件的方式必须是________。A.只写B.追加C.读或读/写D.答案B和C都正确14.若调用fputc函数输出字符成功,则其返回值是________。-32- 第2章软件工程基础A.EOFB.1C.0D.输出的字符15.利用fseek函数可以________。A.改变文件的位置指针B.实现文件的顺序读写C.实现文件的随机读写D.以上答案均正确16.执行fopen函数时,ferror函数的初值是________。A.TRUEB.−1C.1D.0二、填空题1.在C程序中,数据可以以和两种形式的代码存放________。2.若已定义pf是一个FILE类型的文件指针,已知待输出的文本文件的路径和文件名是A:zk04datatxfile.dat;则要使pf指向上述文件的打开语句是________。3.若fp已经正确指向一指定的文件,则将字符变量ch中的字符输出到该文件中,可用的语句有________、________、________和________。4.feof函数可以用于________和________文件,它用来判断即将读入的是否为________,若是,函数返回值为________。三、某班有N个学生,每个学生有5门课的成绩。从键盘输入每个学生的学号、姓名和各门课的成绩,然后计算出每门课全班的平均成绩及每个学生5门课的平均成绩,并将所有这些数据存放在磁盘文件"ABC"中。文件的结构由编程者自己设计。四、从键盘输入一文本文件,将该文本写入磁盘文件disk.txt中,并统计磁盘中文件字母、数字、空白和其它字符的个数,要求:①将统计结果显示到屏幕上;②将输入的文件输出到打印机上;③将统计结果写入磁盘文件total.txt中。五、已知有两个有序的整数文件F和G,请编一程序,将它们合并为一个新的有序文件。参考答案:一、1.A2.A3.B4.A5.C6.B7.A8.B9.B10.B11.B12.C13.C14.D15.D16.D二、1.二进制、ASCII码、字符2.pf=fopen(“A:zk04datatxfile.dat”,”w”);3.fputc(ch,fp);fread(&ch,1,1,fp);fprintf(fp,”%c”,ch);fputs(&ch,fp);4.字符、二进制、文件结束、1略-32-'