2018年计算机二级考试C语言试题及答案(2)

2018年计算机二级考试C语言试题及答案(2),第1张

2018年计算机二级考试C语言试题及答案(2)

选择题(每小题1分,共40分)

1[单选题] 若有定义语句:double a, P=&a;以下叙述中错误的是()。

A定义语句中的号是一个间址运算符

B定义语句中的号是一个说明符

C定义语句中的P只能存放double类型变量的地址

D定义语句中,P=&a把变量a的地址作为初值赋给指针变量P

参考答案:A

参考解析:在变量定义double a, P=&a;中,号是一个指针运算符,而非间址运算符,所以A错误。

6[单选题] 若有定义语句:int x=10;,则表达式x-=x+x的值为()。

A0

B-20

C-10

D10

参考答案:C

参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。

2[单选题] 若有定义语句:double x,y,px,py;执行了px=&x;py=&y;之后,正确的输入语句是()。

Ascanf(”%If%le”,px,py);

Bscanf(”%f%f”&x,&y);

Csceanf(”%f%f”,xy);

Dscanf(”%If%If'’,x,y);

参考答案:A

参考解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf("%lf%If",x,y);应为scanf(“%If%If"”,&x,&y);。

3[单选题] 下列数据结构中,属于非线性结构的是()。

A循环队列

B带链队列

C二叉树

D带链栈

参考答案:C

参考解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。

4[单选题] 对于循环队列,下列叙述中正确的是()。

A队头指针是固定不变的

B队头指针一定大于队尾指针

C队头指针一定小于队尾指针

D队头指针可以大于队尾指针,也可以小于队尾指针

参考答案:D

参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队 *** 作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

5[单选题] 若变量已正确定义,在if(W)printf(”%d\n”,k);中,以下不可替代w的是()。

Aa<>b+c

Bch=getchar()

Ca==b+c

Da++

参考答案:A

参考解析:选项A是非法的表达式,C语言中没有<>运算符。

6[单选题] 下列排序方法中,最坏情况下比较次数最少的是()。

A冒泡排序

B简单选择排序

C直接插入排序

D堆排序

参考答案:D

参考解析:冒泡排序与筒单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。

7[单选题] 数据库管理系统是()。

A *** 作系统的一部分

B在 *** 作系统支持下的系统软件

C一种编译系统

D一种 *** 作系统

参考答案:B

参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据 *** 纵、数据维护、控制及保护和数据服务等。是一种在 *** 作系统之上的系统软件。

8[单选题] 以下选项中,能用作用户标识符的是()。

A_0_

B8_8

Cvoid

Dunsigned

参考答案:A

参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B中以数字8开头,所以错误。C与D中用的是关键字void与unsigned,所以错误。

9[单选题] 以下叙述中错误的是()。

A使用三种基本结构构成的程序只能解决简单问题

B结构化程序由顺序、分支、循环三种基本结构组成

CC语言是一种结构化程序设计语言

D结构化程序设计提倡模块化的设计方法

参考答案:A

参考解析:使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。

10[单选题] 下列叙述中正确的是()。

A栈是“先进先出”的线性表

B队列是“先进后出”的线性表

C循环队列是非线性结构

D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

参考答案:D

参考解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。

11[单选题] 以下不构成无限循环的语句或语句组是()。

An=0:

do{++n;}while(n<=0);

Bn=0;

while(1){n++;}

Cn=10;

while(n);{n--;}

Dfor(n=0,i=1;;i++)n+=i;

参考答案:A

参考解析:选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。

12[单选题] 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。

A1

B0

C2

D不知道a的值,不能确定

参考答案:A

参考解析:逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。

13[单选题] 下列选项中不属于结构化程序设计原则的是()。

A可封装

B自顶向下

C模块化

D逐步求精

参考答案:A

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

14[单选题] 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。

A10

B8

C6

D4

参考答案:C

参考解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。

15[单选题] 支持子程序调用的数据结构是()。

A栈

B树

C队列

D二叉树

参考答案:A

参考解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。

二级C语言机试考试只有三道题:

第一:填空(一般为三个空);

第二:改错题(一般有两个或三个错);

第三:编程题(一般是给出主程序,让你自己编子程序)。

上机 *** 作题一般都比较简单,你买一本上机题库100道,基本上做完就肯定没问题,绝对可以过。

如下这份计算机二级C语言笔试题目对于要考基计算机二级证书的朋友来说,应该会很有帮助,需要的朋友赶紧收藏吧!

一、选择题((1)-(10),(21)-(40)每题2分,(11)-(20)每题1分,共70分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

1 下列叙述中正确的是

A 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D 上述三种说法都不对 答案:B

2 下列叙述中正确的是

A 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D 上述三种说法都不对 答案:C

3 软件测试的目的是

A 评估软件可靠性 B 发现并改正程序中的错误 C 改正程序中的错误

D 发现程序中的错误 答案:B

4 下面描述中,不属于软件危机表现的是

A 软件过程不规范 B 软件开发生产率低 C 软件质量难以控制

D 软件成本不断提高 答案:A

5 软件生命周期是指

A 软件产品从提出、实现、使用维护到停止使用退役的过程

B 软件从需求分析、设计、实现到测试完成的过程 C 软件的开发过程

D 软件的运行维护过程 答案:A

6 面向对象方法中,继承是指

A 一组对象所具有的相似性质 B 一个对象具有另一个对象的性质 C 各对象之间的共同性质 D 类之间共享属性和 *** 作的机制 答案:D

7 层次型、网状型和关系型数据库划分原则是

A 记录长度 B 文件的大小 C 联系的复杂程度

D 数据之间的**** 答案:D

8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是

A 一对一B 一对多C 多对多D 多对一 答案:C

9 数据库设计中反映用户对数据要求的模式是

A 内模式B 概念模式C 外模式D 设计模式 答案:C

10 有三个关系R、S和T如下:则由关系R和S得到关系T的 *** 作是

A 自然连接B 交C 投影D 并 答案:A

11 以下关于结构化程序设计的叙述中正确的是

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

B 结构化程序使用goto语句会很便捷 C 在C语言中,程序的模块化是利用函数实现的

D 由三种基本结构构成的程序本文由论文联盟>

计算机二级C语言题型和评分标准:1、选择题:40题,每题1分。按标答给分

2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分

3、程序改错:2处错误,每处9分,共18分。都是/found/下面的一行有错误,按标答给分,如果和标答的写法不一样,就算对的也没有分。

4、程序编制题:共24分。按程序结果给分。编程完成后,存盘,编译,连接,执行,按题目要求输入,得到要求的结果就有24分,否则就是0分。

上机考试填空和改错题是按空给分的,它是按行找到那个空,然后对比打分,这也就是为什么不让你增加或减少行数的原因了对于最后一个编程题,也是差不多按这个方法来的,它把你把你编好的程序的运行结果保存在dat文件内,然后对比,再给出你的分数这个文件你可以在考生文件夹内看到,所以考完一定要检查一下这个文件,以免出现什么问题影响考试成绩

对于编程题,评分程序先是读取考生文件夹下的扩展名为DAT的文件,再其中的数据与评分程序中的提供的数据进行对比,因此,考生在编程后,一定要运行程序,以生成扩展名为DAT的输出文件!!

}

printf("%d\n",num);

}

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

A35

B37

C39

D3975

32以下程序的'输出结果是()。

main()

{char st[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st)sizeof(st));

}

A9 9

B5 20

C13 20

D20 20

33若有以下的定义:‘int t[3][2];”,能正确表示t数组元素地址的表达式是()。

A&t[3][2]

Bt[3]

Ct[l]

Dt[2][2]

34函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是()。

A文件开始

B文件末尾

C文件当前位置

D以上都不对

35下述程序的输出结果是()。

#include

main()

{ int i;

for(i=l;i<=10;i++)

{if(ii>=20)&&(ii<=100))

break;

}

printf("%d\n",ii);

}

A49

B36

C25

D64

36若有定义“int b[8],p=b;”,则p+6表示()。

A数组元素b[6]的值

B数组元素b[6]的地址

C数组元素b[7]的地址

D数组元素b[o]的值加上6

37设变量已正确定义,则以下能正确计算f=n!的程序是()。

Af=0:

for(i=1;i<=n;i++)f=i:

BF=1:

for(i=l;i<2n;i++)f=i:

Cf=l:

for(i=n;i>1;i++)f=i:

Df=1;

for(i=n;i>=2;i--)f=i:

38下述程序执行的输出结果是()。

#include

main()

{ char a[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=’&’;

printf("%s\n",a):

}

Aare&you

Byou

Care

D&

39设x=011050,则x=x&01252的值是()。

A0000001000101000

B1111110100011001

C0000001011100010

D1100000000101000

40在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A直接按系统设定的标准方式搜索目录

B先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C仅仅搜索源程序所在目录

D仅仅搜索当前目录

答案与解析

1D。解析算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

2D。解析数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

3D。解析所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。

4C。解析结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。

5D。解析文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

6C。解析面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

7D。解析所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。

8B。解析软件的过程设计是指系统结构部件转换成软件的过程描述。

9A。解析①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生;③软件产品的质量往往靠不住;④软件常常是不可维护的;⑤软件通常没有适当的文档;⑥软件成本在计算机系统总成本中所占的比例逐年上升;⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。

10C。解析对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

11C。解析数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS即数据库管理系统,是位于用户与 *** 作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。

12A。解析标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

13D。解析本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x14C。解析第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

15C。解析函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a++,b++,aq b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

16D。解析在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。

17A。解析当x为1时,执行case 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。

18D。解析本题考梦自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

19A。解析本题考查switch语句。当i一1时,执行case 1,因为没有遇到break语句,所以依次往下运行,“a=a+ 2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3= 10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

20C。解析只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

21A。解析循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。

22A。解析在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

23A。解析通过地址来引用数组元素的方法有下列5种:

(1)a[i][j];(2)(a[i]+j);(3)((a+j)+i);(4) (a[i][j]);(5)(&aE0][0]q-3i+j)。故A正确。

24C。解析选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。

25D。解析由题目ee线性链表的定义可知,要将q 和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r-> next=q,这时r指向的节点为q;p->next r,这时p指向的节点为r;q->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

26B。解析在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

27C。解析子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5O。

28C。解析在for循环语句中自变量i从0开始,每次自加2,执行s+=(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

29A。解析本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)

=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)

=10+9++8+7+6+5+fun(4)

=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)

=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2=55

以上就是关于2018年计算机二级考试C语言试题及答案(2)全部的内容,包括:2018年计算机二级考试C语言试题及答案(2)、计算机二级c语言考试机试有程序填空题改错题编程题请问各有几题、计算机二级C语言笔试题和面试题答案目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9274731.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存