全国计算机二级C语言模拟测试含详细解析 14.docx
- 文档编号:7194325
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:26
- 大小:25.30KB
全国计算机二级C语言模拟测试含详细解析 14.docx
《全国计算机二级C语言模拟测试含详细解析 14.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言模拟测试含详细解析 14.docx(26页珍藏版)》请在冰豆网上搜索。
全国计算机二级C语言模拟测试含详细解析14
1.设循环队列为Q(1:
m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=15,rear=20。
现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为
A.4
B.6
C.m-5
D.m-6
正确答案:
A你的答案:
解析:
【解析】循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=15,rear=20时,队列中有5个元素,比较次数为4次,A选项正确。
2.下列叙述中正确的是
A.循环队列属于队列的链式存储结构
B.双向链表是二叉树的链式存储结构
C.非线性结构只能采用链式存储结构
D.有的非线性结构也可以采用顺序存储结构
正确答案:
D你的答案:
解析:
【解析】循环队列是队列的一种顺序存储结构,A选项错误。
双向链表为顺序存储结构,二叉树通常采用链式存储结构,B选项错误。
完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C选项错误,D选项正确。
3.某二叉树中有n个叶子结点,则该二叉树中度为2的结点数为
A.n+1
B.n-1
C.2n
D.n/2
正确答案:
B你的答案:
解析:
【解析】对任何一棵二叉树,度为0的节点(即叶子节点)总是比度为2的节点多一个。
二叉树中有n个叶子节点,则度为2的节点个数为n-1,B选项正确。
4.下列叙述中错误的是
A.算法的时间复杂度与算法所处理数据的存储结构有直接关系
B.算法的空间复杂度与算法所处理数据的存储结构有直接关系
C.算法的时间复杂度与空间复杂度有直接关系
D.算法的时间复杂度与算法程序执行的具体时间是不一致的
正确答案:
C你的答案:
解析:
【解析】算法的时间复杂度是指执行算法所需要的计算工作量。
数据的存储结构直接决定数据输入,而这会影响算法所执行的基本运算次数,A选项叙述正确。
算法的空间复杂度是指执行这个算法所需要的内存空间,其中包括输入数据所占的存储空间,B选项叙述正确。
而算法的时间复杂度与空间复杂度没有直接关系,故选择C选项。
算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节所影响,而算法的时间复杂度与这些因素无关,所以是不一致的,D选项叙述正确。
5.软件工程的三要素是
A.方法、工具和过程
B.建模、方法和工具
C.建模、方法和过程
D.定义、方法和过程
正确答案:
A你的答案:
解析:
【解析】软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程包含3个要素:
方法、工具和过程。
A选项正确。
6.通常软件测试实施的步骤是
A.集成测试、单元测试、确认测试
B.单元测试、集成测试、确认测试
C.确认测试、集成测试、单元测试
D.单元测试、确认测试、集成测试
正确答案:
B你的答案:
解析:
【解析】软件测试的实施过程主要有4个步骤:
单元测试、集成测试、确认测试(验收测试)和系统测试。
B选项正确。
7.下面可以作为软件设计工具的是
A.系统结构图
B.数据字典(DD)
C.数据流程图(DFD图)
D.甘特图
正确答案:
A你的答案:
解析:
【解析】程序设计分为:
结构化程序设计,面向对象的程序设计。
结构化设计方法使用的描述方式是系统结构图,所以A选项正确。
8.在数据库设计中,将E-R图转换成关系数据模型的过程属于
A.逻辑设计阶段
B.需求分析阶段
C.概念设计阶段
D.物理设计阶段
正确答案:
A你的答案:
解析:
【解析】采用E-R方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为了适合关系数据库系统的处理,必须将E-R图转换成关系模式。
这就是逻辑设计的主内容,A选项正确。
9.设有关系表学生S(学号,姓名,性别,年龄,身份证号),每个学生学号唯一。
除属性学号外,也可以作为键的是
A.姓名
B.身份证号
C.姓名,性别,年龄
D.学号,姓名
正确答案:
B你的答案:
解析:
【解析】候选键是二维表中能唯一标识元组的最小属性集。
一个二维表有多个候选码,则选定其中一个作为主键供用户使用。
学生学号与身份证号均是唯一的,都可以作为主键,B选项正确。
10.在数据库系统中,考虑数据库实现的数据模型是
A.概念数据模型
B.逻辑数据模型
C.物理数据模型
D.关系数据模型
正确答案:
B你的答案:
解析:
【解析】数据模型按照不同的应用层次分为以下3种类型:
概念数据模型,它是一种面向客观世界、面向用户的模型,它与具体的数据库管理系统和具体的计算机平台无关;逻辑数据模型,是面向数据库系统的模型,着重于在数据库系统一级的实现;物理数据模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。
B选项正确。
11.以下选项中叙述正确的是
A.结构化程序的三种基本结构是循环结构、选择结构、顺序结构
B.C语言源程序不编译也能直接运行
C.使用N-S流程图不能描述复杂算法
D.计算机能够直接运行C语言源程序,不必进行任何转换
正确答案:
A你的答案:
解析:
【解析】结构化程序主要由3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,A选项正确。
编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,B选项错误。
算法可以用各种描述方法进行描述,N-S流程图把算法的每一步都用一个矩形框来表示,把一个个矩形框按执行的次序连接起来就是一个算法描述,无论算法复杂与否都能用N-S流程图描述,C选项错误。
C语言源程序需要经过编译和连接生成目标文件和可执行文件后才能运行,D选项错误。
12.以下选项中叙述正确的是
A.使用三种基本结构就可以实现任何复杂算法
B.只要程序包含了三种基本结构中的任意一种,就是结构化程序
C.程序语法错误要在运行时才能发现
D.C语言程序不需要包含main()函数
正确答案:
A你的答案:
解析:
【解析】结构化程序主要由3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,A选项正确。
结构化程序设计是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计,而不是说包含了三种基本结构就是结构化程序,B选项错误。
程序语法错误是在编译过程中发现的,一般来说编译器只能检查语法和最简单的语义错误,而不检查程序的逻辑错误,C选项错误。
一个C程序由一个或若干个函数构成,而程序中有且只能有一个主函数,即main函数,C程序总是从main函数开始执行,其他函数由main函数直接或间接调用执行,所以C语言程序必须包含main函数,D选项错误。
13.以下选项中,合法的C语言常量是
A.1.234
B.'C++'
C."\2.0
D.2Kb
正确答案:
A你的答案:
解析:
【解析】整型常量:
用不带小数点的数字表示。
实型常量:
用带小数点的数字表示。
字符型常量:
用带有单引号的字符表示。
字符串常量:
用一对双引号括起来的一串字符。
1.234为实型常量,A选项正确。
'C++'不合法,若改成“C++”则为字符串常量,B选项错误。
"\2.0不合法,不是任何类型常量,C选项错误。
2Kb不合法,若加上双引号“2Kb”为字符串常量,D选项错误。
14.以下选项中,合法的C语言实数是
A.3.1e0.4
B..2e0
C.E13
D.7.12E
正确答案:
B你的答案:
解析:
【解析】实型常量:
用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。
十进制小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。
指数形式由十进制数加阶码标志"e"或"E"以及阶码(只能为整数,可以带符号)组成。
.2e0为指数形式实数,B选项正确。
3.1e0.4,阶数不是整数,A选项错误。
E13阶码标志前缺少十进制数,C选项错误。
7.12E缺少阶码,D选项错误。
15.设a,b,c是整型变量且均已赋值,则以下选项中错误的赋值语句是
A.a=(b=3)=1;
B.a=(b=2)+c;
C.a=b=c+10;
D.a=1+(b=c=2);
正确答案:
A你的答案:
解析:
【解析】赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。
A选项中,赋值运算(b=3)=1,左值为表达式,不是变量不能被赋值,A选项错误,所以选择A选项。
B选项运算过程为,先赋值b=2,再计算b+c,将结果赋给a,是正确的赋值语句。
C选项运算过程为,先计算c+10将结果赋给b,再将b赋给a,是正确的赋值语句。
D选项运算过程为,先将2赋给c,再将c赋给b,然后计算1+b,将结果赋给a,是正确的赋值语句。
16.有如下程序
#include
main()
{
intx=072;
printf("%d\n",x+1);
}
程序运行后的输出结果是
A.59
B.73
C.115
D.72
正确答案:
A你的答案:
解析:
【解析】整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。
十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以0作为前缀,输出格式控制符为%o;十六进制整常量以0X或0x作为前缀,输出格式控制符为%x。
八进制数072表示成十进制数为58,即x=072=58,以十进制格式输出x+1=59,A选项正确。
17.有如下程序
#include
main()
{
inta=0,b=1;
if(a++&&b++)
printf("T");
else
printf("F");
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是
A.Ta=1,b=2
B.Fa=0,b=2
C.Fa=1,b=1
D.Ta=0,b=1
正确答案:
C你的答案:
解析:
【解析】题目中判断if条件是否成立,a++先取值为0,则(a++&&b++)为0,且不计算b++,而后a自增得a=1,if条件不成立执行else函数体,输出F。
最后执行语句printf("a=%d,b=%d\n",a,b);按照格式输出a=1,b=1。
C选项正确。
18.有如下程序
#include
main()
{
inti,data;
scanf("%d",&data);
for(i=0;i<5;i++)
{
if(i printf("%d,",i); } printf("\n"); } 程序运行时,从键盘输入: 3<回车>后,程序输出结果为 A.3,4, B.1,2,3,4, C.0,1,2,3,4,5, D.0,1,2, 正确答案: A你的答案: 解析: 【解析】continue语句只能用在循环结构中,其作用是结束本次循环,即不再执行循环体中continue语句之后的语句,而是立即转入对循环条件的判断与执行。 本题执行过程为: 输入3,则data=3;执行for循环,i=0,if条件成立,结束本次循环,不输出i值,执行下一次循环;直到i>=3,if条件不成立,依次输出i值3,4,直到i=5退出for循环。 A选项正确。 19.有如下程序 #include main() { inti,data; scanf("%d",&data); for(i=0;i<5;i++) { if(i>data)break; printf("%d,",i); } printf("\n"); } 程序运行时,从键盘输入: 3<回车>后,程序输出结果为 A.3,4, B.0,1, C.3,4,5, D.0,1,2,3 正确答案: D你的答案: 解析: 【解析】break语句作用是结束整个循环过程,不再判断执行循环的条件是否成立,且在嵌套循环中,其只跳出最内层的一层循环。 本题执行过程为: 输入3,则data=3;执行for循环,在i<=3时,if条件不成立,执行语句printf("%d,",i);依次输出i值,0,1,2,3;直到i=4时,if条件成立,执行break退出for循环。 D选项正确。 20.有如下程序 #include main() { chara='3',b='A'; inti; for(i=0;i<6;i++) { if(i%3)putchar(a+i); elseputchar(b+i); } printf("\n"); } 程序运行后的输出结果是 A.A45D78 B.ABC678 C.34CD78 D.34AB78 正确答案: A你的答案: 解析: 【解析】putchar函数是向标准输出设备上输出一个字符。 字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在0~255之间。 本题执行过程为: i=0,i%3=0,if条件不成立执行else函数体,输出字符A;i=1,i%3=1,if条件成立输出字符4;i=2,i%3=2,if条件成立输出字符5;i=3,if条件不成立,输出字符D;i=4和i=5时,分别输出字符7与8;i=6退出for循环。 所以程序运行后输出结果为A45D78,A选项正确。 21.有如下程序 #include main() { inti; for(i=0;i<5;i++) putchar('9'-i); printf("\n"); } 程序运行后的输出结果是 A.54321 B.98765 C.'9''8''7''6''5' D.'43210' 正确答案: B你的答案: 解析: 【解析】putchar函数是向标准输出设备上输出一个字符。 字符在内存中以ASCII码方式存储,可以与整数进行加减运算,但是要保证计算结果在0~255之间。 本题执行过程为: i=0,输出字符9,在i<5的情况下,依次输出字符8、7、6、5。 在i=5时,计数for循环。 最后显示在命令窗口结果为98765,B选项正确。 22.有如下程序 #include main() { intx=0x13; if(x=0x18)printf("T"); printf("F"); printf("\n"); } 程序运行后的输出结果是 A.TF B.T C.F D.TFT 正确答案: A你的答案: 解析: 【解析】x=0x18为赋值表达式,十六进制数0x18非0,即x非0,if条件成立输出T,之后再输出F与回车符。 程序运行后的输出结果是TF,A选项正确。 23.有如下程序 #include intsum(inta,intb) { returna+b-2; } main() { inti; for(i=0;i<5;i++) printf("%d",sum(i,3)); printf("\n"); } 程序运行后的输出结果是 A.54321 B.01234 C.45678 D.12345 正确答案: D你的答案: 解析: 【解析】函数调用的一般形式为: 函数名(实际参数表)对无参函数调用时,则无实际参数表。 实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。 各实参之间用逗号分隔。 函数sum在main函数之前,所以在main函数中不需要声明。 本题程序执行过程为: 在i=0,1,2,3,4时依次输出sum(i,3),即调用sum函数后依次输出1、2、3、4、5,D选项正确。 24.有如下程序 #include intchange(int*data) { return(*data)++; } main() { intdata=123; change(&data); printf("%d,",data); data=change(&data); printf("%d,",data); printf("\n"); } 程序运行后的输出结果是 A.124,124, B.123,124, C.124,123, D.123,123, 正确答案: A你的答案: 解析: 【解析】本题程序执行过程为: 调用change函数,将变量data地址传入函数,返回当前指针指向的变量值123,之后此变量加一,data=124。 输出data=124。 再次调用函数,返回当前指针指向的变量值124,然后此地址内存中变量加一,data=125,然后将返回值124赋给变量data=124,最后输出data=124。 A选项正确。 25.有如下程序 #include voidchange(int*array,intlen) { for(;len>=0;len--) array[len]+=2; } main() { inti,array[5]={1,2}; change(array,4); for(i=0;i<4;i++) printf("%d,",array[i]); printf("\n"); } 程序运行后的输出结果是 A.2,3,4,5, B.3,4,5,6, C.3,4,2,2 D.1,2,0,0, 正确答案: C你的答案: 解析: 【解析】在对一维数组初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值0。 本题程序执行过程为: 调用change函数,将数组array={1,2,0,0,0}首地址传入函数,函数实现将数组每个元素加2,arrray={3,4,2,2,2}。 依次输出数组前4个元素为3,4,2,2。 C选项正确。 26.以下选项中叙述正确的是 A.charc1,c2,*c3,c4[40];是合法的变量定义语句 B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 C.数组下标的下限可以是负值 D.若有数组定义floatarray[4];则语句printf("%f",array[3.12]);是合法的 正确答案: A你的答案: 解析: 【解析】A选项正确定义了字符变量c1、c2,字符型指针c3,字符型一维数组c4[40],A选项正确。 “[]”是下标运算符,“下标”可以是任何非负整型数据,取值范围是0~(数据元素的个数-1)。 在引用数组元素时,下标运算符内可以是常量也可以是变量或者表达式,B选项错误。 数组下标的下限不可以是负值,C选项错误。 数组下标必须是整型数据,3.12为浮点数,D选项错误。 27.若有函数声明: voidfun(floatarray[],int*ptr); 以下叙述正确的是 A.函数参数array,ptr都是指针变量 B.函数参数array不是指针变量,ptr是指针变量 C.调用函数时,实参数组的值将一一复制给array数组 D.调用函数时,array是按值传送,ptr是按地址传送 正确答案: A你的答案: 解析: 【解析】数组名为数组的首地址,也是指向数组的指针,所以array和ptr都是指针,A选项正确,B选项错误。 调用函数时,将实参数组首地址赋给指针array,而不是传递整个数组元素,C选项错误。 调用函数时,array与ptr都是按地址传送的,D选项错误。 28.设有如下程序段 inta[8]={0}; intb[]={0}; charc[2]={"A","B"}; chard="AB"; 以下叙述正确的是 A.只有a,b,c的定义是合法的 B.a,b,c,d的定义都是合法的 C.只有a,b的定义是合法的 D.只有c的定义是合法的 正确答案: C你的答案: 解析: 【解析】在对数组进行初始化时应该注意,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值。 定义整型数组a,长度为8,并且其每个元素赋初值0,a定义是合法的。 定义整型数组b,没有指定长度,但为1个元素赋值0,所以自动指定数组长度为1,b定义是合法的。 定义字符型数组c,长度为2,应对其元素赋值字符型常量,而"A"与"B"均为字符串,c定义不合法。 定义字符d,赋初值字符串"AB",这是不合法的定义,若要定义数组,必须要有"[]"下标运算符。 可知,ab定义合法,cd定义不合法,C选项正确。 29.以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是 A.char*str,name[10];str="HelloWorld"; B.char*str,name[10];name="HelloWorld"; C.charstr1[10]="prog.c",str2[10];str2=str1; D.charhead_line[];head_line="============="; 正确答案: A你的答案: 解析: 【解析】将字符指针变量初始化为一个字符串有两种方式,一种通过赋值运算使一个字符指针指向一个字符串常量: char*str;str="HelloWorld",A选项正确。 另一种是定义一个字符指针变量,并且初始化为一个字符串的首地址: char*str="HelloWorld"。 字符指针变量与字符数组都可以用来实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机二级C语言模拟测试含详细解析 14 全国计算机 二级 语言 模拟 测试 详细 解析