全国计算机二级C选择题题库第34套.docx

上传人:b****7 文档编号:15366449 上传时间:2023-07-03 格式:DOCX 页数:27 大小:28.13KB
下载 相关 举报
全国计算机二级C选择题题库第34套.docx_第1页
第1页 / 共27页
全国计算机二级C选择题题库第34套.docx_第2页
第2页 / 共27页
全国计算机二级C选择题题库第34套.docx_第3页
第3页 / 共27页
全国计算机二级C选择题题库第34套.docx_第4页
第4页 / 共27页
全国计算机二级C选择题题库第34套.docx_第5页
第5页 / 共27页
全国计算机二级C选择题题库第34套.docx_第6页
第6页 / 共27页
全国计算机二级C选择题题库第34套.docx_第7页
第7页 / 共27页
全国计算机二级C选择题题库第34套.docx_第8页
第8页 / 共27页
全国计算机二级C选择题题库第34套.docx_第9页
第9页 / 共27页
全国计算机二级C选择题题库第34套.docx_第10页
第10页 / 共27页
全国计算机二级C选择题题库第34套.docx_第11页
第11页 / 共27页
全国计算机二级C选择题题库第34套.docx_第12页
第12页 / 共27页
全国计算机二级C选择题题库第34套.docx_第13页
第13页 / 共27页
全国计算机二级C选择题题库第34套.docx_第14页
第14页 / 共27页
全国计算机二级C选择题题库第34套.docx_第15页
第15页 / 共27页
全国计算机二级C选择题题库第34套.docx_第16页
第16页 / 共27页
全国计算机二级C选择题题库第34套.docx_第17页
第17页 / 共27页
全国计算机二级C选择题题库第34套.docx_第18页
第18页 / 共27页
全国计算机二级C选择题题库第34套.docx_第19页
第19页 / 共27页
全国计算机二级C选择题题库第34套.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全国计算机二级C选择题题库第34套.docx

《全国计算机二级C选择题题库第34套.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C选择题题库第34套.docx(27页珍藏版)》请在冰点文库上搜索。

全国计算机二级C选择题题库第34套.docx

全国计算机二级C选择题题库第34套

全国计算机二级C选择题题库第34套

1、下列叙述中错误的是

A)数据结构中的数据元素不能是另一数据结构

B)数据结构中的数据元素可以是另一数据结构

C)空数据结构可以是线性结构也可以是非线性结构

D)非空数据结构可以没有根结点

参考答案:

A

数据元素是一个含义很广泛的概念,它是数据的"基本单位",在计算机中通常作为一个整体进行考虑和处理。

数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合,所以数据结构中的数据元素可以是另一数据结构。

满足有且只有一个根结点并且每一个结点最多有一个前件,也最多有一个后件的非空的数据结构认为是线性结构,不满足条件的结构为非线性结构。

空数据结构可以是线性结构也可以是非线性结构。

非空数据结构可以没有根结点,如非性线结构"图"就没有根结点。

故选A选项。

2、为了降低算法的空间复杂度,要求算法尽量采用原地工作(inplace)。

所谓原地工作是指

A)执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)

B)执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化

C)执行算法时不使用额外空间

D)执行算法时不使用任何存储空间

参考答案:

A

算法的空间复杂度是指执行这个算法所需要的内存空间,包括输入数据所占的存储空间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。

如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。

故选A选项

3、某循环队列的存储空间为Q(1:

m),初始状态为front=rear=m。

现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为

A)m-1

B)m

C)1

D)0

参考答案:

A

循环队列长度为m,由初始状态为front=rear=m,可知此时循环队列为空。

入队运算时,首先队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。

特别的,当队尾指针rear=m+1时,置rear=1。

退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。

从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。

如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m。

该题中m-1

故选A选项。

4、某棵树只有度为3的结点和叶子结点,其中度为3的结点有8个,则该树中的叶子结点数为

A)15

B)16

C)17

D)不存在这样的树

参考答案:

C

树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。

在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。

由于只有度为3的结点和叶子结点,可知最后一层都为叶子结点,倒数第二层一部分结点度为3,一部分为叶子结点,其余的结点的度均为3,计算度为3的结点总数(33-1-1)/2<8<(34-1-1)/2可知,树共有4层,前两层有度为3的结点(33-1-1)/2=4个,第三层有33=9个结点,其中4个是度为3的结点,5个是叶子结点,所以该树中的叶子结点数为4×3+5=17。

故选C选项。

5、某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为

A)29

B)30

C)249

D)251

参考答案:

A

在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。

对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。

二叉树结点总数为530,度为2的结点有250个,则度为0的结点有251个,那么度为1的结点个数为530-250-251=29。

故选A选项。

6、若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是

A)前序序列

B)中序序列

C)后序序列

D)以上说法均可以

参考答案:

B

二叉树遍历可以分为3种:

前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。

由于结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,那么只要遍历时访问根结点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。

故选B选项。

7、将C语言的整数设为整数类I,则下面属于类I实例的是

A)-103

B)10E3

C)10.3

D)"0103"

参考答案:

A

整数类实例包括:

十进制常量用0~9表示,不能以0开头;八进制常量用0~7表示,必须用0开头;十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。

本题中B选项是科学计数法表示的浮点数实例,C选项是浮点数实例,D选项是字符串实例。

故选A选项。

8、下列叙述中正确的是

A)软件是程序、数据和文档

B)软件是程序和数据

C)软件是算法和数据结构

D)软件是算法和程序

参考答案:

A

计算机软件由两部分组成:

一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。

故选A选项。

9、软件生命周期是指

A)软件的定义和开发阶段

B)软件的需求分析、设计与实现阶段

C)软件的开发阶段

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

参考答案:

D

通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。

选项A、B、C选项均为生命周期的一部分。

故选D选项。

10、下列叙述中正确的是

A)数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能

B)数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件

C)数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少

D)数据库系统独立性较差,而文件系统独立性较好

参考答案:

A

数据管理技术的发展经历了3个阶段:

人工管理阶段、文件系统阶段和数据库系统阶段。

三者各自的特点如下表所示。

特点

人工管理阶段

文件系统阶段

数据库系统阶段

管理者

文件系统

数据库管理系统

面向对象

某个应用程序

某个应用程序

现实世界

共享程度

无共享,冗余度大

共享性差,冗余度大

共享性大,冗余度小

独立性

不独立,完全依赖于程序

独立性差

具有高度的物理独立性和一定的逻辑独立性

结构化

无结构

记录内有结构,整体无结构

整体结构化,用数据模型描述

控制能力

由应用程序控制

由应用程序控制

由DBMS提供数据安全性、完整性、并发控制和恢复

数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能。

数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。

数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。

故本题选A选项。

11、关于程序模块化,以下叙述错误的是

A)程序模块化可以提高程序运行的效率

B)程序模块化可以提高程序编制的效率

C)程序模块化可以提高程序代码复用率

D)程序模块化可以提高调试程序的效率

参考答案:

A

模块化程序的优点:

1、易于维护和复用,可以提高程序编制的效率,2、易于分工合作,3、易于模块化调试测试。

模块化程序的副作用:

1、可能会降低程序运行效率,2、设计的前期工作需要多花费时间。

可知选项B,C,D正确。

12、以下是正确C语言标识符的

A)&3

B)#3

C)_3

D)-3

参考答案:

C

C语言合法标识名的命名规则是:

(1)标识符由字母、数字和下划线组成,

(2)第一个字符不能是数字只能是字母或下划线。

选项A的第一个字符为&,非法,选项B,第一个字符为#,非法,选项D,第一个字符为-,非法。

答案为选项C。

13、若有定义:

inta,b,c;以下程序段的输出结果是

a=11;b=3;c=0;

printf("%d\n",c=(a/b,a%b));

A)2

B)0

C)3

D)1

参考答案:

A

C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。

逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。

也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。

因此c的值为a%b即11%3=2,故答案为A选项。

14、以下选项中合法的C语言常量是

A)'C-STR'

B)2014.1

C)"\1.0

D)2EK

参考答案:

B

所谓常量是指在程序运行的过程中,其值不能被改变的量。

在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。

选项A是字符串,但使用单引号,错误,选项C,D,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。

故答案为B选项。

15、设有定义:

intx,y,z;,且各变量已赋正整数值,则以下能正确表示代数式""的C语言表达式是()。

A)1.0/x/y/z

B)1/x*y*z

C)1/(x*y*z)

D)1/x/y/(double)z

参考答案:

A

代数表达式1/

是小数,转为c语言的表达式必须是小数A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A正确。

选项B,C,D的表达式均为0,因此只有选项A正确。

答案为A选项。

 

16、有以下程序

#include

main()

{chara,b,c,d;

scanf("%c%c",&a,&b);

c=getchar();

d=getchar();

printf("%c%c%c%c\n",a,b,c,d);

}

当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:

回车也是一个字符)

12

34

则输出结果是

A)12

3

B)12

C)1234

D)12

34

参考答案:

A

scanf()函数从标准输入输出中读入两个字符'1''2'分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受这个字符,故c赋值为回车符,然后第二个getchar()读入字符'3',因此a='1',b='2',c=,d='3',故答案为A选项。

17、有以下程序

#include

main()

{inta,b;

for(a=0;a<3;a++)

{scanf("%d",&b);

switch(b)

{default:

printf("%d,",b+1);continue;

case1:

printf("%d,",b+1);

case2:

printf("%d,",b+1);continue;

}

}

}

执行时输入:

123<回车>,则输出结果是

A)2,2,3,4,4,4,

B)2,3,4,

C)2,2,3,4,

D)2,3,3,4,5,6,

参考答案:

C

continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。

switch…case如果没有break会导致多个分支重叠。

因此,输入1,2,3,则1执行case1:

printf("%d,",b+1);case2:

printf("%d,",b+1);continue;后结束。

2则执行case2:

printf("%d,",b+1);continue;3则执行default:

printf("%d,",b+1);continue;得到的结果是2,2,3,4。

故答案为C选项。

18、有以下程序

#include

#include

main()

{doublex,y,z;

scanf("%lf%lf",&x,&y);

z=x/y;

while

(1)

if(fabs(z)>1.0)

{x=y;y=x;z=x/y;}

elsebreak;

printf("y=%f\n",y);

}

执行时输入:

3.62.4<回车>,则输出结果是

A)2.400000

B)1.500000

C)1.600000

D)2.000000

参考答案:

A

题目中程序执行过程中关键语句的结果为:

z=1.5,if条件成立,x=2.4,y=2.4,z=1.0,下一次循环if条件不成立跳出循环,按照格式打印y值为2.400000。

故答案为A选项。

19、有以下程序

#include

main()

{inti;

charc;

scanf("%c",&c);

for(i=0;i<5;i++)

{

if(i>c)continue;

printf("%d,",i);

}

}

执行时输入:

0<回车>后,则输出结果是

A)5

B)0,0,0,0,0,

C)0,1,2,3,4,

D)0,1,

参考答案:

C

scanf("%c",&c),输入的字符,题目中输入了0,是字符,对应于

ASCII码为48,因此for循环,i的范围从0~5,均小于48,

if条件不成立,直接执行下一条语句,因此执行printf,因此得到的结果是0,1,2,3,4。

故答案为C选项。

20、以下程序拟实现计算sum=1+1/2+1/3+…+1/50。

#include

main()

{inti;doublesum;

sum=1.0;

i=1;

do

{i++;sum+=1/i;}

while(i<50);

printf("sum=%lf\n",sum);

}

程序运行后,不能得到正确结果,出现问题的语句是

A)sum+=1/i;

B)while(i<50);

C)sum=1.0;

D)i++;

参考答案:

A

选项A,sum+=1/i;i为整型,因此1/i是整型类型,当1/i有小数时,会被截断。

因此1/i结果始终为0,导致结果出错。

,应该改为sum+=1.0/i。

因此答案为A选项。

21、若有定义语句:

doublea,*p=&a;

以下叙述中错误的是

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

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

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

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

参考答案:

A

指针运算符(通常称为间接引用运算符:

indirectionoperator或复引用运算符:

dereferencingoperator),它返回其操作数(即一个指针)所指向的对象的值。

定义语句中的*号不是一个间址运算符,而是定义指针变量的说明符,因此,A项错误,B项正确,原则上说p可以放double兼容性的变量地址,C项正确,根据指针的赋值运算,可知D项正确。

故答案为A选项。

22、关于函数返回值,以下叙述正确的是

A)函数可以返回整个结构体,即使结构体中有数组

B)函数只能返回基本数据类型的数值或指针

C)函数不可以返回一个数组

D)函数不能没有返回值

参考答案:

A

函数返回值可以整型、实型、字符型、指针和结构类型,也可以没有返回值。

因此选项A正确,可以返回数组指针,因此可知选项B,C,D错误。

故答案为A选项。

23、有以下程序

#include

intfun(int*b,intn)

{inti,r=1;

for(i=0;i<=n;i++)r=r*b[i];

returnr;

}

main()

{intx,a[]={2,3,4,5,6,7,8,9};

x=fun(a,3);

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

}

程序运行后的输出结果是

A)24

B)720

C)120

D)6

参考答案:

C

fun(),求数组指定返回的元素的积。

fun(a,3),求的是数组a[0]~a[3]的积。

因此结果为2*3*4*5=120,故答案为C选项。

24、若有语句:

inta[3][4],(*p)[4];p=a;,则以下选项中叙述错误的是

A)系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值

B)p+1代表a[1][0]的地址

C)p中将存放a数组的首地址

D)p+2代表a数组最后一行的首地址

参考答案:

A

(*p)[4]定义了一个数组指针。

p可以指向类似于arry[][4]的数组,题设中,p不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。

p+1代表了第一行第一个元素的地址,p=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。

故答案为A选项。

25、有以下程序

#include

voidchange(char*array,intlen)

{for(len--;len>=0;len--)

array[len]+=1;

}

main()

{inti;

chararray[5]="ABCD";

change(array,4);

for(i=0;i<4;i++)

printf("%c,",array[i]);

}

程序运行后的输出结果是

A)B,C,D,E,

B)A,B,C,D,

C)C,D,E,F,

D)B,D,F,H,

参考答案:

A

函数change()的作用将从数组尾部将数组内的元素值加1。

数组的初始值为ABCD,因此经change()后,得到的值为BCDE。

故答案为A选项。

26、

设有以下程序段

floata[8]={1.0,2.0};

intb[1]={0};

charc[]={"A","B"};

chard=="1";

以下叙述正确的是

A)只有变量c的定义是合法的

B)只有变量a,b,c的定义是完全合法的

C)所有变量的定义都是完全合法的

D)只有变量a,b的定义是完全合法的

参考答案:

D

floata[8]={1.0,2.0};定义了一个包含8个float型元素的数组,并初始化了数组的前2项,其他项是随机数。

intb[1]={0},定义了只有一个int型元素的数组,并初始化为0。

charc[]={"A","B"};定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。

chard="1";定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。

因此只有a,b定义和初始化正确。

故答案为D选项。

27、有以下程序

#include

main()

{inta[4],p,x,i;

for(i=3;i>0;i--)a[i-1]=i*2-1;

scanf("%d",&x);

i=0;

while(a[i]

p=i;

for(i=3;i>p;i--)a[i]=a[i-1];

a[p]=x;

for(i=0;i<4;i++)printf("%3d",a[i]);

printf("\n");

}

执行时输入:

2<回车>,则输出结果是

A)1234

B)5431

C)1235

D)3214

参考答案:

C

第一个for循环初始化数组a,分别为1,3,5,随机数,形成了基本有序的序列,再将输入的数字插入到数组a,使他们形成有序序列。

因此可以分析出,打印的结果为1,2,3,5。

故答案为C选项。

28、有以下程序

#include

intfun(inta[],intn,intx)

{int*p=a;

while(p

=x)p++;

if(p

elsereturn-1;

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

printf("%d\n",fun(a,10,10));

}

程序运行后的输出结果是

A)9

B)-1

C)10

D)0

参考答案:

A

while(p

=x)p++;p=a;n=10,x=10;while循环条件成立,直到p=a+9,结束循环,执行下一条语句,if条件成立,返回p-a,此时执行p-a=a+9-a=9;因此,输出9。

故答案为A选项。

29、有以下程序

#include

main()

{charw[20],a[5][10]={"abcde","fghij","klmno","pqrst","uvwxy"};

inti;

for(i=0;i<5;i++)

w[i]=a[i][i];

w[5]='\0';

printf("%s\n",w);

}

程序运行后的输出结果是

A)ejoty

B)afkpu

C)agmsy

D)eimqu

参考答案:

C

数组a是二维数组,数组w存放二维数组a行列值相同位置的元素,由a[5][10]可得w[0]~w[4]的元素分别是agmsy,因此打印结果为agmsy。

故答案为C选项。

30、语句printf("%d\n",strlen("\t\"\\\n\'\065\08AB"));的输出结果是

A)6

B)7

C)8

D)9

参考答案:

A

字符串"\t\"\\\n\'\065\08AB"中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符'\0'为止,然后返回计数器值(长度不包含"\0")。

故输出结果为6。

答案为A选项。

31、有以下程序

#include

#include

voidfun(char*s,intm1,intm2)

{chart,*p;

p=s+m1;s=s+m2;

while(s

{t=*s;*s=*p;*p=t;

s++;p--;

}

}

main()

{charss[10]="012345678";

intn=6;

fun(ss,0,n-1);

fun(ss,9,n);

fun(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2