全国计算机等级考试二级C语言真题题库2+Word格式文档下载.docx
- 文档编号:16575990
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:27.39KB
全国计算机等级考试二级C语言真题题库2+Word格式文档下载.docx
《全国计算机等级考试二级C语言真题题库2+Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言真题题库2+Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
因此,输入aBcDefG##,得到的结果是BCDEFGH。
故答案为c选项。
3.以下与存储类别有关的四组说明符中,全部属于静态类的一组是()。
A.extem和static
B.auto和static
C.register和static
D.register和excerl
auto用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。
这个关键字通常会被省,因为所有的变量默认就是aut0的。
register定义的变量告诉编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。
static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。
这一点是它与堆栈变量和堆变量的区别。
变量用static告知编译器,自己仅仅在变量的作用范围内可见。
这一点是它与全局变量的区别。
当static用来修饰全局变量时,它就改变了全局变量的作用域。
extern限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。
extem外部声明,该变量在其他地方有被定义过。
因此,答案为A选项。
4.设有定义:
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
代数表达式1/(X·
Y·
z)是小数,转为cf语言的表达式必须是小数。
A选项由于l.0为浮点数,计算结1果自动转换为浮点数,故A选项正确。
选项B,C,D的表达式均为0。
5.若有定义:
doublex;
,则表达式IX=0,x+10,x+十的值是()。
A.11.0
B.10.0
C.0.0
D.1.0
c语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。
逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。
也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。
后置自增运算:
k++表示先运算,后自■:
曹置自增运算:
++k表示先自加,后运算。
因此,表达式l;
O,I+10。
x++的计算过程为首先赋值x=0,然后将x加l0,包是并不对x进行赋值,最后计算x++,并,根据后置自增运算的计算结果,即为x=0.0。
故答案为C选项。
6.有以下程序:
0后,则输出结果是()。
A.5,
B.0,0,0,0,0,
C.0,1,2,3,4,
D.0,1,
”anf(”%c”,&c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。
7.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。
程序运行后,不能得到正确结果,出现问题的语句是()。
A.sum+=1/i;
B.while(i<
50);
C.sum.=1.0;
D.i++;
选项A中,8111111+=1/i;
i为整型,因此l/i是整型类型,当1/i有小数时,小数部分会被截断。
因此l/i结果始终为0,导致结果出错,应改为8111m+=1.0/i。
因此答案为A选项。
8.下列处理中与队列有关的是()。
A.操作系统中的作业调度
B.执行程序中的过程调用
C.执行程序中的循环控制
D.---X树的遍历
队列是指允许在一端进行插入,而在另一端进行删除的线性表。
由于最先进入队列的元素将最先出队,所以队列具有“先进先出”的特性,体现了“先来先服务”的原则。
作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存分配资源并将新创建的进程插入就绪队列的过程。
执行程序中的过程调用一般指函数调用,需要调用时候转入被调用函数地址执行程序,与队列无关。
执行程序中的循环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。
二叉树是一个有限的结点集合,二叉树的遍历是指不重复地访问二叉树中的所有结点,与队列无关。
故本题选择A选项。
9.非空循环链表所表示的数据结构()。
A.有根结点也有叶子结点
B.没有根结点但有叶子结点
C.有根结点但没有叶子结点
D.没有根结点也没有叶子结点
在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。
循环链表是线性结构,有且只有一个根结点,每一个结点最多有一个前件,也最多有一个后件。
循环链表表头结点为根结点,链表的最后一个结点为叶子节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。
故选择A选项。
10.将c语言的整数设为整数类1,则下面属于类I实例的是()。
A.-103
B.10E3
C.10.3
D.“0103”
整数类实例包括:
十进制常量用0—9表示,不能以0开头;
/k进制常量用0-7表示,必须用0开头;
十六进制常量用0—9和A—F(a—f)表示,必须以0x或OX开头。
本题中B选项是科学计数法表示的浮点数实例,c选项是浮点数实例,D选项是字符串实例。
故选A选项。
11.有以下程序:
程序运行后的输出结果是()。
A.7
B.0
C.3
D.8
题意统计字符s中阿拉伯数字的个数。
chars[]=’012xy\08s34f4w2’;
元素是字符型。
~0=48;
而’\0’=0;
因此可以计算出’、0’之前阿拉伯数字的个数,由字符串s可知,有3个阿拉伯数字。
答案为C选项。
12.有以下程序:
A.6.5.4.3.3,2,1,
B.1,2,3,4,5,6,
C.1,1,1,1,1,1
D.6,6,6,6,6,6,
fopen(”data.chit“,”w+”);
W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。
若文件存在则建立该文件。
rewind(fp);
使文件fp的I位置指针指向文件开始。
fprintf(fp,”%d\n”,a[5一i]);
将8[i]输出到fp指向的文件中。
fseanf(fp,”%d”,&
k);
将fp读I入到变量k中,第一个for循环将数组中元素倒着输入到fp指l向的文件中,rewind()则指向文件开始,因此打印是数组a的I倒叙。
故打印为6,5,4,3,2,1。
13.软件开发中需求分析的主要任务是()。
A.定义和描述目标系统“做什么”
B.获取需求
C.给出软件解决方案
D.需求评审
需求分析阶段的工作可以分为4个方面:
需求获取、需求分析、编写需求规格说明书和需求评审。
需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。
14.若有定义:
charc;
doubled;
程序运行时输入:
12,能把字符1输入给变量c、数值2输入给变量d的输入语句是()。
A.scanf("
%d%lf"
&
c,&
d);
B.scanf("
%c%lf"
C.scanf("
%c%f"
D.scanf("
%d%f"
%lf是针对double类型,如果仅用%f,输入的数据可能没有被完全接收,数据的精度可能不足,选项C,D错误。
%f主要针对float类型的变量的输入。
%d主要针对整型数据的输入,%c主要针对字符类型的数据的输入,选项A错误。
故答案为B选项。
15.有以下程序:
A.Beijing!
B.toBeijing]
C.WelcomeyoutoBeijingI
D.youtoBeijingI
for循环的作用是每次遇到空格,将空格后面的移动到数组的最前面。
因此数组最后的状态是“Bei-jing!
、Og!
\0ng!
、neijing!
、O”,但是pfinff(“%s”)打印遇到、0自动结束。
因此,打印Beijing!
。
故答案为A选项。
16.有以下程序:
程序运行后的结果是()。
A.有运行错误
B.输出11.10
C.输出12.10
D.输出21.10
calloe(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。
s在函数fun()申请了内存空间,但是在调用fun()函数后会释放掉,因此,最后q指向NULL,因此运行是打印出错。
17.有以下程序
A.15
B.12
C.16
D.20
#define命令是C语言的宏定义命令,标识符一般使用大写,为了区分其他标识符,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
宏定义不进行其他操作,仅仅只是替换标识符。
k++表示先运算,后自加。
意思是遇到k++了,先把当前的k的值拿来参加运算,后面再去管它的自加。
SUB(a++,b++)一(a++)t(b++)—d}4。
18.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&
ch,sizeof(ch),1,fp);
函数fgete()从文件读入一个字符到指定变量。
函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。
因此选项B,c。
D错误。
19.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是()。
A.fread
B.fscanf
C.fgets
D.getc
fgets读取一个长度为(n-1)的字符串,fread按照指定的长度读取数据项,对应2进制的打开方式,fscanf按指定格式读,对应文本打开方式,getc从指定的文件读入一个字符,即从fp所指向的文件中读入一个字符赋给ch。
因此答案为D选项。
20.有以下程序:
#includeintadd(inta,intb){return(a+b);
}main(){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.;
s与()的优先级,()的优先级高于*,因为(+f)()定义函数指针f。
f指向函数的指针。
f=add,将函数8dd()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用t取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。
答案为D选项。
21.某循环队列的存储空间为Q(4:
m),初始状态为front=lea/"
=m。
现经过一系列的人队操作和退队操作后,front=m,r6ar=m一1,则该循环队列中的元素个数为()。
A.m-1
B.m
C.1
D.0
循环队列长度为rl3,由初始状态为锄t=re“=m,可知此时循环队列为空。
入队运算时,首先队尾指针进1(即rear+1),然后在re”指针指向的位置插入新元素。
特别的,当队尾指针瑚r=nl+1时,置rear=1。
退队运算时,徘头指针进1(即front+1),然后删除f∞ont指针指向的位置上的元素,当排头指针front=ITI+1时,置front=1。
从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。
如果l_efl.r—front>
0,则队列中的元素个数为rear—front个;
如果reⅡ一front<
0,则队列中的元素个数为rear—front+m。
该题中m一1<
ITl,即/'
ear—front
22.在最坏情况下,堆排序的时间复杂度是()。
A.O(log2n)
B.O(nlog2n)
C.O(n2)
D.O(n1.5)
若有n个元素的序列,将元素接腰序组成一棵完全二叉树,当且仅当满足下列条件时称为堆。
大根堆是指所有结点的值大于或等于左右子结点的值;
小掇堆是指所有结点的值小于或等于左右子结点的值。
在调整建堆的过程中,总是将根结点值与左、右子树的根结点进行比较,若不满足堆的条件,则将左、右子树根结点值中的大者与根结点值进行交换。
堆排序最坏情况需要0(nl092n)次比较,所以时间复杂度是0(nl092n),B选项正确。
23.若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是()。
A.前序序列
B.中序序列
C.后序序列
D.以上说法均可以
二叉树遍历可以分为3种:
前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。
由于结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,那么只要遍历时访问根结点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。
故选B选项。
24.有以下程序:
A.24
B.720
C.120
D.6
函数hm()求数组指定返回的元素的积。
函数fun(a,3)求的是数组a[0]~a[3]的积。
因此结果为2t3女4十5=120,故答案为C选项。
25.学生选课成绩表的关系模式是sc(S#,c#,G),其中S#为学号,c#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为()。
A.
B.
C.
D.
表示针对属性进行的投影运算,0r表示针对元组进行的选择运算,’^’表示交运算,’V’表示并运算。
要求检索结果为关系模式中的学生学号s#,首先在几种属性中选择学生学号'
iTS#,其次要在其中选择满足条件的元组0r,条件是课号为2且成绩及格,即为“c#=2AG,>
60”,故完整表达式为叮rs#(orc#=2AG一>
60(SC))。
本题选A选项。
26.以下程序段中的变量已正确定义。
for(i=0;
i
A.*
B.****
C.**
D.********
c语言约定分号为一条语句的结束。
因此for(i=0;
i<
3;
k++);
是完整的语句,对研nd();
没有任何影响,最后一nff(”·
’),执行一次。
27.有以下程序:
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,
flm()函数作用冒泡法排序,fla9控制升序(0)或者降序
(1)。
n为参与排序的元素个数。
a为数组的起始地址。
因此,flm(a,4,1),数组的前四个降序排序,fun(a+4,6,O)对数组的第四项后六个元素进行升序排序。
故结果为10,9,8,7,1,2,3,4,5,6。
28.有以下程序:
A.2,3
B.2,1
C.1,2
D.3,1
结构体tt是一个递归定义,类似于链表,通过成员变量Y链接起来。
P=s+1指向s[1]。
P一>
Y指向8[2],但现在P->
Y=s,因此s[2]=s[O],此时8[]={1.0,2.0,1.0},而P在s[1]位置,因此P_>
x为2,P=P_>
Y,P指向s[2],因此P_>
x=1,故打印结果为2,1。
答案为B选项。
29.以下定义数组的语句中错误的是()。
A.intnum[][3]={{1,2},3,4,5,6};
B.intnUITI[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’};
选项B中,intIrlllm[2][4]={{1,2},{3,4},{5,6}};
定义数组是2行4列,但是初始化的结构是3行2列,因此初始化错误。
30.设有定义:
doublex=5.16894;
,则语句prinff(”%If\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}10005168.94+0.575169.44”所以(int)(x$1000+0.5)强制转换为整型结果为5169。
(5169/1000.0)5.169,由于1000.0结果自动转换为浮点数所以prinff(“%lf\n”,5.169)结果是5.16900。
31.下列叙述中正确的是()。
A.数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能
B.数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件
C.数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少
D.数据库系统独立性较差,而文件系统独立性较好
数据管理技术的发展经历了3个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
三者各自的特点如下表所示。
数据库系统可以解决数据冗余和数据独立性问题,面文件系统不能。
数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。
数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。
故本瑟答案为A选项。
32.有以下程序:
A.-2,3,
B.-1,-2,
C.-2,-3,
D.-2,1
fun()函数使用了静态变量,静态变量只在声明时初始化一次。
首先实参的数值是-12,if判断后输出负号,并将n=12,计算k+=n%10一k+=2—2,因此输出2,后将数值除以10,结果为1,递归调用fun()函数,第二次调用fun(),此时n=1,k=2,计算k+=n%10-÷
k+=1--*3,因此打印3。
故最后打印结果为一2,3,。
33.有以下程序:
}程序运行后的输出结果是()。
A.-263
B.2
C.0
D.-26
isspaee(c)检查参数c是否为空格字符。
若参数e为空格字符,则返回TRUE,否则返回NULL(0)。
Is—di#t(c)函数检查参数c是否为阿拉伯数字0到9。
返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(O)。
fLm()函数的第一个for循环判断字符串是否为负号。
第二个for循环获取符号后面的数字字符,并将它们转化为整数。
遇到了非数字的字符跳出,最后返回数组的结果。
因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回-26,因此打印的结果是一26。
故答案为D选项。
34.以下是正确C语言实型常量的是()。
A..e-1
B.e-1
C.-1e
D.1e-1
所谓常量是指在程序运行过程中,其值不能被改变的量。
在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。
实型常量有两种表示形式:
十进制小数形式、指数形式。
指数形式中e后面的指数必须是整数,阶码标志e之前需要有数字,由此可知选项A,B,C错误。
答案为D选项
35.若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是()。
A.inta=b=c=d=1;
B.inta=1,b=1,c=1,d=1;
C.inta,b,c,d;
a=b=c=d=1;
D.inta,b,c,d=1;
a=b=c=d;
C语言赋值运算符的结合方向是从右向左,使用的变量必须已经定义了,inta=b=c=d=1;
本条语句首先执行赋值运算d=1,由于b并未定义,故编译不通过,提示没有定义标识符b.c、d,故A选项错误。
36.有以下程序:
(分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 语言 题库