版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川省第31次计算机二级考试(C语言)培训资料成都理工大学工程技术学院计算机科学与技术系2009年9月21日目录TOC\o"1-5"\h\z第一部分、软件技术基础资料 -1-C 语 言 部 分-1-基本要求 -1-考试内容 -1-软件工程基础部分 -4-面向对象程序设计 -4-结构化设计方法 -6-数据结构与算法 -10-算法 -10-数据结构的基本概念 -11-线性表及其顺序存储结构 -12-查找技术 -15-排序技术 -16-数据库系统的基本概念 -16-数据模型 -18-关系代数 -20-数据库设计与管理 -20-第二部分、C考试真题 -23-真题一 -23-真题二 -39-真题三 -61-真题四 -82-第三部分、上机考试真题示例 -103-四川省第29次等级考试(第一套) -103-四川省第29次等级考试(第二套) -107-四川省第29次等级考试(第三套) -110-四川省第28次等级考试(第一套) -113-四川省第28次等级考试(第二套) -116-四川省第27次等级考试(第一套) -119-四川省第27次等级考试(第二套) -121-四川省第27次等级考试(第三套) -123-第一部分、软件技术基础资料L1C语言部分基本要求.熟悉TURBOC集成环境。.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。.掌握程序设计中简单的数据结构和算法。.TURBOC的集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。考试内容一、C语言的结构.程序的构成,MAIN函数和其他函数。.头文件,数据说明,函数的开始和结束标志。.源程序的书写格式.C语言的风格。二、数据类型及其运算.C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。.C运算符的种类、运算优先级和结合性。.不同类型数据间的转换与运算。.C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。三、基本语句.表达式语句,空语句,复合语句。.数据的输入和输出,输入输出函数的调用。.复合语句。.语句标号的使用。四、选择结构程序设计.用if语句实现选择结构。.用switch语句实现多分支选择结构。.选择结构的嵌套。五、循环结构程序设计.for循环结构。.while和dowhile循环结构。.continue语句和break语句。.循环的嵌套。衣数组的定义和引用.一维数组和多维数组的定义、初始化和引用。.字符串与字符数组。七、函数.库函数的正确调用。.函数的定义方法。.函数的类型和返回值。.形式参数与实在参数,参数值的传递。.函数的正确调用,嵌套调用,递归调用。.局部变量和全局变量。.变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。.内部函数与外部函数。人、编译预处理L宏定义:不带参数的宏定义;带参数的宏定义。.“文件包含”处理。九、指针.指针与指针变量的概念,指针与地址运算符。.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据。.用指针作函数参数。.返回指针值的指针函数。.指针数组,指向指针的指针,MAIN函数的命令行参数。十、结构例即“结构,与共用体(即“联合).结构体和共用体类型数据的定义方法和引用方法。.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。十一、位运算.位运算符的含义及使用。.简单的位运算。十二、文件操作只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。L文件类型指针(FILE类型指针)。.文件的打开与关闭(fopen,fclose)。.文件的读写(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。1.2软件工程基础部分面向对象程序设计计算机软件是包括程序、数据及相关文档的完整集合。软件的特点包括:软件是一种逻辑实体;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素。软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。软件危机主要表现在成本、质量、生产率等问题。软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包括3个要素:方法、工具和过程。软件工程过程是把软件转化为输出的一组彼此相关的资源和活动,包含4种基本活动:(1)P一一软件规格说明;2)D一一软件开发;3)C 软件确认;(4)A一一软件演进。软件周期:软件产品从提出、实现、使用维护到停止使用退役的过程。软件生命周期三个阶段:软件定义、软件开发、运行维护,主要活动阶段是:(1)可行性研究与计划制定;(2)需求分析;(3)软件设计;(4)软件实现;(5)软件测试;(6)运行和维护。软件工程的目标和与原则:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境。软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。结构化设计方法软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。结构设计:定义软件系统各主要部件之间的关系。数据设计:将分析时创建的模型转化为数据结构的定义。接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。过程设计:把系统结构部件转换成软件的过程描述。从工程管理角度来看:概要设计和详细设计。软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准。在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合。软件概要设计的基本任务是:(1)设计软件系统结构;(2)数据结构及数据库设计;(3)编写概要设计文档;(4)概要设计文档评审。模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。典型的数据流类型有两种:变换型和事务型。变换型系统结构图由输入、中心变换、输出三部分组成。事务型数据流的特点是:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。详细设计:是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。常见的过程设计工具有:图形工具(程序流程图)、表格工具(判定表)、语言工具(PDL)o软件测试软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:发现错误而执行程序的过程。软件测试方法:静态测试和动态测试。静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。动态测试:是基本计算机的测试,主要包括白盒测试方法和黑盒测试方法。白盒测试:在程序内部进行,主要用于完成软件内部操作的验证。主要方法有逻辑覆盖、基本基路径测试。黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错,用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法、因果图等。软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。程序的调试程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。软件调试可分表静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试。主要调试方法有:(1)强行排错法;(2)回溯法;(3)原因排除法。.3数据结构与算法算法算法:是指解题方案的准确而完整的描述。算法不等于程序,也不等于计算机方法,程序的编制不可能优于算法的设计。算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括;(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,取能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。指令系统:一个计算机系统能执行的所有指令的集合。基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。算法的控制结构:列举法、归纳法、递推、递归、减斗递推技术、回溯法。算法复杂度:算法时间复杂和算法空间复杂度。算法时间复杂度是指执行算法所需要的计算工作量。算法空间复杂度是指执行这个算法所需要的内存空间。数据结构的基本概念数据结构研究的三个方面:(1)数据集合中和数元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。数据结构是指相互有关联的数据元素的集合。数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。数据的存储结构有顺序、链接、索引等。线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。非线性结构:不满足线性结构条件的数据结构。线性表及其顺序存储结构线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。在复杂线性表中,由若干数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。非空线性表的结构特征:(1)且只有一个根结点a,它无前件;(2)有且只有一个终端点a,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。线性表的顺序储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数元素在存储空间中是按逻辑顺序依次存放的oa的存储地址为:ADR(a)=ADR(a)+(i-1)k,ADR(a)为第一个元素的地址,k代表每个元素占的字节数。顺序表的运算:插入、删除。栈和队列栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈按照“先进后出〃(FILO)或“后进先出〃(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;读栈顶元素是将栈顶元素给一个指定的变量,此时指针无变化。队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。队列是“先进先出"(FIFO)或"后进后出"(LILO)的线性表。队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。线性链表数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。结点由两部分组成:(1)用于存储据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。链式存储方式即可用于表示线性结构,也可用于表示非线性结构。线性链表,HEAD称为头指针,HEAD=NULL(或0)称为空表,如果是两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。线性链表的基本运算:查找、插入、删除。树与二叉树树是一种简单的非线性结构,所有元素之间具有明显的层次特性。在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。二叉树的基本性质:(1)在二叉树的第k层上,最多有2(kl)个结点;(2)深度为m的二叉树最多有2-1个结点;(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;(4)具有n个结点的二叉树,其深度至少为[?n]+l,其中[?n]表示取?n的整数部分;(5)具有n个结点的完全二叉树的深度为[?n]+l;(6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2 n给结点进行编号(k=l,2......n),有以下结论:①若k=l,则结点为根结点,它没有父结点;若k>l,则该结点的父结点编号为INT(k/2);②若2kn,则编号为k的结点左子编号为2k;否则该结点无左子结点(也无右子结点);③若2k+ln,则编号为k的结点的右子结点编号为2k+l;否则该结点无右子结点。满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2个结点深度为m的满二叉树有2-1个结点。完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。二叉树存储结构采用链式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存储。二叉树的遍历:(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树;(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树;(3)后序遍历(LRD),首先遍历左子树,然后访问遍历右子树,最后访问根结点。查找技术顺序查找的使用情况:(1)线性表为无序表;(2)表采用链式存储结构。二分法查找只适用于顺序存储的有序表,对于长度为n的序线性表,最坏情况只需比较?n次。排序技术排序是指将一个无序序列整理成按值的有序表,对于长度为n的有序线性表,最坏情况只需比较?n次。交换类排序法:(1)冒泡排序法,需要比较的次数为n(n-l)/2;(2)快速排序法。插入类排序法:(1)简单插入排序法,最坏情况需要n(n-l)分次比较;(2)希尔排序法,最坏情况需要O(n)次比较。选择类排序法:(1)简单选择排序法,最坏情况需要n(n-l)启次比较;(2)堆排序法,最坏情况需要O(nlogn)次比较。.4数据库系统的基本概念数据:实际上就是描述事物的符号记录。数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。而数据的值给出了符合定型的值,如整型值15。数据库:是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。数据库存放数据是按数据所提供的数据模式存放的,具有集成与共享的特点。数据库管理系统:一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。数据库管理系统功能:1)数据模式定义:即为数据库构建其数据框架;(2)数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段;(3)数据操纵:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算及统计;(4)数据的完整性、安生性定义与检查;(5)数据库的并发控制与故障恢复;(6)数据的服务:如拷贝、转存、重组、性能监测、分析等。为完成以上六个功能,数据库管理系统提供以下的数据语言:(1)数据定义语言:负责数据的模式定义与数据的物理存取构建;(2)数据操纵语言:负责数据的操纵,如查询与增、删、改等;(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。数据语言按其使用方式具有两种结构形式:交互式命令(又称自含型或自主型语言)宿主型语言(一般可嵌入某些宿主语言中)。数据库管理员:对数据库进行规划、设计、维护、监视等的专业管理人员。数据库系统:由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。数据库应用系统:由数据库系统、应用软件及应用界面三者组成。文件系统阶段:提供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的、管理和数据共享的能力。层次数据库与网状数据库系统阶段:为统一与共享数据提供了有力支撑。关系数据库系统阶段数据库系统的基本特点:数据的集成性、数据的高共享性与低冗余性、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。数据库系统的三级模式:(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;(2)外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式;(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。数据库系统的两级映射:(1)概念模式到内模式的映射;(2)外模式到概念模式的映射。数据模型数据模型的概念:是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。E-R模型的基本概念(1)实体:现实世界中的事物;(2)属性:事物的特性;(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。E-R模型三个基本概念之间的联接关系:实体是概念世界中的基本单位,属性有属性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组。E-R模型的图示法:(1)实体集表示法;(2)属性表法;(3)联系表示法。层次模型的基本结构是树形结构,具有以下特点:(1)每棵树有且仅有一个无双亲结点,称为根;(2)树中除根外所有结点有且仅有一个双亲;从图论上看,网状模型是一个不加任何条件限制的无向图。关系模型采用二维表来表示,简称表,由表框架及表的元组组成。一个二维表就是一个关系。在二维表中凡能唯一标识元组的最小属性称为键或码。从所有侯选健中选取一个作为用户使用的键称主键。表A中的某属性是某表B的键,则称该属性集为A的外键或外码。关系中的数据约束:(1)实体完整性约束:约束关系的主键中属性值不能为空值;(2)参照完全性约束:是关系之间的基本约束;(3)用户定义的完整性约束:它反映了具体应用中数据的语义要求。关系代数系统的特点之一是它建立在数据理论的基础之上,有很多数据理论可以表示关系模型的数据操作,其中最为著名的是关系代数与关系演算。关系模型的基本运算:(1)插入(2)删除(3)修改(4)查询(包括投影、选择、笛卡尔积运算)数据库设计与管理数据库设计是数据应用的核心。数据库设计的两种方法:(1)面向数据:以信息需求为主,兼顾处理需求;(2)面向过程:以处理需求为主,兼顾信息需求。数据库的生命周期:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。需求分析常用结构析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式分析系统。用数据流图表达数据和处理过程的关系。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。数据字典是各类数据描述的集合,包括5个部分:数据项、数据结构、数据流(可以是数据项,也可以是数据结构)、数据存储、处理过程。数据库概念设计的目的是分析数据内在语义关系。设计的方法有两:(1)集中式模式设计法(适用于小型或并不复杂的单位或部门);(2)视图集成设计法。设计方法:E-R模型与视图集成。视图设计一般有三种设计次序:自顶向下、由底向上、由内向外。视图集成的几种冲突:命名冲突、概念冲突、域冲突、约束冲突。关系视图设计:关系视图的设计又称外模式设计。关系视图的主要作用:(1)提供数据逻辑独立性;(2)能适应用户对数据的不同需求;(3)有一定数据保密功能。数据库的物理设计主要目标是对数据内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度有效利用存储空间。一般RDBMS中留给用户参与物理设计的内容大致有索引设计、集成簇设计和分区设计。数据库管理的内容:(1)数据库的建立;(2)数据库的调整;(3)数据库的重组;(4)数据库安全性与完整性控制;(5)数据库的故障恢复;(6)数据库监控。第二部分、C考试真题真题一一、选择题(每小题1分,共10分)若有以下说明和语句,且0<=i<10,则c是对数组元素的错误引用。inta[10],*p=a;A*(a+i)Ba[p-a]Cp+lDp[i].现已定义:charb[6],*p=b;选择正确的赋值语句C。Ab=wchinawB*b=wchinawCp=/,chinawD*p=HchinaH.运行下列程序后,全局变量t.x和t.s的正确结果为_Bostructtree{intx;char*s;);fun(structtreet)(t.x=10;t.s=wcomputerw;return(O);main()structtreet;t.x=l;t.s=wminicomputerM;fun(t);printf("%d,%s\n”,t.x,t.s);}A10,computer B^minicomputerC1,computer D10,minicomputer.若fp是指向某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值是—COAOB-lC非零值DNULL.正确的指针数组的描述是一C0Aint(*a)[10]Binta[i][j]Cint**a[10]D指针数组表示一个指针指向数组.如下,哪个是c语言绘图时必须使用的语句—CoA#include<conio.h> Bttinclude<stdio.h>Cgdriver=VGA Dwindow(20,5,50;20);10.main()intx=3,y=2,z=l;printf(M%s=%d\nVx/y&zw,x/y&z);)程序的输出结果是:―BoAx/y&z=OBx/y&z=lCxAy&z=ODxAy&~z=l.定义一个返回值为整型的函数指针变量,下列哪一个是正确的_C_0Aint*p()Bint(*p)[]Cint(*p)()Dintp().main()(intij;do{if(j%5==0)i++;j++;}while(i!=5))程序运行结束后j的值为OA25 B20 C26D2110.若intx=2,y=l,z=0,下列几个表达式的值分别为A。(l)x|y&&z(2)x!=y!=z (3)~x>yA0,1,0B0,1,1C0,0,0D1,1,0二读程序,并选出正确的答案(每空3分,共45分)#include<stdio.h>intfind(char*sl,char*s2)(intt;char*pl,*p2;for(t=0;sl[t];t++){pl=&sl[t];p2=s2;while{*p2&&*p2==*pl)(pl++;P2++;)if(!*p2)return(t);)return-1;)main()(if(find(McisLI:printf(wisw);if(find(Mcisfun","Basic")!=-l)L2:printf(wbasic\n/,);}(11)行LI输出的结果为AoAisBiCcisfun D没有输出(12)行L2输出的结果为D-oABasicBcisfunCbasicD没有输出main()(intw=2,k;for(k=0;k<3;k++)(w=f(w);printf("%d\n",w);}}f(intx)(inty=0;staticz=3;y++;z++;return(x+y+z);}程序结束后,y的值为—B。AOBlC2D3程序结束后,w的值为A20B7C28D13intxl=30,x2=40;main()(intx3=10,x4=20;sub(x3,x4);sub(x2,xl);Ll:printf("%d,%d,%d,%d\n”,x3,x4,xl,x2);}sub(intx,inty)(xl=x;x=y;y=xl;L2:printf("%d,%d\n”,x,y);}LI行输出结果为DoA10,20,30,40 B10,20,40,10C20,10,40,30 D10,20,40,40L2行输出结果为Bo
(16)A10,20B20,10C10,20D20,1040,1010,4010,40(16)A10,20B20,10C10,20D20,1040,1010,4010,4040,10main()intx=l,i=l;for(;x<50;i++)if(x%2!=2){x+=3;continue;}x-=l;print*"%d\n",x);17print*"%d\n",x);17该语句输出为—D18该语句输出为A11B14CIOD12A7B8C9DIOA11B14CIOD12A7B8C9DIO以下程序不用第三个变量实现两个数对调的操作。程序中(19),(20)为BJ21)为B#includ<stdio.h>main()inta,b;scanf("%d,%d"a,b);a= ;(19)b= ;(20)a= ;(21)printf("%d,%d",a,b);(19)Aa+bBa-bCa*bDa/b(20)Aa+bBa-bCb-aDa*b(21)Aa+bBa-bCb*aDa/b#include<stdio.h>voidstringcat(char*s,char*t)(inti=0,j=0;while{*(s+i))i++;while(s[i++]=t[j++]);)main()(chars[]="[23",t3="456";stringcat(s,t);printf(M%s\nw,s);程序运行结果为:D_oA123 B456 C123456 D456123在程序中,若将指针改为数组,stringcat函数的形式为:voidstringcat(chars[],chart[])(inti=0,j=0;while(s[i]!=,\0,)i++;while(s[i++]=t[j++]);}则程序运行后的结果为一C_oA123 B456C123456D456123main()(intx=10,y;y=x++;printf(“%d,%d\n”,(++x,y),y++);}则程序运行后的结果为一B—oA11,11B10,10C10,11D11,10main()structdatainti;floatf;doubled;unionu{charul[5];longu2[2];}ud;};printf(M%d\nM,sizeof(structsata));}程序运行结果为:―C。A27 B25C22 D19三程序填空(每小题2分,共30分).下面程序删除字符串中的所有空格(包括TAB符,回车符、换行符)。请在程序的对应位置处填入。(函数isspace()用于测试字符是否为空格)#include<stdio.h>#include<ctype.h>main()(charstr[81]={rtl23456789”};delspace(str);puts(str);delspace(char*str)(inti,t;charts[81];for(i=0,t=0;str[i]_;i++_)if(!isspace( str[i]))ts[t]=str[i];strcpy(str,ts);)从键盘输入五个字符组成的单词,判断该单词是不是hello,并显示结果。#include<stdio.h>main()(staticcharstr[]={'h','e',T,T,'o'};charstrl[5];inti,flag;for(i=0;i<5;i++)strl[i]=getchar();flag=O;for(i=0;i<5;i++)if(strl[i]!=_str[i]_)(flag=l;break;}if(flag)printf(/zThiswordisnothello");elseprintf(/zThiswordidshello");).以下程序把从键盘输入的字符存放到一个文件中,用作为结束符。请按题意要求填空完善程序。#include<stdio.h>main()(FILE*fp;charch,fname[10];printf(Mlnputthefilename:\n");gets(fname);if(_fp=openf(fname,"w")(32)==NULL)printf(rtcannotopenfile\nH);exit(O);}whiIe(ch=getchar())!='#')fputc(ch,fp_(34));fclose(fp);).该程序是完成文件的换名拷贝操作(类似于DOS的COPY命令)。请将程序补充完善。#include<stdio.h>mainfintargc,char*argv[])(intc;FILE*fprz*fw;if(argc!=3)(puts(H\>Usage:copyfilefilenamelfilenameZ");exit(O);}if((fpr=fopen(_argvl/,r" (35)))==NULL)printf("\>file%sCannotopen\n",argv[l]);exit(l);if((fpr=fopen(argv[2]/_"w"_(36)))==NULL)(printf("\>file%sCannotopen\n",argv[2]);exit(2);}while((c=_getc_(fpr))!=EOF)fputc(c,_fpw);fclose(fpr);fclose(fpw);).该程序是利用折半查找法在一个数组中进行数据检索。当查找到时,给出数据在数组中的位置;查找不到,给出数据不在数组中的信息。请将程序完善。#definen10inta[]={l,2,3,4,5,6,7,8,9,10};charss(x,m)intx,m;{charz;if(x==a[m])z='t';elseif(x<a[m])z='p';elsez='r';return(z);)mian()(intp,r,m,loop,x;charc;scanf("%d",&x);p=O;r=n-l;m=(r-p)/2;loop=1;while(loop&&(r-p)){c=ss{x,m);if(c=='t')(loop=0;printf("元素在数组中,其位置为:%d\n”,m);)elseif(c==,p,){P=P;(39);m=(r-p)/2+p;}else{ (40);r=r;m=(r-p)/2+p;})if(loop)printf(w%d数据不在数组中\n”,x);}答案:选择题(1)C(2)C(3)B(4)C(5)C(6)C(7)B(8)C(9)C(10)A二、选择题(11)A(12)D(13)B(14)A(15)D(16)B(17)D(18)D(19)A(20)B(21)B(22)C(23)C(24)D(25)C三、程序填空(26)str[i]^str[i]!=NULL或str[i]=O(27)++i或i++(28)*(str+i)或str[i](29)flag(30)getchar() (31)str[i](32)fp=fopen(fname,Mww)(33)ch=getchar()(34)fp (35)argv[l]/,r/, (36)“w" (37)fgetc(38)fpw(39)r=m(40)p=m+l真题二第一部分软件技术基础(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)1、C++语言中所定义的类实际上也是一种数据类型。2、数据结构的表示包括数据逻辑结构和存储结构两方面的表示。3、冒泡排序算法是一种只能实现升序排序,而不能实现降序排序的算法。4、线形表采用链式存储时,结点的存储地址必须是连续的。5、栈顶的位置是随着进栈和退栈操作而变化的。6、在软件生存期内,软件必须进行维护,维护不会产生副作用。7、采用动态重定位进行地址转换,允许程序在执行过程中在内存中移动。而静态重定位则不可以。8、在软件的需求分析阶段,要直接面向用户,主要考虑用户的经济承受能力和费用的支付问题。9、需求分析阶段的抓哦任务应由系统分析员主持完成。10、操作系统是最重要的系统软件。二、选择题(每小题1分,共5分)1、以下特种中哪个不是算法的特征()A、可行性B、确定性C、有穷性D、唯一性2、在多道程序设计系统中,处于后备状态的作业要经过()调度后才能真正执行。A、作业调度 B、作业调度和进程调度C、进程调度 D、作业调度和设备调度3、为解决CPU和I/O设备之间速度匹配问题,常采用“缓冲区”方法。“缓冲区”的结构多为:()A、顺序栈B、链栈C、顺序队列 D、循环队列4、对象实现了数据和操作的结合,使数据和操作()于对象的统一体中。A、结合B、程序的效率C、封装D、抽象
5、结构化程序设计主要调度的是()A、程序易读性 B、程序的效率C、程序设计语言的先进性 C、程序的规模第二部分C与C++语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1、下列程序运行的结果是:()#include<stdio.h>voidswap(intx,inty){xA=y;yA=x;xA=y;};main()(inta=010,b=l;swap(a,b);printf("%d,%d”,a,b);)A、10,1B、8,12、有以下程序C、1,8D、1,10#include<malloc.h>#include<stdio.h>main()(char*p,*q;p=(char*)malloc(sizeof(char)*20);scanf("%s%s",p,q);printf(w%s,%s\nw,p,q);)若输入:abcdef〈回车〉,则输出为( )A、def,defB、abc,defC、abc,dD、d,d3、下列程序的输出是:()#include<iostream.h>voidmain()(inta=-l,b=4,k;k=(a++<=0)&&(!(b--<=0));cout«k«a«b«endl;)A、003B、103C、112D、0124、关于类概念的描述中()是错误的:A、类就是C语言中的结构体类型。B、类是创建对象的样板。C、类是具有共同行为的若干对象的统一描述体。D、类是抽象数据类型的实现。5、下列程序的运行结果是()#include<stdio.h>main()(voidfu();fu();fu();)voidfu()(staticinta=0;printf("a=%d",!a?l:8);)D、a=l,a=lA、A=8,a=8B、a=l,a=8CD、a=l,a=l6、以下程序中,输出值是()#include<stdio.h>#defineM3#defineNM+l#defineNNN*N/2main()printf("%d\n",NN);)A、3B、4C、6D、87、若有语句:charsl[]="stringl”,s2[8],*s3,*s4="string2”;Iil!j( )是对库函数strcpy的错误调用。A、strcpy(sl,Mstring2w); B、strcpy(s4,wstringlw);C、strcpy(s3/,stringlw); D、strcpy(//string2w,s2);8、以下()为不正确的if语句。A、if(x>y); B、if(x==y)x+=y;C>if(x!=y)x=x*xelsex+=l;D、if(x<y){x++;y++}9、关于C++函数参数的描述中,错误的是()A、实参个数与形参个数可以不同。B、缺省参数必须放在形参表的最右端。C、用引用变量做形参可以实现地址传递。D、重载函数可以有缺省参数。10、若有以下定义:structnode(Intdata;structnode*next;)且已建立下面的链表结构,指针p,q分别指向图中所示接点,则不能将q所指结点插入到链表末尾的一组语句是()A、q->next=NULL;p=p->next;p->next=q;B、p=p->next;q->next=p->next;p->next=q;C、p=p->next;q->next=p;p->next=q;D、p=(*p).next;(*q).next=(*p).next;(*p).next=q;二、读程序回答问题(每个选择分,共45分)1、以下程序运行的结果为:()/include<stdio.h>#include<string.h>voidfun(char*s,intm){chart,*pl,*p2;pl=s;p2=s+m-l;while(pl<p2){t=*pl++;*pl=*p2-;*p2=t;}main()chara[]="ABCDEFG";fun(a,strlen(a));puts(a);)A、GFEDCBA B、AGADAGAC、GAGGAGA C>AGAAGAG2、读下列C程序,选择正确的输出结果()#include<stdio.h>#include<string.h>voidfunfcharstr[][10]jntn)(chart[20];•nti,j;for(i=0;i<n-l;i++)(for(j=i+l;j<n;j++)if(strlen(str[i])<strlen(str[j]))(strcpy(t,str[i]);strcpy(str[i],str[j]);strcpy(str[j],t);))main()(charstr[][10]={"abc","aabcd,7,abed","a","acdefg"};inti;fun(str,5);for(i=0;i<5;i++)printf("%2d",strlen{str[i]));printf("\n");for(i=0;i<5;i++)puts(str[i]);}main函数中,第一个for循环的输出结果为:()A、65431B、13456C、76542D、24567main函数中,第二个for循环的输出结果为()abcB、aC、acdefgD^aAabcdabcaabcdabcAbedabedabedaabcdaaabcdabeabedacdefgacdefgaabcd3、以下是一个C++程序,读程序并回答问题()/include<iostream.h>intfun(intu,intv)(inttemp;while(v!=O)(temp=u%v;u=v;v=temp;)returnn;)voidmain()(intu,v;intt;cout«"lnputtwointegers:";cin»u»v;t=fun(u,v);cout«q«endl;cout«u*v/t«endl;)若从键盘中输入1015,回答下列两个问题:(1)第一条输出语句的输出结果为()A、5 B、10 C、15 D、30(2)第二条输出语句的输出结果为()A、5 B、10 C、15 D、304、以下程序的运行结果是()#include<stdio.h>main()(intflag=l;charch;do{ch=getchar();flag=chang(&ch,flag);putchar(ch);}while(ch!='\n');)chang(c,fg)char*c;intfg;if(*c==")return1;elseif(fg&&*c<='z,&&*c>='a')*c+='A'-'a';return0;)程序运行时,从第一列开始输入以下字符,《R>代表换行符。Thisisabook!<CR>A、Thisisabook! B、thisIsABook!C、ThisIsABook! D、ThisIsaBook!5、以下程序的运行结果是()#include<stdio.h>main()(inta=l,b=2,c=3;a++;c+=b;(intb=4,c;c=2*b;a+=c;printf("%d,%d,%d,",a,b,c);A、10,4,8,10,2,5B、6,2,4,6>2,4C、10,4,8,10,2,8D、9,4,8,2,2,56、以下程序的输出是:()#include<stdio.h>main()(intx=l,y=0,a=0,b=0;switch(x)(switch(y)(case0:a++;break;casel:b++;break;)a++;b++;break;a++;b++;)printf("a=%d/b=%d\n",a,b);A、a=l,b=OB、a=2,b=lC、a=l,b=lD^a=2,b=27、若有以下程序段:inta[]={4,0,2,3,l},k,j,t;for(j=l;j<5;j++)(t=a[j];k=j-l;while(k>=O&&t>a[k]){a[k+l]=a[k];k-;}a[k+l]=t;)则该程序段的功能是()对数组a进行插入排序(升序)。对数组a进行插入排序(降序)。对数组a进行选择排序(升序)。对数组a进行选择排序(降序)。8、选择下面程序运行的结果:#include<stdio.h>intm[3H3]={{l},{2},{3}};intn[3][3]={l,2,3};main()printf("%d\n",m[l][O]+n[O][O]);printf("%d\n",m[O][l]+n[l][O]);)TOC\o"1-5"\h\z第1条printf语句行输出的结果为( )A>0 B、1 C、2 D、3第2条printf语句行输出的结果为( )A>2 B、4 C、6 D、39、选择下面程序运行的结果:#include<stdio.h>main()(structdate{intyear,month,day;}today;union(longi;intk;charc;}mix;printf("date=%d\n",sizeof(structdate));printf("mix=%d\n",sizeof(mix));)TOC\o"1-5"\h\z第1条printf语句行输出的结果为( )A、6 B、8 C、12 D、前3个答案都是错误的第2条printf语句行输出的结果为( )A、2 B、4 C、6 D、前3个答案都是错误的10、读下面程序,程序的命名为MyCopy.c/*——MyCopy.c */#include<stdio.h>main(intargc,char*argv[])(if(argc!=3)printf("\nFormat:MyCopy<source_file><destin_file>\n");else{FILEsource,destin;source=fopen(argv[l],"rb");destin=fopen(argv[2],"wb");if(source==NULL)printf("ERROR:Can'topensourcefile%s\n",argv[l]);elseif(destin==NULL)printf("ERROR:Can'topendestinfile%s\n",argv[2]);elsewhile(!feof(source))fputc(fgetc(source),destin);)fclose(source);fclose(destin);))(1)程序的功能是( )A、将磁盘文件的信息显示在屏幕上。B、将一个磁盘文件复制到另一个磁盘文件中。C、将两个磁盘文件合并。D、以上答案都不对。(2)当编译,连接后,在命令行键入:MyCopyFILE1FILE2则程序将实现( )将FILE1的信息显示在屏幕上将FILE1和FILE2合并将一个FILE2复制到FILE1中将一个FILE1复制到FILE2中注意:1、请把下面“程序填空”中各小题答案写在主观题答题纸上2、每一个空只填一个语句或一个语句所缺的部分内容三、程序填空(每空2分,共30分)1、以下程序的功能是将磁盘文件a.dat中的10个整数读入并按升序排序。#include"stdio.h"voidsortfint*p,intn)(inti,j,t;for(i=0;i<n-l;i++)for(j=i+l;j<n;j++)if( ){t=p[i];p[i]=p[j];p[j]=t;})main()(inta[10],i,j,t;FILE*fp;fp=fopen("a.dat","r");for(i=0;i<10;i++)fclose(fp);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");)2、下列程序用递归算法实现,输入任意一个整数,在各数位之间插入空格后输出。#include<stdio.h>main()(longintn;voidfunc(long);scanf("%ld",&n);)voidfunc()printff'%d",m%10);)3、程序功能:有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。折半查找法:设数组长度为n,则将输入的数m与a[n©比较,若m,a[n/2],则将a[0]至!Ja[n/2]的数继续折半进行查找;若m=a[n/2],则表示找到该数的位置;若m>a[n/2],则将a[n/2]到a[n]的数继续折半进行查找。/include<stdio.h>main()(inta[10]={12,32,45,62,71,76,80,85,90,95);intnum,bott,top,mid;printf("lnputanumber:\n");scanf("%d",&num);bott=0;top=9;while(bott<=top){mid=;if(num==a[mid]){printf("%disth%dnumber\n",num,mid);break;}elseif(num<a[mid]);elsebott=mid+l;)if()printf("NO\n");)4、有两个字符串strl和str2,将strl和str2对应字符中ASCII码值较大者存入字符数组str3的对应位置,若strl和str2长度不一致,则将较长字符串中剩余字符直接连接到str3的末尾。例如:strl存放字符串"abaxef”,str2存放字符串"bac",则str3中的字符串为“bbcxef”。#include<stdio.h>#include<string.h>main()(inti;charstrl[80],str2[80],str3[80]="";char*pl,*p2;pl=strl;p2=str2;gets(strl);gets(str2);for(i=0;;i++)(if(*(pl+i)>*(p2+i))str3[i]=*(pl+i);elsestr3[i]=*(p2+i);)if()strcat(str3,pl+i);else;printf("Result:%s\n",str3);)5、下面程序的功能是计算100至100。之间有多少个数其各位数字之和是5O#include<stdio.h>voidmain()(inti,s,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while()s=s+k%10;if(s!=5);elsecount++;)cout«count«endl;真题三第一部分
软件技术基础
(共15分)一、是非判断题(每小题1分,共10分)(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)1、数据在计算机内存中的表示是指数据的存储结构。A2、能影响中断响应次序的技术是中断优先级和中断屏蔽。A3、链表可以随机访问任意一个结点,而顺序表则不能。B4、作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。B5、Windows、OS启,Linux微机操作系统都是多用户多任务操作系统。B6、数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。A7、流式文件和记录式文件都以字符为基本单位进行存取。B8、不定长文件是指字段的长度不固定。B9、软件工程的三要素包括方法、工具和环境。B10、软件结构是以指令为基础而组成的一种控制层次结构。B二、选择题(每小题1分,共5分)1、若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能出栈的序列是(C)A、1,4,3,2 B、2,3,4,1C、3,1,4,2 D、3,4,2,12、任何两个并发进程之间(D)A、一定存在互斥关系 B、一定存在同步关系C、一定彼此独立无关 D、可能存在同步或互斥关系3、以下哪个特征不是分时操作系统的主要特征(C)A、中断管理 B、独立性C、交互性 D、多路性4、以下的准则中哪个不是面向对象软件设计应遵循的(B)A、抽象准则 B、独立性准则C、信息屏蔽准则 D、模块化准则5、需求分析中开发人员主要从用户那里了解(A)A、软件做什么 B、软件的结构C、输入的信息 C、软件的测试第二部分C与C++语言程序设计(共85分)一、单项选择题(每小题1分,共10分)1、若变量已定义并赋值,下列符合C语法的表达式是:(B)A、a:=b+l B、a=b=c+2C、int18.5%3 D、a=a+7=c+b2、以下程序输出的结果是(A)voidmain()chars[]="HelloChina";
s[5]=0;puts(s);)A、HelloB、ChinaC、HelloChinaD、03、有以下程序#include<malloc.h>voidmain()(char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s,%s",p,q);printf("%s,%s\n”,p,q);)若输入abddef(回车〉,则输出为(A)A、def,defB、abc,defC、abc,dD、d,d4、下列函数形式正确的是(D)A、doublefun(intx,inty)B、fun(intx,y){z=x+y;returnz;}C>fun(x,y){z=x+y;returnz;}C>fun(x,y){intx,y;returnz;}D、doublefun(intx,inty){doublez;z=x+y;doublez=x+y;z=x+y;returnz;} returnz;}5、下列有关类和对象的说法不正确的是()A、对象是类的一个实例。B、任何一个对象只能属于一个具体的类。C、任何一个对象只能属于一个具体的类。D、类与对象的关系和数据类型与变量的关系相似。6、派生类的对象对它的基类成员中(A)是可以访问的。A、公有继承的公有成员 B、公有继承的私有成员C、保护继承的公有成员 D、私有继承的公有成员7、已经学生结构体描述如下:structstudents(intno;charname[10];charsex;struct(intday;intmonth;intyear;}birth;
intscore;};用学生结构体定义了变量w;structstudentsw;设变量w中的“生日”是“1982年5月29日”,下列对生日的正确赋值方法是(C)A、A、day=29;month=5;year=1982;C>w.birth.day=29;w.birth.month=5;w.birth.year=1982;B>w.day=29;w.month=5;w.year=1982;D^birth.day=29;birth.month=5;birth.year=1982;8、假定pl和p2是已赋值的int型指针,则下面有关运算中,(A)是非法的。A、(pl+4)=p2; B、p2=pl-10;C、if(pl!=p2)printf("!="); D、pl+=(p2-pl)9、关于C/C++语言,以下叙述正确的是(D)A、C是面向过程的程序设计语言,C++不支持面向过程的程序设计。B、C语言支持图形设计,C++不支持。C、C程序由函数组成,而C++程序由类组成。D、C是C++的子集。10、设有以下语句:charx=3,y=6,z;z=xA(y«2);则z的值是(C)A、00010100 B、00011100C、00011011 D、00011000二、读程序回答问题(每个选择分,共45分)1、以下程序运行的结果为:(B)#include<stdio.h>voidmain()(inta=2,b=-l,c=2;if(a<b)if(b<c)c=0;elsec+=l;printf("%d",c);)A、3B、2C、1C>02、下列程序运行的结果为(C)#include<stdio.h>voidmain()inta=13,b=21,m=0;switch(a%3)caseO:m++;break;casel:m++;switch{b%2)(default:m++;caseO:m++;break;))printf("%d",m);)A、1B、2C、3D、43、以下程序运行后,文件test中的内容为( )#include<stdio.h>#include<string.h>voidfun(char*fname,char*st)(FILE*fp;inti;fp=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],fp);fclose(fp);)voidmain()()A、worldB、worldhelloC>helloworld D、hello4、读下列程序:#include<iostream.h>voidmain()(unionvalue;(charch;intn;doublef;}Data;cout«"sizeof{Data)="«sizeof(Data)«endl;Data.ch='a';cout«Data.ch«endl;Data.n=100;cout«Data.n«endl;Data.f=78.168;cout«Data.f«endl;)value是(B)A、共用体变量名C、结构体变量名(2)程序运行的结果是:(sizeof(Data)=13;a10078.168C、13a10078.1685、读下列程序:#include<iostream.h>voidmain()B、共用体名D、结构体名B)sizeof(Data)=8a10078.168D、8a10078.168staticcharstr[50]="485057ehkl05101",*p=str;intsuml=0,sum2=0;while(*p!='\O')if(*p>=48&&*p<=57)suml++;elseif(*p>=101&&*p<=107)sum2++;else;P++;)cout«suml«',,«sum2«endl;)(1)程序的运行结果是(D)A、3,2B、2,3C、3,12D、12,3while(*p!八0。与(A)功能相同A、while(*p!=0) B、while(*p=0)C、while(*p<>,\0,) D、while(*p!0)6、读下列程序:#include<stdio.h>#include<string.h>voidfun(char*w,intn)sl=w;s2=sl+n-l;while(sl<s2){t=*sl++;*sl=*s2-;*s2=t;})voidmain()(charp[20]="1234567";funfp^trlenfp));Puts(p);)(1)输出结果是(B)A、7654321B、1711717C、1714171D、1234567(2)若把程序中的语句:while(sl<s2){t=*sl++;*sl=*s2--;*s2=t;}改写成:While(sl<s2){t=*sl;*sl=*s2;*s2=t;sl++;s2--;}则输出结果是(A)A、7654321B、1711717C、1714171D、12345677、下列程序运行结果是(D)#defineX5#defineYX+l#defineZY*X〃voidmain()inta;a=Y;printf("%d",Z);printf("%d\n",-a);)A、76B、126C、125D、758、读下列程序:#include<stdio.h>intx;voidsub(int*s,intx)(staticintt=0;x+=s[t];t++;}voidmain()(inta[]={3,8,4,2},i;intx=0;for(i=0;i<4;i++)sub(a,x);printf("%3d",x);)(1)程序的执行结果为(C)TOC\o"1-5"\h\zA> 3 8 4 2 B> 3 11 15 17C> 0 0 0 0 D> 2 4 8 3(2)若把main第二行的语句“intx;”删除,运行结果为(C)A、 3 8 4 2 B> 3 11 15 17C> 0 0 0 0 D> 2 4 8 39、读下列程序分析运行结果/include<stdio.h>char*cat(char*strl,char*str2)(char*pt;for(pt=strl;*pr!='\0';pt++);while(*str2!='\0')*pt++=*str2++;return(pt);)voidmain()char*^51[30]="210",52[30]="45";
p=cat(sl,s2);printf("%d\n",p-sl);p=cat(sl,s2);printf("%d\n",p-sl);)(1)主函数中,执行第一个输出函数后的结果为(A)A、5 B、6 C、7 D、8(2)主函数中,执行第二个输出函数后的结果为(C)A、5 B、6 C、7 D、810、下列程序的运行结果是(C)#include<stdio.h>voidmain()(char*str[]={"One","Two","Three","Four"};char**ptr=str;inti;for(i=0;i<3;i++)printf("%s",(ptr+l)[i]);)A、newohree B、TwoC>TwoThreeFourDC>TwoThreeFourD、指针运算非法,无输出注意:1、请把下面“程序填空”中各小题答案写在主观题答题纸上2、每一个空只填一个语句或一个语句所缺的部分内容三、程序填空(每空2分,共30分)1、以下程序可把输入的十进制数以十六进制的形式输出。#include<stdio.h>voidmain()(charb[17]="0123456789ABCDEF";intc[64],d,i=0,base=16;longn;scanf("%ld",&n);do{c[i]=n%base;i++;n=n/base;}while(n!=0);for(i--;i>=0;--i){d=c[i];printf("%c", b[d]);)printf("\n");)2、有一个数是43634,其左右对称,求比它大的对称数中最小的那个。#include<stdio.h>voidmain()(longinti=43634,j;intcount,ch[10];do{i++;j=i;count=0;while(j)(ch[count]=j%10;j=_i/io ;count++;)iffch[0]*10000+ch[l]*1000+ch[2]*100+ch[3]*10+ch[4]==break;}while(l);printf("%5d\n", i);)3、以下程序能统计并输出1至100之间所有能被3整除但不能被7整除的所有正整数。#include<stdio.h>#defineM100voidfunfintm,int+p;int*t)(inti,num=0;for(i=l;i<=m;i++)if(i%3==0&&i%7!=0)p[num++]=i;*t=num;)voidmain()(inta[M],n,k;fun(M,a,&n);for(k=0;k<n;k++)if((k+l)%5==0)printf("\n");elseprintf("%3d",a[k]);printf("\n");)4、下面程序功能是从字符串s中删除任何在第二个字符串t中出现的字符,然后输出。#include<stdio.h>voidmain()(chars[81],t[20].*pl,*p2;inti;scanf("%s%s"/s,t);printf("\n");pl=s;for(i=0;*(pl+i);i++)for(p2=t;*p2;p2++)while(*(pl+i)==*p2)strcpy(pl+i,pl+i+l);printf("%s",s);5、文件stu.txt中存放了一个学生各门课程的考试分数,数据之间以逗号分割。下面程序将文件中的所有分数取出,计算平均分,显示在屏幕上,还要把这个平均分按原文件的数据格式记录在原文件中。例如文件stu.txt中存放的为“60.5,81.1,83.5,80.5”,则程序运行后文件stu.txt中为“60.5,81.1,83.5,80.5,78.366669w#include<stdio.h>voidmain()(intn=0;floatx=0.0,y;FILE*fp;fp=fopen("stu.txt","a+");do(fscanf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年武汉海事职业学院单招职业适应性测试参考题库及答案解析
- 2026年长春健康职业学院单招职业适应性测试备考题库及答案解析
- 期中考试后的总结
- 2026年湖南国防工业职业技术学院单招职业适应性考试备考试题及答案解析
- 期末数学备课组工作总结(合集7篇)
- 2026年信阳航空职业学院单招职业适应性考试模拟试题及答案解析
- 2026年闽南理工学院单招职业适应性测试模拟试题及答案解析
- 2026年甘肃财贸职业学院单招职业适应性测试模拟试题及答案解析
- 2026年江苏商贸职业学院单招职业适应性测试模拟试题及答案解析
- 2026年黄山职业技术学院单招职业适应性考试模拟试题及答案解析
- TD/T 1032-2011基本农田划定技术规程
- 车库买卖合同终止协议书
- T/CCS 071-2023井工煤矿智能化带式输送机运维管理规范
- DB32/T 4291-2022特种设备安全监督检验研究系统纪检监察基本工作规范
- 《特异性植物的抗逆机制》课件
- 喜播教育课程故事
- 公路工程工点标准化管理指南
- 太阳能路灯采购安装方案投标文件(技术方案)
- 医院药学 试题及答案 模块十一药学信息服务题库
- 烟草证到期代办委托书
- 128个护理诊断及措施
评论
0/150
提交评论