全国计算机二级C选择题题库第33套Word文件下载.docx

上传人:b****8 文档编号:22442963 上传时间:2023-02-04 格式:DOCX 页数:26 大小:32.79KB
下载 相关 举报
全国计算机二级C选择题题库第33套Word文件下载.docx_第1页
第1页 / 共26页
全国计算机二级C选择题题库第33套Word文件下载.docx_第2页
第2页 / 共26页
全国计算机二级C选择题题库第33套Word文件下载.docx_第3页
第3页 / 共26页
全国计算机二级C选择题题库第33套Word文件下载.docx_第4页
第4页 / 共26页
全国计算机二级C选择题题库第33套Word文件下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

全国计算机二级C选择题题库第33套Word文件下载.docx

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

全国计算机二级C选择题题库第33套Word文件下载.docx

故选择D选项。

5、非空循环链表所表示的数据结构

A)有根结点也有叶子结点

B)没有根结点但有叶子结点

C)有根结点但没有叶子结点

D)没有根结点也没有叶子结点

在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。

循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。

循环链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。

故选择A选项

6、设二叉树中共有31个结点,其中的结点值互不相同。

如果该二叉树的后序序列与中序序列相同,则该二叉树的深度为

A)31

B)16

C)17

D)5

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

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

由结点值互不相同而后序序列与中序序列相同,可知该二叉树所有的结点都没有右子树,所以31个结点的二叉树深度为31。

7、在最坏情况下,堆排序的时间复杂度是

A)

B)

C)

D)

B

若有n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆,大根堆是指所有结点的值大于或等于左右子结点的值;

小根堆是指所有结点的值小于或等于左右子结点的值。

在调整建堆的过程中,总是将根结点值与左、右子树的根结点进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。

堆排序最坏情况需要次比较,所以时间复杂度是,B选项正确。

8、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。

下面属于系统软件的是

A)学籍管理系统

B)ERP系统

C)C编译程序

D)CAI软件

C

计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。

系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。

应用软件是为了应用于特定的领域而开发的软件。

支撑软件介于系统软件和应用软件之间,协助用户开发软件的工具型软件,其中包括帮助程序人员开发和维护软件产品的工具软件,也包括帮助管理人员控制开发进程和项目管理的工具软件,如Dephi、PowerBuilder等。

选项C属于系统软件,选项A、B、D属于应用软件,故选C选项。

9、存储在计算机内有结构的数据集合是

A)数据库

B)数据库系统

C)数据库管理系统

D)数据结构

数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。

数据库系统是由数据库及其管理软件组成的系统,是应用软件。

数据库管理系统是数据库系统的核心,它位于用户与操作系统之间,属于系统软件。

数据结构是计算机存储、组织数据的方式。

故本题选A选项。

10、在数据库技术中,为提高数据库的逻辑独立性和物理独立性,数据库的结构被划分成用户级、存储级和

A)概念级

B)外部级

C)管理员级

D)内部级

数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。

概念模式是数据库系统中全局数据逻辑结构的描述,全体用户的公共数据视图。

外模式也称子模式或者用户模式,是用户的数据视图,也就是用户所能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。

内模式又称物理模式,是数据物理结构和存储方式的描述,是数据在数据库内部的存储方式。

所以数据库的结构被划分成用户级、存储级和概念级。

11、以下是正确C语言实型常量的是

A).e-1

B)e-1

C)-1e

D)1e-1

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

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

实型常量有两种表示形式:

十进制小数形式、指数形式。

指数形式中e后面的指数必须是整数,阶码标志e之前需要有数字,由此可知选项A,B,C错误。

答案为D选项。

12、以下是正确C语言实型常量的是

13、以下叙述正确的是

A)在C语言中分号是语句的组成部分

B)C语言程序由C语句组成,可以省略main函数

C)分号是C语句之间的分隔符

D)所有程序行都必须用分号结束

C语言C程序的入口函数是main(),因此C程序中有且只有一个main函数,故选项B错误。

分号是C语言一条语句的结束标志,不是分隔符,C语言分隔符是用来分隔多个变量、数据项、表达式等的符号,包括逗号、空白符、分号和冒号等等,选项C错误。

C语言的程序不是以分号结束的,分号是C语言一条语句的结束标志,C语言是面向过程的,从main函数开始在main函数里结束,选项D错误。

故答案为A选项。

14、若有定义:

doublea,b,c;

能正确给a,b,c输入数据的语句是

A)scanf("

%lf%lf%lf"

&

a,&

b,&

c)

B)scanf("

%f%f%f"

&

c);

C)scanf("

a,b,c);

D)scanf("

%lf,%le是针对double的,如果仅用%f,输入的数据可能不完全接收,数据的精度可能不足。

%f主要针对float类型的变量的输入,因此选项B错误。

根据题目格式可知A,C错误。

故答案为D选项。

15、有以下程序

#include<

stdio.h>

main()

{intx=0x9;

printf("

%c\n"

'

A'

+x);

}程序运行后的输出结果是

A)I

B)J

C)K

D)H

printf("

+x),x=0x9(16)转为十进制x=9,,因此printf("

+9),打印格式要求是%c,因此在字符A,按字母顺序向后偏移9个位置,可得结果为J。

故答案为B选项。

16、设有定义:

doublex=5.16894;

,则语句printf("

%lf\n"

(int)(x*1000+0.5)/1000.);

的输出结果是

A)5.16900

B)5.16800

C)0.00000

D)输出格式说明符与输出项不匹配,产生错误信息

(x*1000+0.5)--x移动3位小数,加0.5,也就是小数第4位加5,若这位大于等于5,则进1到个位。

5.16894*1000→5168.94

+0.5→5169.44

(int)(x*1000+0.5)强制转换为整型结果为5169

5169/1000.0)→5.169,由于1000.0结果自动转换为浮点数

所以printf("

%lf\n"

,5.169)结果是5.16900故答案为A选项。

17、有以下程序

#include<

main()

{inta=0,b=0,c=0,d=0;

if(a=1)b=1;

c=2;

elsed=3;

%d,%d,%d,%d\n"

a,b,c,d);

}

程序输出

A)编译有错

B)0,0,0,3

C)1,1,2,0

D)0,1,2,0

C语言规定else总是和之前与其最近的且不带else的if配对,题目中,if(a=1)b=1;

默认省略的else已经配对了,下一句else没有匹配if为非法else。

另外if的判断条件a=1是赋值语句,不是判断语句,此处也会产生编译错误。

因此答案为A选项。

18、有以下程序

{inta=-2,b=2;

for(;

++a&

&

--b;

;

%d,%d\n"

a,b);

A)0,1

B)0,0

C)1,-1

D)0,2

for(;

);

for循环的1,3表达式缺省项,判断条件为++a&

--b;

a=-2,b=2;

第一次执行了++a和--b,,表示为真,循环条件成立,第二次执行++a为0,由于&

运算符,当第一个条件为假时,不执行第二个条件,所以b=1,发生短路,--b不执行了。

因此a,b的最终值0,1。

19、有以下程序

{intt;

scanf("

%d"

&

t);

if(t++<

6)printf("

%d\n"

t);

elseprintf("

t--);

\n"

}执行时输入:

6<

回车>

,则输出结果是

A)6

B)8

C)7

后置自增运算:

k++表示先运算,后自加。

if(t++<

t的初值为6,t++<

6,则条件为假,执行printf("

t--),此时t=7,,打印t值为7,之后进行自减操作t=6。

,。

因此打印的结果为7。

故答案为C选项。

20、有以下程序

{charch='

D'

;

while(ch>

'

{ch--;

putchar(ch);

if(ch=='

)break;

putchar(ch+1);

}

程序运行后的输出结果是

A)CB

B)BCA

C)CCBB

D)CDBCA

putchar()函数功能是输出一个字符,由whlie判断条件和ch初始值可知,,只要ch

'A',每次执行二次putchar,否则跳出。

第一次输出CD,第二次输出BC,第三次输出A,跳出循环。

因此答案为D选项。

21、以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s>

1000为止。

{ints,n;

s=1;

n=1;

do

{n=n+1;

s=s+n*n;

while(s>

1000);

s=%d\n"

s);

程序运行后,不能得到正确结果,以下修改方案正确的是

A)把while(s>

改为while(s<

=1000);

B)把s=1;

改为s=0;

C)把n=1;

改为n=0;

D)把n=n+1;

改为n=n*n;

题目中程序不能实现预期功能是因为while的循环条件错误,选项B,把s=1,改为s=0,最终的结果s=4,与题目原意不同,

选项C,把n=1;

最终的结果s=2,与题目原意不同,

选项D,把n=n+1;

最终的结果s=2,与题目原意不同

选项A,正确的修改了while循环条件,可以得到正确结果。

22、有以下程序

{intm,n;

%d%d"

m,&

n);

while(m!

=n)

{while(m>

n){m=m-n;

while(n>

m){n=n-m;

m);

}

该程序的功能是

A)计算m和n的最小公倍数

B)计算m和n的最大公约数

C)计算m和n的差值

D)找出m和n中的较大值

题目使用更相减损术求最大公约数,其思想:

1、任意给定两个正整数,判断它们是否都是偶数。

若是,则用2约简,若不是则执行第二步。

第二步:

以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。

继续这个操作,直到所得的减数和差相等为止。

则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。

因此。

23、有以下程序

intadd(inta,intb){return(a+b);

{intk,(*f)(),a=5,b=10;

f=add;

则以下函数调用语句错误的是

A)k=f(a,b);

B)k=add(a,b);

C)k=(*f)(a,b);

D)k=*f(a,b);

*与()的优先级,()的优先级高于*,因为(*f)()是在定义函数指针。

f指向函数的指针。

f=add,将函数add()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用*取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。

24、若有定义语句:

doublex,y,*px,*py;

执行

px=&

x;

py=&

y;

正确的输入语句是

%lf%lf"

x,y);

%f%f"

x,&

y);

x,y);

%lf%le"

px,py);

%lf,%le是针对double的,如果仅用%f,输入的数据可能不能被完全接收,数据的精度可能不足。

%f主要针对float类型的变量的输入,选项B错误。

根据scanf(格式,变量地址),选择A,C错误。

因此,选择D。

25、以下定义数组的语句中错误的是

A)intnum[][3]={{1,2},3,4,5,6};

B)intnum[2][4]={{1,2},{3,4},{5,6}};

C)intnum[]={1,2,3,4,5,6};

D)intnum[][4]={1,2,3,4,5,6};

intnum[2][4]={{1,2},{3,4},{5,6}};

定义数组是2行4列,但是初始化的结构是3行2列,因此初始化错误。

选项A,num[][3]={{1,2},3,4,5,6};

定义3行3列的数组。

选项D,num[][4]={1,2,3,4,5,6},定义了2行4列数组,选项C,一维数组的定义和初始化。

26、有以下程序

voidfun(inta[],intn,intflag)

{inti=0,j,t;

for(i=0;

i<

n-1;

i++)

for(j=i+1;

j<

n;

j++)

if(flag)

{if(a[i]<

a[j])

{t=a[i];

a[i]=a[j];

a[j]=t;

else

{if(a[i]>

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

fun(c,4,1);

fun(c+4,6,0);

i<

10;

i++)printf("

%d,"

c[i]);

A)7,8,9,10,6,5,4,3,2,1

B)10,9,8,7,6,5,4,3,2,1

C)10,9,8,7,1,2,3,4,5,6,

D)1,2,3,4,5,6,7,8,9,10,

fun()函数作用冒泡法排序,flag控制升序(0)或者降序

(1)。

n为参与排序的个数。

a为数组的起始地址。

因此,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)从数组的第四项,后六个升序排序。

故结果为10,9,8,7,1,2,3,4,5,6。

答案为C选项。

27、有以下程序

{inti,k=0,a[10];

for(i=0;

i++)a[i]=i;

4;

i++)k+=a[i]+i;

k);

A)10

C)6

D)12

第一个for循环对数组a赋初值,从0~9,第二个for循环数组前4项的a[i]+i的和。

0+0,1+1,2+2,3+3,经计算的结果为12,因此答案为D选项。

28、有以下程序

intnew_div(doublea,doubleb)

{returna/b+0.5;

main()

{printf("

new_div(7.8,3.1));

A)1

B)2

C)3

new_div()的返回值是int类型,因此,a/b(a,b均为double类型)+0.5的小数部分被将被截断。

经计算,7.8/3.1+0.5=2.516+0.5=3.016,故打印的结果为3。

29、函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。

intfun(int*a,intn)

{int*p,*s;

for(p=a,s=a;

p-a<

p++)

if(__________)s=p;

return*s;

在if语句下划线处应填入的选项是

A)p>

s

B)*p>

*s

C)a[p]>

a[s]

D)p-a>

p-s

函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。

通过for比较,s始终指向最大值的那个元素。

取指针的值,使用*p,因此比较使用*p和*s,又因为找最大值,当*s<

*p时,修改指针s的指向,因此答案为B选项。

30、有以下程序

string.h>

{charstr[][20]={"

One*World"

"

One*Dream!

"

},*p=str[1];

strlen(p));

%s\n"

p);

A)10,One*Dream!

B)9,One*Dream!

C)9,One*World

D)10,One*World

unsignedintstrlen(char*s);

计算字符串s的(unsignedint型)长度,不包括'

\0'

在内;

p指向数组的第二个元素,因此strlen(p)=10,并打印,故答案为A选项。

31、有以下程序

{inti,len;

charb[]="

WelcomeyoutoBeijing!

len=strlen(b);

len;

if(b[i]=='

{strcpy(b,b+i+1);

i=0;

printf("

b);

A)Beijing!

B)toBeijing!

C)We

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

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1