2018年计算机二级C语言模拟题4_第1页
2018年计算机二级C语言模拟题4_第2页
2018年计算机二级C语言模拟题4_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2018年计算机二级c语言模拟题4(总分:100.00,做题时间:120分钟)一、选择题(毎题1分,共40分)下列各题a )、b )、c )、d )四个选项中,只有一个选项是正确的。(总题数:40,分数:40.00)1.下列数据结构中,属于非线性结构的是( )。(分数:1.00)循环队列b.带链队列c.二叉树 d.带链栈解析:a.树是简单的非线性结构,因此二叉树作为树的一种属于非线性结构,答案c正确。2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:1.00)循环队列b.栈 c.队列d.二叉树解析:a.栈是按先进后出的原则组织数据的;队列是按先进先出的原则组织数据的,因此

2、本题答案为b。3.对于循环队列,下列叙述中正确的是( )。(分数:1.00)队头指针是固定不变的b.队头指针一定大于队尾指针c.队头指针一定小于队尾指针d.队头指针可以大于队尾指针,也可以小于队尾指针 解析:a.循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列 结构,所以对头指针有时可能大于队尾指针有时也可能小于队尾指针,故本题答案为d。算法所处理的数据量c.算法程序中的语句或指令条数d.算法在执行过程中所需要的临时工作单元数 解析:b.算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为5.a。软件设计中划分模块的一个准则是( )。

3、(分数:1.00)低内聚低耦合b.高内聚低耦合 c.低内聚高耦合d.高内聚高耦合解析:a.一般较优秀的软件设计应尽量做到高内聚、低耦合, 即减弱模块之间的耦合性和提高模块内的内聚性,有 利于提高模块的独立性,因此本题答案为b。6.下列选项中不属于结构化程序设计原则的是( )。(分数:1.00)可封装 b.自顶向下c.模块化d.逐步求精 解析:a.结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限goto语句, 因此本题答案为a制使用软件详细设计产生的图如下:该图是( )。(分数:1.00)7.a. n-s图b. pad图程序流程图 d. e-r图解析:c.n-s图提出了用方框图来代替传统

4、的程序流程图,因此a不对。pad图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,因此b不对。e-r图是数据库中用于表示e-r模型的图示工具,因此d不对。根据图中所示表示方法可以得知该图是进行软件详细设计时 使用的程序流程图,因此本题答案为c。操作系统的一部分b.在操作系统支持下的系统软件 c.一种编译系统d.种操作系统 解析:a.数据库管理系统是数据库的机构,它是一种系统软件,负责数据库 据组织、数据操纵、数据中的数 控制及保护和数据服务等,是一种在操作系统支持下的系维护、 答案为b。9.在e-r图中,用来表示实体联系的图形是( )(分数:1.

5、00)椭圆形b.矩形c.菱形 d.三角形解析:a.在e-r图中实体集用矩形表示,属性用椭圆表示,联系用菱形表示,因此选择c。有三个关系r、s和t如下:其中关系t由关系r和s通过某种操作得到,该操作为( )。(分数:1.00)10.选择b.投影c.交d.并 解析:a.在关系t中包含了关系r与s中的所有元组,所以进行的是并的运算,答案为d。11.以下关于结构化程序设计的叙述中正确的是( )。(分数:1.00)三种基本结构构成的程序只能解决小规模的问题b.结构化程序使用goto语句会很便捷c.一个结构化程序必须同时由顺序、分支、循环三种结构组成d.在c语言中,程序的模块化是利用函数实现的解析:a.使

6、用goto语句会使程序混乱,所以b错误;一个结构化程序没有必要同时由顺序、分支、循环三种结构 组成,所以c错误;使用三种基本结构构成的程序可以解决任何复杂的问题,所以a错误。a.程序的执行总是从main函数开始 程序的执行总是从程序的第一个函数开始,在main函数结束c.程序的执行总是从main函数开始,在程序的最后一个函数中结束b.程序的执行总是从main函数开main函数调用执在main函数中结束,其他函数行,所以a正始,通过13.以下选项中能表示合法常量)。(分数:1.00)的是(d.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 解析:a.007b.1.5e2.0c.

7、d.1,200解析:“ ”为转义字符,后面跟特 定字符,用来表示ascii字b错误;整数,符,c错误; 一个整数之间不能有逗d错号,误。14.以下定义语句中正确的是()。(分数:1.00)e前e后有数字,e后数字为a. int a=b=0;b.char a=65+1,b=bd.double a=0.0; b=1.1;解析: 定义变量时不能连等,所以a错误,c选项中,b是指针,c定义为指向 指针的指针才可以接受&b,所以c错误,d选项,b=1.1前没有类型名,所以错误。)。(分数:1.00)15.若变量x、y已正确定义并賦值,以下符合c语言语法的表达式是(a.b. x+1=y+x,y=x

8、-c. x=x+10=x+yb和c错误;类型转换需要用括号括x+1和x+10不能做左起类型名,所以d错误值,给a赋值1、给b赋值2、给c赋值3,以 下型,要输入形式d. double(x)/10解析:通过语中错误的是)(注:代表一个空格符)。(分数:1.00)(16.若变量已正确定inta.123 b.1,2,3c. 1,2,3d. 1,2,3解析:本题考查的是格式化输入函数scanf()基本用法。使用该语句时,要求除格 式控制符以外的字符都要原样 输入,“,”为非格式符,要原样输入。选项a中没有输入非格式符所 以是不正确的。以下不能输出字符a的语句是( )(注:字符a的ascii码值为65,

9、字符a的ascii码值为97)(分数:1.00)17.a. printf (%c n,65);b. printf (%c n,a-32);c.d.printf (%d n,a);printf (%c n;b-1);解析:d输出整数,所以选择c。18.若a是数值类型,则逻辑表达式(a=1)ll(a!=1)的值是( )。(分数:1.00)a. a的值不确定b. 0c. 2d. 1解析:无论a的值为多少,(a=1)和(a!=1)总会有一个成立,两者或运算,则值为真,为119.设有定义:int a=1, b=2, c=3 ;以下语句中执行效果与其他三个不同的是( )。(分数:1.00)a.b. if(

10、ab) c=a,a=b,b=c;if(ab) c=a;a=b;b=c;c. if(ab) c=a,a=b,b=c;d. if(ab) c=a;a=b;b=c;解析:选项b、d中if语句后都是一条复合语句,c中if语句后都是一条 语句,选项a之后有3条语句,选项 所以答案选择a。20.有以下程序a. y=0b. y=-1c. y=1d. while构成无限循环 解析: 当y为0财,表达式y-才为假,循环结束,最终y的值为-1,所以答案选择b21.有以下程序程序运行后的输出结果是( )。(分数:1.00)a.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9b.1*1=1 1*2=

11、2 1*3=32*1=2 2*2=43*1=3c.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9d.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:外层循环i,值分别为1 2 3,内层循环分1 2 3、2 3和3,所以答案为a。别为22.有以下程序a. *7b. *3*5c. *5d. *2*6解析:本题考査的是break语句。dowhile循环是“先执行,后判断”,所以 无论条件如何,它都至少会执行 一遍。程序首先初始化变量i为5,然后进入dowhile循环体,首先判断(i%3=1),因为5%3=2,所以if条件不满足,跳过下面的if语句,执行i+

12、,i变为6。第1遍循环结束,判断(i!=0)为真,继续循环。 现在i%3=6%3=0,所以if语句还是不被执行,继续i+,i变为7,仍然满足(i!=0),继续 循环。第3遍循环i%3=7%3=1,满足条件(i%3=1),继续判断条件i%5=2成立,即输出*7,然后执行break语句跳出循环。23.以下叙述中错误的是()。(分数:1.00)函数形参的值也可以传回给对应的实参 b.函数调用可以作为一个独立的语句存在c.若函数有返回值,必须通过return语句返回d. c程序必须由一个或一个以上的函数组成 解析:a.函数参数传递是个不可逆的过程,形参不会把值传回实参,所以a选项错误24.有以下程序程

13、序运行后的输出结果是( )。(分数:1.00)a. 4b. 2c. 1d. 3 解析:c的值为a乘以b的值,为3。所以答案选择d。25.有以下程序分数:1.00)a. 1, 3b. 2, 3c. 1, 4d. 1, 2解析:f函数功能使第二个指针指向的元素增1,第一个指针指向的元素不变,所 以答案选择a26.若有定义语句:;则以下语句中正确的是( )。(分数:1.00)int a23, *p3a. p0=&a12;b. p0=a;c. p=a;d. p1=&a;解析:本题考查的知识点是:二维数组和指针数组。无论一个数组有多少维或者是否含指针类型,该数组最终都 可以被看做一个比较

14、特殊的一维数组。例如本题中的int a23可以看作元 素为int3(即包含3个int型元素的一维数组),包含2个这样元素的一维数组;而int*p3则可以看作元素为int*,包含3个 这样元素的一维数组。选项c中,p为数组名,其值是不能被改变的,故非法;选项b中,p0的类型是int*,而a是二维数组名(类型为int3),两者无法赋值,故非法;选项a中,p0为int型指针,&a12为元素a12的地址,所以选项a符合题意。以下程序中函数f的功能是:当flag为1时,进行由小到 当flag为0时,进行由大到小大排序;排序27.程序运行后的输出结)。(分数:1.00)a.1,2,3,4,5,6,

15、7,8,9,10,b.3,4,5,6,7,2,1,8,9,10,c.5,4,3,2,1,6,7,8,9,10,d.10,9,8,7,6,5,4,3,2,1,解析:0时从大到小排序,这道题要注意排序flag为1小时从小到大排flag为序, 案选择b。的起始, 和排序的个数,答程序运行后的输出结果是(28.有以下程序a. 4 3 3 2b. 2 3 4 4c. 1 2 3 4d. 1 1 2 3解析:)。(分数:1.00)si元素作为c数组的下标,使c数组元素自增,执行完毕后,c数组元素为0 4 3 3 2,按题目要求输出4 3 3 2,所以答案选择a。29.设有定义:char*c;以下选项中能够

16、使c正确指向一个字符串的是( )。(分数:1.00)b. scanf(%s,c);c. c=getchar();d. *c=string解析:选项a定义字符数组str,然后将str赋值给c,c便指向字符串str,符合题 意,所以选择a30.若有定义语句:char s10=123456700;则strlen(s)的值是()。(分数:1.00)a. 10b. 8c. 9d. 7解析:本题考査的是字符串的长度。字符数组中可以存放字符串,但字符数组的长度并不是字符串的长度,字符 串的长度是指字符数组中存放的有效字符个数,即0之前的字符数。字符数组s中依次存放的字符是:1234567和2个字符串结束标记

17、0,故字符串的长度是7,所以应该选择d。31.若有定义语句:程序运行后的输出结果是( )。(分数:1.00)a. 6b. 9c. 11d. 7解析:本题首先定义了3个字符数组p、q、r,并分别被初始化。 数组p指定的大小为20,初始化列表为a,b,c,d,即只指定了前4个元素的内容, 根据c语言的规定, 初始化列表不足时,其余元素均自动初始化为0。 然后通过strcat( )函数,将字符串r连接到字符串p之后,即执行后p中的内容为“123d123de”。因为 “strlen(q)”表示求字符串q的长度,很明显为3,所以语句“strcpy(p+strlen(q),q)”的作用就是将 字符串q复制

18、到数组p的第4个元素位置处。程序运行后的输出结果)。(分数:1.00)是(32.有以下程序(注:字母a的ascii码值是65)a. ytb. btc. yed. by解析:fun函数输出ascii码值为奇数的字符,所以答案选择c。程序运行后的输出结果是(33.有以下程序)。(分数:1.00)a. 21b. 11c. 6d. 120解析: 循环调用fun函数,依次返回值为2、3、4、5、6, s原值为1,累加以上返 回值,最终结果为21,所以 答案选择a。有以下程序程序运行后的输出结果是(a. c d e f34.b. a b e fc. a b c dd. c d a b解析: 调用fun1函

19、数将全局变量a和b赋值为c和d,然后输出全局变量a和b,)。(分数:1.00)最 后调用fun2输出局部变 量a和b的值e和f。答案选择a。35.以下关于typedef的叙述错误的是( )。(分数:1.00)b. typedef只是将已存在的类型用一个新的名字来代表用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名d.用typedef可以增加新类型 解析:c.用typedef没有增加新类型,所以选择d。程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。36.若有以下程序段q

20、=s;s=s-next;p=s;while(p-next) p=p-next;p-next=q; q-next=null;该程序段实现的功能是( )。(分数:1.00)首结点成为尾结点 b.尾结点成为首结点c.删除首结点d.删除尾结点 解析:a.循环找到末尾结点,然后赋值给第一个结点,所以选择a37.有以下程序程序运行后的输出结果是( )。(分数:1.00)a. 143b. 197c. 33d. 28解析:s(k+j)展开后为4*(k+j)*k+j+1,结果为143,选择a38.若有以下程序段n,r?1 );int r=8;输出结果是()。(分数:1.00)a. 8b. 4c. 16d. 2解

21、析:r右移1位,结果为4,所以选择b。39.以下叙述中错误的是()。(分数:1.00)a. getchar函数用于从磁盘文件读入字符 b. gets函数用于从终端读入字符串c. fputs函数用于把字符串输出到文件d. fwrite函数用于以二进制形式输出数据到文件解析:本题考査的是文件操作。 题中“fopen(fn,w)”的作用是打开fn所指向的文件, 使用文件方式为“写入”; “fputs(str,fp)”的作用是将字符str的值输出到fp所指向的文件中去。 在程序 中,两次使用“写入” 的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的 数据,故

22、本题中t1.dat的内容为end。故本题答案为a。40.有以下程序以上程序执行后abc.dat文件的内容是( )。(分数:1.00)a.chinangb.chinac. chinabeijingd. beijingchina解析:本题考査的是文件操作。程序首先定义了一个文件指针pf,并使用fopen()函数以“wb+”方式新建一个 可读写的二进制文件“123.dat”。然后使用fwrite()函数写入字符串s2的前7*1个 字符。现在文件中 的内容应该为“beijing”。接下来程序使用rewind()函数,将文件的读写指针调回起始位 置。并又调用fwrite()函数写入字符串s1的前5*1个字符。所以文件原内容“beijing”的前5个字符被覆盖,结 果为 “chinang”,故本题应该选择a。二、程序填空题(总题数:1,分数:20.00)函数fun的功能是计算的前n项。若x=2.5,函数值为:12.182340。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的blank1.c中。不得增行或删行,也:f得更改程序的结构!分数:20.00)填空项1:(1) 1.0正确答案:(2)1(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论