考试吧

计算机等级

考试吧>等级考试>计算机二级考试>C语言>模拟试题>正文
2015年计算机二级《C语言》冲刺试题及答案(5)
考试吧 2015-09-18 10:15:43 评论(0)条

  点击查看:2015年计算机二级《C语言》冲刺试题及答案汇总

  一、选择题

  1下列叙述中正确的是( )。

  A.在switch语句中,不-定使用break语句

  B.在switch语句中必须使用default

  C.break语句必须与switch语句中的case配对使用

  D.break语句只能用于switch语句

  参考答案:A

  参考解析:default语句在swtch语句中可以省,所以8错误;switch语句中并非每个case后都需要使用break语句,所以c错误;break语句还可以用于for等循环结构中,所以D错误。

  2有以下程序:

  

  程序运行后的输出结果是( )。

  A.10,One*Dream!B.9,One*Dream!C.9,One*WorldD.10,One*World

  参考答案:A

  参考解析:P是指向二维字符数组第二行One+Dream!的数组指针,所以长度是l0,打印输出的也是该字符串。

  3设有定义:char*C;以下选项中能够使C正确指向一个字符串的是( )。

  A.char str( )=”string”;C=str;

  B.scanf(”%s”,

  C.;C.c=getchar( );

  D.*c=”strin9”;

  参考答案:A

  参考解析:A选项为正确用法,先将字符串存于字符数组中,然后将数组名赋给字符指针(数组名代表数组首地址,定义数组时为其分配确定地址)。C选项错误,getchar()函数只能输入一个字符给字符型变量,而不是字符指针。B选项和D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在B选项和D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。因此A选项正确。

  4在数据管理技术发展的三个阶段中,数据共享最好的是( )。

  A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同

  参考答案:C

  共159人答过,平均正确率88.1%参考解析:

  数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。

  5一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。

  A.一对一B.一对多C.多对一D.多对多

  参考答案:B

  参考解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

  6有以下程序:

  

  程序运行后的输出结果是( )。

  A.3B.1C.2D.0

  参考答案:A

  参考解析:本愿考查位运算符以及相关运算,‘为按位或,&为按位与,部么a'b为3,再与c按位与仍然为3,所以答案为A选项。

  7有以下程序:

  

  

  程序运行后的输出结果是( )。

  A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf

  参考答案:D

  参考解析:函数的含义是如果i的值能被2整除,以字符格式打印输出i+C的值,如果i的值不能被2整除,打印i+b的值。第一次i值为0,执行else语句打印字符‘A’,第二次i值为1,打印1+b的值即字符‘b符‘c’,依此类推选择D选项,第三次i值为2,打印字I.

  8软件生命周期中的活动不包括( )。

  A.市场调研B.需求分析C.软件测试D.软件维护

  参考答案:A

  参考解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,所以选择A。

  9下列定义数组的语句中,正确的是( )。

  

  参考答案:A

  参考解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。c选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。

  10有以下程序:

  

  程序运行后的输出结果是( )。

  A.0B.一1C.1D.7

  参考答案:B

  参考解析:a一一的含义是先用后减l,所以当a的值为0时,跳出循环,但是仍要执行a一一,g的值变为一1。

  11有以下程序:

  

  程序运行后的输出结果是( )。

  A.1.1.3B.2,2,3C.1,2,3D.3,3,3

  参考答案:D

  参考解析:maUoc函数动态分配一个整型的内存空间,然后把函数返回的地址用(int{)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,b,c都指向刚申请的内存空间。所以只有最后一个赋值语句+C=3的值保留在了该空间内,因为a、b、C三个指针变量均指向该空间,所以打印该空间内的数值为3。

  12有以下程序(strcat函数用于连接两个字符串):

  

  程序运行后的输出结果是( )。

  A.U-KB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

  参考答案:C

  参考解析:字符数组a中包含两个‘、O’,遇到第一个‘O’时就表示字符串a结束。字符串处理函数由c吐(字符数组a,字符数组b),功能是连接两个字符数组中的字符串,把字符串b连接到a的后面,结果放在字符数组a中。连接时将字符串a后的‘、0’取消,只在新串最后保留一个‘、0’。本题相当于将“ABCD”和“IJK”连接。因此C选项正确。

  13有以下程序:

  

  程序运行后的输出结果是( )。

  A.0 3 0 4B.2 0 5 0C.3 3 4 4D.3 0 4 0

  参考答案:D

  参考解析:第一次循环i为0,i%2为o,执行switch(a[O]%2)中的ca∞0语句后内容即a[0]++,a[0]的值变成3;第二次循环i的值为l,i%2为1,执行ca∞1:a[i]=0;所以a[1]的值变成0;第三次循环i的值为2,i%2为0,执行switch(a[2]%2)中的ca∞1语句后的内容a[2]一一,8[2]的值变成4;第四次循环i的值为3,i%2为1,执行casel:a[i]=0;所以a[3]的值变成0。

  14有以下程序段:

  

  以下选项中表达式的值为11的是( )。

  A.++pt一>xB.pt一>xC.*pt一>yD.(pt++)一>x

  参考答案:A

  参考解析:本题考查结构体数组初始化以及结构体变量的引用,题目中定义了一个结构体数组C并初始化,指针pt指向c的第一个元素,那么pt一>x为10,++pt一>x为11,4 pt一>Y为1,(pt++)一>x为20,所以答案为A。

  15某系统总体结构图如下图所示:

  

  该系统总体结构图的深度是( )。

  A.7B.6C.3D.2

  参考答案:C

  参考解析:根据总体结构图可以看出该树的深度为3,比如:XY系统——功能2——功能2.1,就是最深的度数的一个表现。

  16以下不能将s所指字符串正确复制到t所指存储空间的是( )。

  A.do{*t++=*8++;}while(*s);

  B.for(i=0;t[i]=s[i];i++);

  C.while(*t=*s){t++;s++;}

  D.for(i=0,j=0;t[i++]=s[j++];);

  参考答案:A

  参考解析:

  do{*t++=}S++;}while(*S);不能因为当*s=’、0。时,while(* s)跳出循环,这样字符串结束标志’、0’没有复制给}t,造成}t不完整。注意,*t++=*s++是先执行t=*s,然后才进行t=t+1,s=s+1。B、C、D都能将。\0’复制过去

  17数据流图中带有箭头的线段表示的是( )。

  A.控制流B.事件驱动C.模块调用D.数据流

  参考答案:D

  %参考解析:数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。

  18有以下程序:

  

  程序运行后的输出结果是( )。

  A.9B.8C.7D.10

  参考答案:A

  参考解析:题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第-次调用函数执行n+=a++;时a先与n相加在再进行自增。n的值为4,a的值为2,且a变量执行完后空间没有释放。再执行s:。+f(a)时,s的值为4,调用f(a)函数时n的返回值为n=3+2=5,且此时a的值为3了。所以s的值为9。

  19结构化程序所要求的基本结构不包括( )。

  A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构

  参考答案:B

  参考解析:1966年Boehm和Jaeopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

  20以下选项中,当x为大于1的奇数时,值为0的表达式是( )。

  A.x%2==0B.x/2C.x%21=0D.x%2==1

  参考答案:A

  参考解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。c选项的值为真,即l。D选项的值为真,即l。

  21下列关于C语言文件的叙述中正确的是( )。

  A.文件由一系列数据依次排列组成,只能构成二进制文件

  B.文件由结构序列组成,可以构成二进制文件或文本文件

  C.文件由数据序列组成,可以构成二进制文件或文本文件

  D.文件由字符序列组成,其类型只能是文本文件

  参考答案:C

  参考解析:本题考查文件的概念,文件是由数据序列组成,可以构成二进制文件或文本文件,所以答案为c选项。

  22面向对象方法中,继承是指( )。

  A.一组对象所具有的相似性质

  B.一个对象具有另一个对象的性质

  C.各对象之间的共同性质

  D.类之间共享属性和操作的机制

  参考答案:D

  参考解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

  23假定已建立以下链表结构,且指针P和q已指向如图所示的结点:

  

  则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是( )。

  A.p一>next=q一>next;flee(q);

  B.p=q一>next;free(q);

  C.p=q;free(q);

  D.(*p).next=(幸q).next;ffee(p);

  参考答案:A

  参考解析:本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点的下个结点指向要删除结点的下个结点,然后释放该要删除结点,所以选项A正确。

  24以下关于结构化程序设计的叙述中正确的是( )。

  A.结构化程序使用goto语句会很便捷

  B.在c语言中,程序的模块化是利用函数实现的

  C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

  D.由三种基本结构构成的程序只能解决小规模的问题

  参考答案:B

  参考解析:滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。

  25以下关于字符串的叙述中正确的是( )。

  A.空串比空格打头的字符串小

  B.两个字符串中的字符个数相同时才能进行字符串大小的比较

  C.可以用关系运算符对字符串的大小进行比较

  D.C语言中有字符串类型的常量和变量

  参考答案:A

  参考解析:字符串比较大小是以第l个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数s协emp()以外,就只能靠自己写代码来实现了。而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const char+,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。c选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为l,因此A选项是正确的。

  26有以下程序:

  

  程序运行后的输出结果是( )。

  A.2B.4C.6D.8

  参考答案:D

  参考解析:本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。

  27负责数据库中查询操作的数据库语言是( )。

  A.数据定义语言

  B.数据管理语言

  C.数据操纵语言

  D.数据控制语言

  参考答案:C

  参考解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵。包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

  28下列选项中不属于结构化程序设计原则的是( )。

  A.可封装B.自顶向下C.模块化D.逐步求精

  参考答案:A

  参考解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用got0语句,所以选择A。

  29设有宏定义:

  #define IsDIV(k,n)((k%1"1==1)?1:O)且变量m已正确定义并赋值,则宏调用:

  IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是( )。

  A.判断m是否能被5和7整除

  B.判断m被5和7整除是否都余l

  C.判断m被5或者7整除是否余1

  D.判断m是否能被5或者7整除

  参考答案:B

  参考解析:本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。

  30在面向对象方法中,不属于“对象”基本特点的是( )。

  A.一致性B.分类性C.多态性D.标识唯一性

  参考答案:A

  参考解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A。

  31软件设计中划分模块的一个准则是( )。

  A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦台

  参考答案:B

  参考解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

  32有以下程序:

  

  程序运行后的输出结果是( )。

  A.OB.2C.3D.5

  参考答案:B

  参考解析:程序首先给字符数组8[]赋值为“012xy”,for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母计数,在符串中小写字母为j2个,即n=2。因此B选项正确。

  33有以下程序:

  

  程序运行后的输出结果是( )。

  A.2B.0C.元素ch[5]的地址D.字符y的地址

  参考答案:A

  参考解析:语句pc=eh;使得指针变量指向字符数组ch的首地址,即指向字符‘u’,则pc+5指向的是字符向后移动5位,指向字符‘z’。所以输出的$pc+5的值即为‘Z’。因此A选项正确。

  34一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。

  A.1:1联系B.1:m联系C.m:1联系D.m:n联系

  参考答案:D

  参考解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m:n。)35有以下程序:

  

  程序运行后的输出结果是( )。

  A.1B.2C.3D.4

  参考答案:B

  参考解析:本题重点考察函数的递归调用;题目中给出的fun()函数直接调用了自身,所以是一个递归函数。其功能是:当参数b为0时,返回参数a的值,否则返回fIln(一一a.一一b)的值。从这里可以看出,当b不断递减时,a也不断递减,直到b为0时返回a的值。那么a递减的总值就是b原来的值。所以整个递归函数的作用就是返回a—b的值。因此B选项正确。

  36以下选项中正确的语句组是( )。

  A.char*s;s={f.BOOK!”};B.char*s;s:”BOOK!”:C.chars[10];s=”BOOK!”;D.cbars[];s:”BOOK!n:

  参考答案:B

  参考解析:^选项去掉大括号就正确了;c选项和D|选项应在定义时赋初值。因此B选项正确。

  37有以下程序:

  

  i

  程序运行后的输出结果是( )。。,

  A.3,4B.4,1C.2,3D.1,2

  参考答案:C

  参考解析:本题考查结构体数组的相关操作,dt为结构体数组,那么指针P指向了结构体数组的一个元素,所以P一>x为1,P一>Y为2,结果为2,3。选项C正确。

  38有以下程序:

  

  程序执行后的输出结果是( )。

  A.1B.2C.3D.4

  参考答案:C

  参考解析:该程序中int 8 pl=&a,+p2=&b,4 P=&c;指定义三个指针变量,并赋值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;该条语句是给P所指的存储单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a+b,等价于c=1·3=3;因此C选项正确。‘

  39以下叙述中错误的是( )。

  A.可以通过typedef增加新的类型

  B.可以用typedef将已存在的类型用一个新的名字来代表

  C.用typedef定义新的类型名后,原有类型名仍有效

  D.用typedef可以为各种类型起别名,但不能为变量起别名

  参考答案:A

  参考解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A错误。

  40以下叙述中错误的是( )。。

  A.C程序必须由一个或一个以上的函数组成

  B.函数调用可以作为一个独立的语句存在

  C.NN数NNN值,必须通过return语句返回

  D.函数形参的值也可以传回给对应的实参

  参考答案:D

  参考解析:形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在C语言中,实参向形参传送数据的方式是“值传递”。因此D选项正确。

  二、程序填空题

  41下列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符‘0’~‘9’,则将‘0’转换成‘9’,‘l’转换成‘8’,‘2’转换成‘7’,……,‘9’转换成‘0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。

  请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。

  不得增行或删行,也不得更改程序的结构!

  

  

  参考解析:

  (1)Char

  (2)Ch<=-9(3)。

  0符,既大于等于字符‘0’,同时小于等于字符‘9’。

  【考点分析】

  本题考查:函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;if语句条件表达式,本题的条件表达式是判断数字字符;函数返回值,其一般形式为“l.etllrll表达式;”。

  【解题思路】

  填空3:return语句完成函数返回操作,要实现字符转换, 应填入return~9-(ch--0)。

  填空1:函数定义时,类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型

  填空2:通过if条件语句判断字符串中字符是否是数字字

  【解题宝典】

  有参函数定义,其一般形式为:

  类型标识符函数名(形式参数表列){声明部分语句在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,必须在形参列表中给出类型说明。

  三、程序改错题

  42下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

  注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!

  

  

  参考解析:

  (1)fh(j=i+1;j<6;j++)

  (2)*(pstr+i)=}(pstr+j);

  【考点分析】

  本题考查:冒泡排序算法;for循环语句格式;指针数组。

  【解题思路】

  (1)此处考查for语句的格式,各表达式之间应用“;”隔开。

  (2)此处考查用指针表示数组元素的方法,}(pstr+I)表示pstr所指向数组的第1个元素,同理}(pstr+j)表示pstr所指向数组的第j个元素。

  【解题宝典】

  冒泡排序算法,其基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。依次类推,完成排序。

  用代码实现数组s[N]的升序排列为:for(i=0;i

  for(j=i十1;j

  if(s[i]>s[j]){t-s[i];s[i]=s[j]s[j]=t;}

  四、程序设计题

  43N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。

  例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。注意:部分源程序在文件PROGl.C中。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。

  

  

  参考解析:

  

  【考点分析】

  本题考查:链表的操作,对链表的主要操作有以下几种:建立链表、结构的查找与输出、插入一个结点、删除一个结点。

  【解题思路】

  题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分。遍历链表时应定义一个指向结点的指针P,因为“头结点”中没有数值,所以程序中让P直接指向“头结点”的下一个结点,使用语句STREC+P=h÷next。

展开全文
评论(0条) 发表
Copyright © 2004-
考试吧(3g.exam8.com)北京美满明天科技有限公司
社会统一信用代码:91110108MA01WU311X
帮助中心