版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷1(共9套)(共312题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共43题,每题1.0分,共43分。)1、下列叙述中正确的是()。A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序的存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:循环队列是队列的一种顺序存储结构,用队尾指针指向队列中的队尾无素,用排头指针向排头元素的前一个位置。因此可以说,队列的顺序存储结构一般采用循环队列的形式。故答案为B。2、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。3、下列叙述中正确的是()。A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,故答案为D。4、下列叙述中正确的是()。A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的效率与问题的规模和数据的存储结构都有关,故A错误。算法的时间复杂度是指执行算法所需要的计算工作量,故B正确。由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不是一一对应的,故C错误。算法的时间复杂度和空间复杂度没有直接的联系,故D错误。5、算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。6、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B选项的“369”可以用无符号整数来表示和存储。A选项的“-369”有负号,选项C的“0.369”是小数,二者都不能用无符号整数类存储。选项D是一个整数集合,得用数组来存储。7、下列叙述中正确的是()。A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上说法均错误标准答案:A知识点解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。8、下列叙述正确的是()。A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:算法是指解题方案准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。因此,设计算法时要同时考虑着两个基本要素,不能只考虑数据结构,且与结果的可靠性并无关系,所以B、C错误。9、下列叙述中正确的是()。A、有一个以上根节点的数据结构不一定是非线性结构B、只有一个根节点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:线性结构应满足:①有且只有一个根节点;②每个节点最多有一个前件,也最多有一个后件,所以有一个以上根节点的数据结构一定是非线性结构,所以A错误,B正确。循环链表和双向链表都是线性结构的数据结构。10、下列关于线性链表的叙述中,正确的是()。A、各数据节点的存储空间可以不连续,但他们的存储顺序与逻辑顺序必须一致B、各数据节点的存储顺序与逻辑顺序可以不一致,但它们的存储空间不需连续C、进行插入数据与删除数据时,不需要移动表中的元素D、以上说法均不对标准答案:C知识点解析:一般来说,在线性表的链式存储结构中,各数据节点的存储序号是不连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插人和删除都不需要移动表中的元素,只需要改变节点的指针域。11、下列叙述中正确的是()。A、顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:链式存储结构既可以针对线性结构,也可以针对非线性结构,所以B与C错误。链式存储结构中每个节点都由数据域与指针域两部分组成,增加了存储空间,所以D错误。12、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性标准答案:B知识点解析:线性链式存储结构中每个节点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。13、下列关于栈的叙述正确的是()。A、栈按“先进先出”组织数据B、栈按“先进后出”组织数据C、只能在栈底插人数据D、不能删除数据标准答案:B知识点解析:栈是按”先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。14、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDEl2345D、54321EDCBA标准答案:B知识点解析:栈是按“先进后出”的原则组织数据的,所以人栈最早的最后出栈,所以选择B。15、下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。16、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。17、下列关于栈的叙述中,正确的是()。A、栈底元素一定是最后人栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上说法均错误标准答案:C知识点解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素:栈底元素总是最先被插入的元素。从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出”表,所以选择C。18、一个栈的初始状态为空。现将元素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。19、下列与队列结构有关联的是()。A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列的修改是依先进先出的原则进行的。故D正确。20、下列叙述中正确的是()。A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以B与C错误。21、下列数据结构中,属于非线性结构的是()。A、循环队列B、带链队列C、二叉树D、带链栈标准答案:C知识点解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。22、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按“先进后出”的原则组织数据的。队列是按“先进先出”的原则组织数据的。23、对于循环队列,下列叙述中正确的是()。A、队头指针是固定不变的B、队头指针一定大于队尾指针C、队头指针一定小于队尾指针D、队头指针可以大于队尾指针,也可以小于队尾指针标准答案:D知识点解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构所以队头指针有时可能大于队尾指针有时也可能小于队尾指针。24、下列关于栈叙述中正确的是()。A、栈顶元素最先被删除B、栈底元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是“先进后出”的数据结构,所以栈顶元素是最后人栈的,且最先被删除。栈底元素最先进栈却最后被删除。所以选择A。25、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。A、15B、16C、20D、0或35标准答案:D知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。在循环队列中进行出队、人队操作时,头尾指针仍要加l,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。26、下列叙述中正确的是()。A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、以上说法都不对标准答案:A知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。因此,从队头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。A正确。27、下列叙述中正确的是()。A、在栈中,栈中元素随栈底指针与栈顶指针的变化而变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而变化D、以上说法均不对标准答案:C知识点解析:栈是“先进后出”的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针来操作,所以选择C。28、下列叙述中正确的是()。A、线性表链式存储结构的存储空间一般要少于顺序存储结构B、线性表链式存储结构与顺序存储结构的存储空间都是连续的C、线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D、以上说法均错误标准答案:C知识点解析:线性表的顺序存储结构具备如下两个基本特征:(1)线性表中的所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的节点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此C选项正确。29、下列链表中,其逻辑结构属于非线性结构的是()。A、二叉链表B、循环链表C、双向链表D、带链的栈标准答案:A知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储节点,是线性表。在单链表的节点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个节点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存储空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。30、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时,要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。31、某系统总体结构图如下图所示:该系统总体结构图的深度是()。A、7B、6C、3D、2标准答案:C知识点解析:根据总体结构图可以看出该树的深度为3,比如:XY系统——功能2——功能2.1,就是最深度数的一个表现。32、某二叉树有5个度为2的节点,则该二叉树中的叶子节点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个。33、下列关二叉树的叙述中,正确的是()。A、叶子节点总是比度为2的节点少一个B、叶子节点总是比度为2的节点多一个C、叶子节点数是度为2的节点数的两倍D、度为2的节点数是度为1的节点数的两倍标准答案:B知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为12的节点多一个。所以选择B。34、一棵二叉树共有25个节点,其中5各是叶子节点,则度为1的节点数为()。A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度数为0的叶子节点总是比度数为2的节点多一个,所以本题中度数为2的节点是5-1=4个,所以度数为l的节点的个数是25-5-4=16个。35、某二叉树共有7个节点,其中叶子节点有1个,则该二叉树的深度为(假设根节点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子节点总比度为2的节点多一个,所以本题中度为2的节点为1-1=0个,所以知道本题目中的二叉树的每个节点都有一个分支,所以7个节点共7层,即度为7。36、一棵二叉树中共有80个叶子节点与70个度为1的节点,则该二叉树中的总节点数为()。A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n2=79,总节点数为n0+n1+n2=80+70+79=229,答案为B。37、某二叉树共有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,则度为l的节点数n1=11,故深度为12,选D。38、对下图二叉树进行前序遍历的结果为()。A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ标准答案:C知识点解析:前序遍历是指在访问根节点、遍历左子树与遍历右子树这三者中,首先访问根节点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则:①访问根节点;②前序遍历左子树;③前序遍历右子树,故答案C正确。39、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)标准答案:C知识点解析:当有序线性表为顺序存储时才能用二分法查找。通过证明,对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。40、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:除了堆排序算法的比较次数是0(nlog2n),其他的都是n(n-1)/2。41、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插人排序D、堆排序标准答案:D知识点解析:冒泡排序、简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。42、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()。A、9B、10C、45D、90标准答案:C知识点解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故选C。43、对长度为n的线性表作快速排序,在最坏情况下,比较次数为()。A、nB、n-1C、n(n-1)D、n(n-1)/2标准答案:D知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n-1)+(n-2)+…+1=n(n-1)/2,故选D。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、下列叙述中正确的是A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上说法均错误标准答案:A知识点解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。2、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列的修改是依先进先出的原则进行的,D正确。3、对下列二叉树进行前序遍历的结果为A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ标准答案:C知识点解析:前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则:①访问根结点;②前序遍历左子树;③前序遍历右子树,C正确。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、有三个关系R、S和T如下则由关系R和S得到关系T的操作是A、自然连接B、交C、投影D、并标准答案:A知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,选A。11、下列叙述中正确的是A、C程序中所有函数之间都可以相互调用B、在C程序中main函数的位置是固定的C、在C程序的函数中不能定义另一个函数D、每个C程序文件中都必须要有一个main函数标准答案:C知识点解析:C程序中主函数不能被其他函数调用,所以A选项错误。main函数可以放在程序开始,也可以放在中间,也可以放在最后,位置不固定,但程序执行时必须从main函数开始,所以B选项错误。在C程序的函数中不能定义另一个函数,可以声明或调用另一个函数,所以C选项正确。每个C程序中必须包含一个main函数,但不一定是每个C程序文件中必须有,用户单独编写的某个函数也可以存储为一个C程序文件,所以D选项错误。12、以下叙述正确的是A、C语言函数可以嵌套调用,例如:fun(fun(x))B、C语言程序是由过程和函数组成的C、C语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在标准答案:A知识点解析:C语言程序是由函数组成的,所以B错误。C语言函数可以单独进行编译,所以C错误。每个C程序中必须包含一个main函数,但不一定是每个C程序文件中必须有,用户单独编写的某个函数也可以存储为一个C程序文件,所以D错误。13、以下选项中合法的标识符是A、1__B、1-1C、1_1D、_11标准答案:D知识点解析:C语言中的标识符由下划线、字母和数字组成,且必须以下划线或字母开始,所以只有D选项正确。14、表达式3.6-5/2+1.2+5%2的值是A、4.3B、4.8C、3.3D、3.8标准答案:D知识点解析:计算5/2,结果取整数值2。计算3.6-2,结果与高精度数据保持一致,即为1.6。计算1.6+1.2,结果为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项。15、有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是A、a=x<>yB、a%(int)(x-y)C、(a*y)%bD、y=x+y=x标准答案:B知识点解析:C语言中没有"<>"运算符,所以A选项错误。"%"运算符的两个操作值必须为整型数据,所以B选项正确。a*y的结果为double型,所以C选项错误。不能将值赋给像x+y这样的表达式,所以D选项错误。16、有以下程序#includemain(){inta=0,b=0;/*给a赋值a=10;b=20;给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A、出错B、a+b=30C、a+b=10D、a+b=0标准答案:D知识点解析:注释语句可以在一行也可以在多行,用/*……*/或//表示,。它不参与程序的运行,所以a与b的值仍然为0,所以打印的结果为a+b=0。17、以下选项中,值为1的表达式是A、1-’0’B、1-’\0’C、’1’-0D、’\0’-’0’标准答案:B知识点解析:\0,空值,其ASCII码值为0,所以B选项的值为1。字符0的ASCII码值为048,所以A,C,D的值均不为1。18、当变量c的值不为2、4、6时,值为"真"的表达式是A、(c>=2&&c<=6)&&(c%2!=1)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零,结果才为真。所以只有选项D满足要求。19、下列条件语句中,输出结果与其他语句不同的是A、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);标准答案:C知识点解析:A,B,D选项的含义均为:a的值如果为0时打印y的值,否则打印x的值。但是C选项的含义是:a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。20、有以下程序#includemain(){intx=1,y=2,z=3;if(x>y)if(y<z)printf("%d",++z);elseprintf("%d",++y);printf("%d\n",x++);}程序的运行结果是A、1B、41C、2D、331标准答案:A知识点解析:else总是与离他最近的上面的if配对。所以第一个if语句的判断条件不成立,不再执行第二个if语句和与第二个if语句配对的else语句。而是直接执行打印x++的操作,打印x的值1以后在加一。21、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);标准答案:B知识点解析:在C语言中等于号用"=="表示,一个"="表示赋值,所以A错误。C、D选项的含义都是如果输入的字符为"N",则打印输出,所以正好和题意相反。22、以下叙述中正确的是A、continue语句的作用是:使程序的执行流程跳出包含它的所有循环B、break语句只能用在循环体内和switch语句体内C、在循环体内使用break语句和continue语句的作用相同D、break语句只能用于switch语句体中标准答案:B知识点解析:continue语句的作用是:跳过循环体中剩余的语句而进行下一次循环,所以A选项错误。Break语句的作用是终止正在执行的switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出,所以C、D选项错误。23、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A、main(){……x=fun(2,10);……}floatfun(inta,intB){……}B、floatfun(inta,intB){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intB){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intB){……}标准答案:A知识点解析:在调用子函数时,应对其进行说明。A选项中,调用时,没有对子函数进行说明。B选项、C选项中被调用函数在主调函数之前定义,不用说明;D选项中在主函数中对被调用函数的返回值类型进行了说明。因此A选项正确。24、若有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至2010的语句是A、(*p)++;B、*p++;C、++(*p);D、*p+=1;标准答案:B知识点解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010。因此B选项正确。25、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是A、scanf("%d",a,b,c);B、scanf("%d%d%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);标准答案:C知识点解析:本题重点考察的知识点是标准输入函数scanf()。scanf()函数要求,除了第1个参数为格式化字符串以外,其余参数均为相应变量的地址值。本题中,只有p是地址值,因此C选项正确。26、以下错误的定义语句是A、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};B、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C、intx[][3]={{0},{1},{1,2,3}};D、intx[][3]={1,2,3,4};标准答案:B知识点解析:二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]。其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。如对二维数组全部元素赋初值,则第一维的长度可以不给出。但如果对x[4][]赋值,只确定行数,而不确定列数,就无法正确赋值。因此B选项正确。27、有以下程序#includemain(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}程序执行后的输出结果是A、357B、753C、369D、751标准答案:A知识点解析:该题中t[][3]={9,8,7,6,5,4,3,2,1};实际上就是t[3][3]={{9,8,7},{6,5,4},{3,2,1}};,通过for循环语句,确定需要输出t[2][0],t[1][1]和t[0][2],即输出3、5、7。因此A选项正确。28、有以下程序#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序的运行结果是A、1,2,3,4,9,8,7,6,5,0,B、0,9,8,7,6,5,1,2,3,4,C、0,9,8,7,6,5,4,3,2,1,D、1,2,3,4,5,6,7,8,9,0,标准答案:A知识点解析:该题目中fun函数的功能是将a所指数组元素从大到小排序,fun(c+4,6);即指排序从第5个元素开始进行从大到小排序。因此A选项正确。29、以下正确的字符串常量是A、\\\B、’abc’C、OlympicGamesD、""标准答案:D知识点解析:本题考察的知识点是:字符串常量。在C语言中,字符串常量是以双引号括起来的字符序列。因此B选项和C选项不正确。字符序列中可包含一些转义字符,转义字符都是以"\"开头的。A选项中包含了三个"\",前两个(\\)代表了一个"\"字符,后面一个和"""一起(\")被看作一个""",所以该字符串缺少一个结束的""",因此不正确。D选项的两个"""之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确。30、下列选项中,能够满足"只要字符串s1等于字符串s2,则执行ST"要求的是A、if(s1-s2==0)ST;B、if(s1==s2)ST;C、if(strcpy(s1,s2)==1)ST;D、if(strcmp(s2,s1)==0)ST;标准答案:D知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp,如果这个函数的返回值等于0,说明两个字符串相等。因此D选项正确。31、有以下程序#includeintfun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序执行后的输出结果是A、1B、2C、3D、0标准答案:B知识点解析:此程序是统计一周七天中英文名称首字母为"T"的个数。P[i][0]是字符串的首字符,一共有两个"T",所以n=2。因此B选项正确。32、有以下程序#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]="acc",aa[10]="bbxxyy";fun(ss,aa);printf("%s,%s\n",ss,aa);}程序的运行结果是A、acc,bbxxyyB、accbbxxyy,bbxxyyC、accxxyy,bbxxyyD、accxyy,bbxxyy标准答案:B知识点解析:本题重点考察while循环语句的简单应用。函数fun()中,前一个while循环的作用是:如果形参指针t所指内容不为0,则让t增1,直到它指向0。后一个while循环的作用是:将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为"accbbxxyy"。程序最后输出的结果是:accbbxxyy,bbxxyy。因此B选项正确。33、有以下程序#include#includevoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1;*p1=*p2;*p2=s;p1++;p2--;}}main(){chara[]="123456";fun(a,strlen(a));puts(a);}程序运行后的输出结果是A、123456B、116611C、161616D、654321标准答案:D知识点解析:主函数中调用fun(a,6)后,指针p1指向字符串中的"1"、p2指向字符串中的"6"。While循环中,只要p134、有以下程序#includeintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序运行后的输出结果是A、810B、1028C、1012D、1016标准答案:B知识点解析:主函数中循环执行2次,fun函数被调用2次。b是全局变量,整个程序均可使用。第1次调用:fun(&a[2]),形参指针k获得a[2]的地址,则*k为a[2]的值。返回值:b=a[2]+2=3+2=5;主程序中:b=fun(&a[2])+b=5+5=10;第2次调用:fun(&a[3]),返回值:b=4+10=14;主程序中:b=fun(&a[3])+b=14+14=28。因此B选项正确。35、设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是A、t1=t2;B、t2.num1=t1.num1;C、t2.mark=t1.mark;D、t2.num2=t1.num2;标准答案:C知识点解析:本题考查结构体变量的引用,C选项中mark为结构体中的数组,不能直接赋值,所以C选项错误。36、有以下程序#include#includestructA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0标准答案:D知识点解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。37、有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUA){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(,);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",’f’,95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d.score[0],d.score[1]);}程序的运行结果是A、Zhao,m,85,90B、Qian,m,85,90C、Qian,f,95,92D、Zhao,f,95,92标准答案:A知识点解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会返回记过计算的a值,选项A正确。38、若程序中有宏定义行:#defineN100则以下叙述中正确的是A、宏定义行中定义了标识符N的值为整数100B、在编译程序对C源程序进行预处理时用100替换标识符NC、上述宏定义行实现将100赋给标示符ND、在运行时用100替换标识符N标准答案:B知识点解析:本题考查预编译相关知识,宏定义在编译程序时做了一个简单的替换,所以选项B39、若变量已正确定义,则以下语句的输出结果是s=32;s^=32;printf("%d",s);A、-1B、0C、1D、32标准答案:B知识点解析:本题考查逻辑异或运算,异或运算只有在两个比较的位不同时其结果是1,否则结果为0,题目中两个值相同,所以结果为0。40、有以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);fclose(fp);}程序运行后的输出结果是A、abcB、28cC、abc28D、因类型不一致而出错标准答案:C知识点解析:本题考查文件操作函数fprintf()函数,fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件或是相当于文件的设备上执行两次fprintf后文件中有abc28,所以C选项正确。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共9题,每题1.0分,共9分。)1、结构化程序设计的基本原则不包括()。A、可封装B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。2、结构化程序所要求的基本结构不包括()。A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:1966年B0ehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。3、结构化程序设计中,下面对goto语句使用描述正确的是()。A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、以上说法均错误标准答案:C知识点解析:结构化程序设计中,要注意尽量避免goto语句的使用,故选C。4、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象的基本概念有对象、类和实例、消息、继承与多态性,所以选择A。5、在面向对象方法中,不属于“对象”基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性。所以选择A。6、下面对对象概念描述正确的是()。A、对象间的通信靠消息传递B、对象是名字和方法的封装体C、任何对象必须有继承性D、对象的多态性是指一个对象有多个操作标准答案:A知识点解析:对象之间进行通信的结构叫做消息,故A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,不能简单地说成是名字和方法,故B错误。对象不一定必须有继承性,故C错误。多态性是指同一个操作可以是不同对象的行为,故D错误。7、面向对象方法中,继承是指()。A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:继承是面向对象方法的一个主要特征,使用已有类的定义作为基础建立新类的定义。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。8、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()。A、9B、10C、45D、90标准答案:C知识点解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+l=45,故选C。9、有以下程序:#includemain()charc[2][5]={"6934","8254"},*p[2]inti,j,s=0;for(i=0;i<2;i++)P[i]=c[i];for(i=0;i<2;i++)for(j=0;P[i][j]>0&&P[i][j]<=’9’;j+=2)s=10*s+P[i][j]-’0’;pfintf("%d\n",s);}程序的输出结果是()。A、693825B、69825C、63825D、6385标准答案:D知识点解析:本题的意图在于将c中两个字符串的偶数位置的数字组成一个新数,找到的4个数字分别为6、3、8、5,组成的数为6385,所以答案为D选项。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、算法的空间复杂度是指()。A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、算法执行过程中所需要的存储空间标准答案:D知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占朋的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。2、下列叙述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。3、下列关于类、对象、属性和方法的叙述中,错误的是()。A、类是对一类具有相同的属性和方法对象的描述B、属性用于描述对象的状态C、方法用于表示对象的行为D、基于同一个类产生的两个对象不可以分别设置自己的属性值标准答案:D知识点解析:类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。4、在软件开发中,需求分析阶段产生的主要文档是()。A、数据字典B、详细设计说明书C、数据流图说明书D、软件需求规格说明书标准答案:D知识点解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。5、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。6、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交C、投影D、除标准答案:B知识点解析:关系R与s经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。7、下列叙述中,正确的是()。A、软件交付使用后还需要进行维护B、软件一旦交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。8、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。A、7B、8C、9D、10标准答案:B知识点解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。9、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A、6B、8C、9D、12标准答案:C知识点解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。10、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。11、对于一个正常运行的C程序,下列叙述中正确的是()。A、程序的执行总是从main函数开始,在main函数结束B、程序的执行总是从程序的第一个函数开始,在main函数结束C、程序的执行总是从main函数开始,在程序的最后一个函数中结束D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束标准答案:A知识点解析:一个C语言源程序无论包括了多少函数,总是从main函数开始执行,从main函数结束。12、以下选项中与if(a==1)a++;elsea=b;语句功能不同的语句是()。A、switch(a){case0:a=b;break;default:a++:}B、switch(a==1){case0:a++;default:a=b;}C、switch(a){default:a=b;break;case1:a++:}D、a=(a==1)?(a++):b标准答案:B知识点解析:ifelse语句的含义是,如果变量a的值等于1,变量a的值加1,否则,则把变量b的值赋给变量a。在本题的4个选项中,与其含义不同的是选项B),因为没有break语句,当a=1的时候,会顺序执行两条语句,最终结果是将b的值赋给a。13、以下不合法的用户标识符是()。A、804zhangB、_hhC、yy614D、If标准答案:A知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。14、已知chara;intb;floatC;doubled;则表达式a-b+c-d结果为()型。A、doubleB、floatC、intD、char标准答案:A知识点解析:C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:①运算中将所有char型转换成int型,float型转换成double型;②低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为:char->-int->unsigned->long->float->double;③赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。15、假设有语句sizeof(double),则它是()。A、一个整型表达式B、一个双精度浮点型表达式C、一种函数调用D、一种函数定义标准答案:A知识点解析:sizeof(double)是C语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。16、若变量都已正确说明,则以下程序段输出结果为()。#includemain(){chara=’a’;intb=2:printf(a>b?”***a=%d”###b=%d”,a,b);}A、***a=3B、###b=3C、***a=3##b=5D、全部错误标准答案:D知识点解析:本题考查printf函数的格式和三目运算符“?:”的使用。printf函数中格式说明符之前插入的任何字符都原样输出。本题中a>b为真,所以返回“***a=97”。17、若有以下定义(设int类型变量占2个字节)inti=8,j=9:则以下语句:printf(“i=%%d,j=%%%d\n”,i,j);输出的结果是()。A、i=8,j=9B、i=%d,j=%8C、i=%d,j=%dD、8,9标准答案:B知识点解析:本题考查printf函数的格式。printf函数中格式说明符之前插入的任何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按原样输出。18、设a和b均为int型变量,且a=6,b=11,则能使值为3的表达式是()。A、b%(a%4)B、b%(a—a%5)C、b%a-a%5D、(b%a)一(a%4)标准答案:D知识点解析:表达式“a%b”表示的是求a除以b的余数。因此,选项A):(6%4)=2,11%2=1;选项B):(6—6%5)=5,11%5=1;选项C):11%6—6%5=4;选项D):(11%6)一(6%4)=3。19、有关return语句说法不正确的是()。A、系统默认的返回值类型为整型,故当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略。B、当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C、当函数没有返回值时,函数的返回值类型可以说明为void型,它表示“无类型”或“空类型”。D、函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。标准答案:D知识点解析:函数的返回值类型一一般与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。20、有以下程序:#includemain(){inti=0,a=0;while(i<20){for(;;){if((i%5)==0)break;elsei一:}i+=13,a+=i;}printf(“%d\n”,a);}程序的输出结果是()。A、62B、63C、23D、36标准答案:D知识点解析:本题考查while循环。当i<20时,进入while循环体,循环体内的for循环实现的功能是,当i值是0或5的倍数时,执行“i+=13;a+=i;”这两条语句;若i值不是5的倍数则一直执行for循环。①当i=0时,执行i+=13;a+=j;i=13,a=13;②判断i=13<20,进入while循环体,i=10时,跳出for循环,执行i+=13;a+=i.i=23,a=36;⑧判断i=23>20,循环结束。21、在下列选项中,没有构成死循环的程序段是()。A、inti=100;for(;;){i=i%10+1;if(i>10)break;}B、while(1);C、intk=0:do{++k;}while(k<=10);D、ints=12;while(s);--S:标准答案:C知识点解析:本题考查死循环的知识。选项A)中,for循环没有任何控制语句就会一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,i=i%10+1这个表达式的值永远不会大于10,所以永远不会跳出循环,是死循环;选项B)中,while中表达式永远是非0,不会结束循环;选项C)中,当k>10时,结束循环;选项D)中,while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。22、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。A、函数调用可以作为独立的语句存在B、函数调用可以作为一个函数的实参C、函数调用可以出现在表达式中D、函数调用可以作为一个函数的形参标准答案:D知识点解析:本题考查函数调用的有关知识点。函数调用①可以出现在表达式中;②可以作为独立的语句存在;③可以作为一个函数的实参。23、以下程序的输出结果是()。#includemain(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf(“%d,%d\n”,a,b);elseprintf(“%d,%d\n”,b,a);}A、2.2B、1,3C、3,2D、3.1标准答案:C知识点解析:解答本题的关键在于if语句条件中的表达式。初始时a=1,b=3,所以++a=2>0,因此++a<0为假:因为是进行逻辑与(&&)运算,在&&的一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值为逻辑0,所以执行else语句。24、有以下程序:#includemain(){intx;scanf(“%d“,&x);if(x<=0);elseif(x!=5)printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果()。A、不等于5的整数B、大于0且不等5的整数C、大于0或等于5的整数D、小于5的整数标准答案:B知识点解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于0且不等于5时将其打印出来。25、若执行下述程序时,若从键盘输入6和8,结果为()。main(){inta,b,s;scanf(“%d%d”,&a,&b);S=a:if(s=b)S*=S:printf(“%d”,s);}A、36B、64C、48D、以上都不对标准答案:B知识点解析:首先通过scanf函数把从键盘读入的数据赋给变量a和b,if语句判断如果a和b不等,执行s=s*s=64。26、若运行时给变量X输入12,则以下程序的运行结果是()。main(){intx,y;scanf(“%d”,&x);y=x>127x+10:x一12;printf(“%d\n”,y);}A、0B、22C、12D、10标准答案:A知识点解析:本题考查三目条件运算符“?:”。表达式“x>12?x+10:x-12”即,如果x>12成立,则x+10的值即为此表达式的值,否则x-12即为此表达式的值。因为x=12,所以x>12不成立,所以执行y=x.12=0。27、运行下面程序时,从键盘输入字母A,则输出结果是()。#includemain(){charch;ch=getchar();switch(ch){case‘A’:printf(“AAAA\n”);case‘B’:printf(“BBBB\n”);default:printf(“CCCC\n”);}}A、AAAAB、AAAABBBBC、AAAABBBBCCCCD、AAAACCCC标准答案:C知识点解析:本题考查switch语句。因为ch=A,所以第一个switch语句,执行case‘A’后面的语句,输出AAAA,没有遇到break语句,所以接着再执行case‘B’和default,分别输出BBBB和CCCC。28、以下叙述正确的是()。A、只能在循环体内和switch语句体内使用break语句B、contiune语句的作用是结束整个循环的执行C、在循环体内使用break语句或continue语句的作用相同D、从多层循环嵌套中退出时,只能使用goto语句标准答案:A知识点解析:本题考查循环的4个知识点:①break语句可以出现在循环体内及switch语句体内,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着转去判定循环条件是否成立,从而确定下一次循环是否继续执行,也就是说执行contiune语句不会使整个循环终止;③在循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用goto语句或者break语句。29、下列叙述中错误的是()。A、在C语言中,对二进制文件的访问速度比文本文件快B、在C语言中,随机文件以二进制代码形式存储数据C、语句FILEfp;定义了一个名为fp的文件指针D、C语言中的文本文件以ASCII码形式存储数据标准答案:C知识点解析:在C语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE*指针变量名:选项C)中少了“*”,所以选项C)错误。30、若输入“abcdef”、“abdef”,以下程序的输出结果为()。#include#includemain(){intn;chars1[20],s2[20],*p1,*p2;scanf(“%s”,s1);scanf(“%s”,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(“%d\n”,n);}A、-1B、0C、“abcdef”D、“abdef”标准答案:A知识点解析:本题考查两个知识点:①字符串比较函数strcmp(s1,s2),若s1>s2,则返回1;若s1=s2,则返回0;若s131、以下语句定义正确的是()。A、inta[1][4]={1,2,3,4,5};B、floata[3][]={{1},{2},{3}};C、longa[2][3]={{1},{1,2},{1,2,3},{0,0}};D、doublea[][3]={0};标准答案:D知识点解析:本题考查的是如何对二维数组进行赋值。选项A)中数组第二维的大小是4,但却给赋了5个元素;选项B)中C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式;选项C)中数组第一维的大小是2,但是赋值却超过了2;选项D)中在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。32、下述程序的输出结果是()。#includevoidmain(){inta[5]={1,2,3,4,5);int*p=a,**q=&p;printf(“%d”,*(p++));printf(“%d”,**q);}A、22B、11C、34D、12标准答案:D知识点解析:程序首先定义了一个指向一维数组a的指针p,一个指向指针变量p的指针变量q,输出*(p++)是先输出*p即a[0]的值,再将指针p指向数组的下一个元素a[1],输出**q是输出指针p所指向单元的内容,即a[1]的值。33、字符串“\\\”ABCDEF\“\\”的长度是()。A、11B、10C、5D、3标准答案:B知识点解析:本题涉及字符串的两个最基本的概念。①字符串的长度是指字符串中字符的个数,但不包含字符串结束符;②以反斜线“\”开头的特殊字符序列,意思是把反斜线后而的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\”连同后面的字符为一个长度。34、若二维数组a有m列,则在a[i][j]前的元素个数为()。A、j*m+iB、i*m+jC、j*m+i+1D、i*m+j+1标准答案:B知识点解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是i,说明它前面还有i列,有j个元素,所以共有i*m+j个元素。35、下列程序的运行结果是()。#includevoidfun(int*S,int*P){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k,x;for(k=0;k<4;k++){fun(a,&x);printf(“%d,”,x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,标准答案:A知识点解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。36、以下有关宏替换的叙述不正确的是()。A、双引号中出现的宏名不替换B、使用宏定义可以嵌套C、宏定义仅仅是符号替换D、宏名必须用大写字母表示标准答案:D知识点解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①宏定义仅仅是符号替
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版租赁合同:办公场地租赁及装修协议
- 2024年度艺术品买卖合同作品真伪鉴定
- 2024年二手住宅交易与按揭贷款协议2篇
- 现代技术服务费合同9
- 2024年度工程环境评估合同3篇
- 二零二四年度企业vi设计及实施合同2篇
- 二零二四年度品牌授权合同的品牌使用与授权期限3篇
- 2024年度智慧城市建设与技术合作合同
- 化工设计:第10章 设计中必须注意的几个问题
- 蓄水池建筑工程施工协议书
- 2023年5G+PLC深度融合解决方案白皮书-施耐德电气中国信通院中国联通
- 重大事故隐患重点事项排查清单1
- 2024年河北交通职业技术学院单招职业倾向性测试题库附答案
- 2023-2024年中考语文三年真题分类汇编(全国版)作文 试卷(含答案解析)
- GB/T 43933-2024金属矿土地复垦与生态修复技术规范
- 营养专科护士进修汇报
- 新一代信息技术基础智慧树知到期末考试答案章节答案2024年哈尔滨师范大学
- 我为南京带货英语作文
- 医院安保反恐防暴演练
- 中药炮制学(中国药科大学)智慧树知到期末考试答案2024年
- 2024年社区工作者考试必考1000题含完整答案(名师系列)
评论
0/150
提交评论