1、二级 C语言笔试-304 及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.以下叙述中正确的是( )。(分数:1.00)A.break语句只能用于 switch语句体中B.continue语句的作用是:使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和 switch语句体内D.在循环体内使用 break语句和 continue语句的作用相同2.以下程序中函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序。void flint b,int n,int flag)int i,j,
2、t;for(i=0:in-1;i+)for(j=i+1;jn;j+)if(flag?bi)bj;bibj)(t=bibi=bj=bj=t;)main()int a10=(5,4,3,2,1,6,7,8,9,10),i;f(a2,5,0);f(a,5,1);for(i=0:i10;i+)printf(“%d”,ai);程序运行后的输出结果是( )。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10,C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,3.在 ER图中,用来表示实体的图形是( )。(分
3、数:1.00)A.矩形B.椭圆形C.菱形D.三角形4.为了使模块尽可能独立,要求( )。(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的偶合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强5.下列叙述中正确的是( )。(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关6.有以下程序:main()int
4、c=35;printf(“%d/n”,cc );程序运行后的输出结果是( )。(分数:1.00)A.0B.70C.35D.17.有以下程序段:typedef struct NODEint num;struct NODE*next;OLD;以下叙述中正确的是( )。(分数:1.00)A.以上的说明形式非法B.NODE是一个结构体类型C.OLD是一个结构体类型D.OLD是一个结构体变量8.以下叙述中错误的是( )。(分数:1.00)A.C语言中对二进制文件的访问速度比文本文件快B.C语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp;定义了一个名为 fp的文件指针D.C语言中的文本文
5、件以 ASC码形式存储数据9.若变量已正确定义,以下 while循环不断输出读入的字符,当读入回车符时结束循环,正确的程序段是( )。(分数:1.00)A.while(ch=getchar()=/N)putchar(ch);B.while(ch=getchar()=/n)putchar(ch);C.while(ch=getchar()!=/N)putchar(ch);D.while(ch=getchar()=/n)putchar(ch);10.设有如下关系表:(分数:1.00)A.T=RSB.T=RSC.T=RSD.T=R/S11.下列数据结构中,能用二分法进行查找的是( )。(分数:1.00
6、)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表12.有以下程序:void swap1(int c1int t;t=c0;c0=c1=c1=t;void swap2int c0,int c1int t;t=c0;c0=c1;c1=t;main()int a2=3,5,b2=(3,5);swap1((分数:1.00)A.;swap2(b0,b1);pr13.有以下程序:fun(int X,int Y)static int m=0,i=2;i+=m+1;m=i+X+Y;return m;main()int j=1,m=1,k;k=fun(j,m);printf(“%d,”,k);
7、k=fun(j,m);printf(“%d/n”,k);执行后的输出结果是( )。(分数:1.00)A.5,5B.S,11C.11,11D.11,514.若有定义语句:inf m=5,4,3,2,1,i=4;,则下面对 m数组元素的引用中错误的是( )。(分数:1.00)A.m-iB.m2*2C.mm0D.mmi15.有以下程序:fun(int X)int p;if(X=011X=1)return(3);P=X-fun(X-2);return p;main()(printf(“%d/n”,fun(7)执行后的输出结果是( )。(分数:1.00)A.7B.3C.2D.016.下列叙述中正确的是(
8、 )。(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令17.有以下程序:#includemain()int Y=9;for(;Y0;Y-)if(Y%3=0)printf(“%d”-Y);程序的运行结果是( )。(分数:1.00)A.741B.963C.852D.87542118.有以下程序:#includemain()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=(0),i;for(i=0;i12;i+)csi+;for(i=1;i5;i+)printf(“%
9、d”,ci);printf(“/n”);程序的运行结果是( )。(分数:1.00)A.1 2 3 4B.2 3 4 4C.4 3 3 2D.1 1 2 319.以下选项中正确的定义语句是( )。(分数:1.00)A.double a;b;B.double a=b=7;C.double a=7;b=7;D.double a; b;20.有以下程序:void f(int V,int W)int t;t=V;V=W;W=t;main()int X=1,Y=3,Z=2;if(XY)f(X,Y);else if(YZ)f(Y,Z);else fi(X,Z);printf(“%d,%d,%d/n”,X,Y
10、,Z);执行后输出结果是( )。(分数:1.00)A.1,2,3B.3,1,2C.1,3,2D.2,3,121.有以下程序:#define f(X)(X*X)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n”,i1,i2);程序运行后的输出结果是( )。(分数:1.00)A.64,28B.4,4C.4,3D.64,6422.若有以下说明和语句:int c45,(*p)5;P=c;能够正确引用 C数组元素的是( )。(分数:1.00)A.p+1B.*(p+3)C.*(p+1)+3D.*(p0+2)23.信息隐蔽的概念与下述
11、哪一种概念直接相关( )。(分数:1.00)A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度24.以下不合法的数值常量是( )。(分数:1.00)A.011B.1e1C.8.0E0.5D.0xabcd25.以下不合法的用户标识符是( )。(分数:1.00)A.j2_KEYB.DoubleC.4dD.bike26.以下叙述中正确的是( )。(分数:1.00)A.调用 printf函数时,必须要有输出项B.使用 putchar函数时,必须在之前包含头文件 stdiohC.在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用 getchar函数读入字符时,可以从键盘上输入
12、字符所对应的 ASC码27.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是( )。(分数:1.00)A.DB包含 DBS和 DBMSB.DBMS包含 DB和 DBSC.DBS包含 DB和 DBMSD.没有任何关系28.有以下程序:main()char s(“aeiou”,*ps;ps=s;printf(“%c/n”,*ps+4);程序运行后的输出结果是( )。(分数:1.00)A.aB.eC.uD.元素 s4的地址29.软件调试的目的是( )。(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.验证软件的正确性30.以下错误的定义语句是( )。(分数:1.0
13、0)A.int X3=0,1,1,2,3;B.int X43=1,2,3,1,2,3,1,2,31,2,3C.int X4=1,2,3,1,2,3,1,2,3,1,2,3;D.int X3=1,2,3,4;31.有以下程序:#includemain()int X=1,Y=2,Z=3:if(XY)if(yZ)printf(“%d”,+Z);else printf(“%d”,+y);printf(“%d/n”,X+);程序的运行结果是( )。(分数:1.00)A.331B.41C.2D.132.软件是指( )。(分数:1.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整
14、集合33.以下叙述中正确的是( )。(分数:1.00)A.C程序中的注释只能出现在程序的开始位置和语句的后面B.C程序书写格式严格,要求一行内只能写一个语句C.C程序书写格式自由,一个语句可以写在多行上D.用 C语言编写的程序只能放在一个程序文件中34.若有定义语句:double X5=1.0,2.0,3.0,4.0,5.0,*p=X;,则错误引用 x数组元素的是( )。(分数:1.00)A.*pB.X5C.*(p+1)D.*X35.有如下程序:main()int i;for(i=0;i3;i+)switch(i)(case 0:print(“%d”,i+);case 2:printf(“%d
15、”,i);default:printf(“%d”,i);)程序运行后的输出结果是( )(分数:1.00)A.022111B.021021C.000122D.0112236.若变量 X、Y 已正确定义并赋值,以下符合 C语言语法的表达式是( )。(分数:1.00)A.+X,Y=X-B.X+1=YC.X=X+10=X+YD.double(X)/1037.有以下程序:main()(char a=a,b;printf(“%c,”,+(分数:1.00)A.;printf(“%c/n”,b=a+);程序运行后的输出结果是( )。A) b,bB.b,CC.a,bD.a,c38.若有定义 int X,Y;,并
16、已正确给变量赋值,则以下选项中与表达式(X-Y)?(X+):(Y+)中的条件表达式(X-Y)等价的是( )。(分数:1.00)A.(X-Y0)B.(X-Y0)C.(X-Y011X-Y0)D.(X-Y=0)39.已定义以下函数:int fun(int *D) (return*p;)fun函数返回值是( )。(分数:1.00)A.不确定的值B.一个整数C.形参 P中存放的值D.形参 P的地址值40.有以下程序段:struct stint X;int*Y;*pt;int a=1,2,b=3,4;struct st c2=10,a,20,b;pc=c;以下选项中表达式的值为 11的是( )。(分数:1
17、.00)A.*pt-yB.pt-XC.+pt-XD.(pc+)-X二、填空题(总题数:14,分数:30.00)41.数据结构分为逻辑结构和存储结构,循环队列属于 (1) 结构。(分数:2.00)填空项 1:_42.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的 (2) 存储结构。(分数:2.00)填空项 1:_43.在一个容量为 15的循环队列中,若头指针 front=6,尾指针 rear=9,则该循环队列中共有 (3) 个元素。(分数:2.00)填空项 1:_44.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最
18、重要的是 (4) 。(分数:2.00)填空项 1:_45.在 ER图中,矩形表示 (5) 。(分数:2.00)填空项 1:_46.设 X、y、Z 均为 int型变量,请写出描述“X 或 y中至少有一个小于 Z”的表达式 (6) 。(分数:2.00)填空项 1:_47.以下程序的输出结果是 (7) 。main()int X=2,Y=-1,Z=2;if(xY)if(y0)Z=0;else Z+=1;printf(“%d/n”,Z);(分数:2.00)填空项 1:_48.有以下程序,若运行时从键盘输入:18,11,则程序的输出结果是 (8) 。main()int a,b;printf(“Enter
19、a,b:”);scanf(“%d,%d”, b;解析:解析 本题考查的是变量定义的基本概念。选项 A)中定义两个变量 a和 b,C 语言中可以同时定义多个变量,但变量之间必须用“,”隔开,而选项 A)中使用的是分号,故不正确;选项 B) 中定义变量时用了连续的赋值语句,这是不正确的;选项 D)在 double和 a之间多了一个逗号,是不正确的。所以,4个选项中只有 C)符合题意。20.有以下程序:void f(int V,int W)int t;t=V;V=W;W=t;main()int X=1,Y=3,Z=2;if(XY)f(X,Y);else if(YZ)f(Y,Z);else fi(X,
20、Z);printf(“%d,%d,%d/n”,X,Y,Z);执行后输出结果是( )。(分数:1.00)A.1,2,3B.3,1,2C.1,3,2 D.2,3,1解析:解析 本题考核的知识点是函数参数的传递。由于调用函数时是进行值传递的,即将实参X、Y、Z 传给形参 V和 W,以后形参和实参再无联系,故通过 if语句调用 f()函数后,X、Y 和 Z的值并没有改变。故最后输出的 X、Y 和 Z的值为 1、3 和 2。21.有以下程序:#define f(X)(X*X)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n”,i1
21、,i2);程序运行后的输出结果是( )。(分数:1.00)A.64,28B.4,4C.4,3 D.64,64解析:解析 本题考查的是带参数的宏。宏替换与函数调用不同,前者是字面上的,在编译期间完成,后者是内容上的,在运行期间才进行。题目中第 1条要替换的语句 i1=f(8)*f(4);展开后是 i1=(8*8)/(4*4);,结果使 i1=4。而第 2条语句 i2=f(4+4)/f(2+2);展开后为 i2=(4+4*4+4)/(2+2*2+2);,结果使 i2=24/8=3。故应该选择 C)。22.若有以下说明和语句:int c45,(*p)5;P=c;能够正确引用 C数组元素的是( )。(
22、分数:1.00)A.p+1B.*(p+3)C.*(p+1)+3D.*(p0+2) 解析:解析 本题考核的知识点是数组指针的应用。本题中定义了一个二维数组 c和一个数组指针 p并初始化让它指向 c,显然此时 p中的备元素为地址,选项 A)中 p+1,此时其中的 1代表的长度是整个二维数组 c的长度,故 p+1将让 p指向 c数组后面的元素,故不能引用 c数组中的成员,故选项 A)错误;同理,选项 B) 和选项 C)都不正确,选项 D)中 p0+2代表的是第一行第三个元素的地址,而*(p0+2)将代表第一行第三个元素的值。23.信息隐蔽的概念与下述哪一种概念直接相关( )。(分数:1.00)A.软
23、件结构定义B.模块独立性 C.模块类型划分D.模块耦合度解析:解析 利用信息隐蔽,可以确保每一个模块的独立性。24.以下不合法的数值常量是( )。(分数:1.00)A.011B.1e1C.8.0E0.5 D.0xabcd解析:解析 本题考查的知识点是数值常量的表示形式。数值常量包括整型常量和实型常量,其中,整型常量又分为十进制、八进制和十六进制三种表示形式;实型常量分为小数形式和指数形式两种表示方法。指数形式规定字母 e(或 E)之前必须有数字(可以是一个十进制的整数或小数),之后必须是一个整数。选项 C)的字母 E之后是一个小数,故应该选择 C)。25.以下不合法的用户标识符是( )。(分数
24、:1.00)A.j2_KEYB.DoubleC.4d D.bike解析:解析 本题考查 C语言中标识符的概念。用户标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与 C语言关键字相同。选项 C)的第一个字符为数字 4不符合定义,故应该选择 C)。26.以下叙述中正确的是( )。(分数:1.00)A.调用 printf函数时,必须要有输出项B.使用 putchar函数时,必须在之前包含头文件 stdioh C.在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用 getchar函数读入字符时,可以从键盘上输入字符所对应的 ASC码解析:解析 本题考查了
25、C语言的一些基本概念。printf()函数可以只有控制项而没有输出项,例如,printf(“Hello!);,所以选项 A)不正确。C 语言中不支持整数以十二进制输出,因此选项 C)不正确。getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入 ASC码的话,只能读到第 1个数字字符,所以选项 D)不正确。故应该选择 B),Putchar 是 C语言中的库函数,使用时必须包含stdioh。27.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是( )。(分数:1.00)A.DB包含 DBS和 DBMSB.DBMS包含 DB和 DBSC.DBS包含 D
26、B和 DBMS D.没有任何关系解析:解析 数据库管理系统 DBMS是数据库系统中实现各种数据管理功能的核心软件。它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。所以,DBMS包含数据库 DB。操作系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统。所以,DBS包含 DBMS,也就包含 DB。综上所述,选项 C)正确。28.有以下程序:main()char s(“aeiou”,*ps;ps=s;printf(“%c/n”,*ps+4);程序运行后的输出结果是( )。(分数:1.00)A.aB.e C.uD.元素 s4的地址解析:解
27、析 本题考查的知识点是指针。程序首先定义了一个字符数组 s,然后让字符指针 ps指向该数组的首地址。最后按字符形式输出*Ds+4 的值,即 s0+4的值,a+4=e。故应该选择 B) 。29.软件调试的目的是( )。(分数:1.00)A.发现错误B.改正错误 C.改善软件的性能D.验证软件的正确性解析:解析 本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的、可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软件中的错误。本题的正确答案是选项
28、B)。30.以下错误的定义语句是( )。(分数:1.00)A.int X3=0,1,1,2,3;B.int X43=1,2,3,1,2,3,1,2,31,2,3C.int X4=1,2,3,1,2,3,1,2,3,1,2,3; D.int X3=1,2,3,4;解析:解析 本题主要考查的是二维数组的定义和初始化。在定义多维数组时,如果有初始化列表,则可以省略最左边的维数,而其他维数不能被省略,二维数组也不例外。因此选项 C)是错误的。31.有以下程序:#includemain()int X=1,Y=2,Z=3:if(XY)if(yZ)printf(“%d”,+Z);else printf(“%
29、d”,+y);printf(“%d/n”,X+);程序的运行结果是( )。(分数:1.00)A.331B.41C.2D.1 解析:解析 本题考查的是 ifelse语句。C 语言规定 else总是与最近的 if搭配,因此程序中 else与第二个 if搭配。程序首先判断(XY),为假,所以跳过后面的整个 ifelse语句。执行到输出语句时,X的值仍为 1,X+返回 X增 1之前的结果 1,故应该选择 D) 。32.软件是指( )。(分数:1.00)A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合 解析:解析 本题考查软件的定义。软件是计算机系统中与硬件相互依存的另一部分,
30、它包括程序、相关数据及其说明文档的总和。因此,本题的正确答案是选项 D)。33.以下叙述中正确的是( )。(分数:1.00)A.C程序中的注释只能出现在程序的开始位置和语句的后面B.C程序书写格式严格,要求一行内只能写一个语句C.C程序书写格式自由,一个语句可以写在多行上 D.用 C语言编写的程序只能放在一个程序文件中解析:解析 本题主要考查的是 C语言程序的书写格式。C 程序中的注释是用/*和*/括起来的部分,可以出现在程序的任何地方,所以选项 A)不正确。C 程序的书写格式很自由,一个语句可以写在多行上,多个语句也可以写在一行上,所以选项 B)不正确。用 C语言编写的程序可以放在多个程序文
31、件中,它们之间可以通过#include 命令行来进行关联,所以选项 D)也不正确。故本题应该选择 C)。34.若有定义语句:double X5=1.0,2.0,3.0,4.0,5.0,*p=X;,则错误引用 x数组元素的是( )。(分数:1.00)A.*pB.X5 C.*(p+1)D.*X解析:解析 本题考查的是通过指针引用数组元素。本题首先定义了一个包含 5个 double元素的数组X,并定义了一个 double指针 p指向了该数组。*p 表示取 p所指地址的内容,即 X0的内容,所以选项A) 正确;*(p+1)表示取 p+1所指地址的内容,即 X1的内容,所以选项 C)正确;*X 表示取
32、X所指地址的内容,在 C语言中,数组名其实也是一个指针,只不过它所指向的地方不能被改变,所以*x 等价于 X0,所以选项 D) 也是正确的。因为 x数组包含 5个元素,所以它的下标范围是 0-4,故选项 B) 的 X5溢出了,应该选择 B)。35.有如下程序:main()int i;for(i=0;i3;i+)switch(i)(case 0:print(“%d”,i+);case 2:printf(“%d”,i);default:printf(“%d”,i);)程序运行后的输出结果是( )(分数:1.00)A.022111B.021021C.000122D.01122 解析:解析 本题考查的
33、知识点是:swifch 语句的功能。程序先执行 case 0,输出 0同时 i变为 1,接着执行 default输出 i为 1,此时便可得出答案为 D)。36.若变量 X、Y 已正确定义并赋值,以下符合 C语言语法的表达式是( )。(分数:1.00)A.+X,Y=X- B.X+1=YC.X=X+10=X+YD.double(X)/10解析:解析 本题考查的知识点是表达式。在 C语言的赋值表达式中,赋值对象必须是一个变量,而在选项 B)中其子表达式 X+1代表的是一个临时常量,因此不能将 Y赋给 X+1,选项 B)错误。而选项 C)中由于“=”运算符是从右至左运算的,即原表达式相当于 X=(X+
34、10:X+Y),所以也犯了对一个临时常量赋值的错误。选项 D)中,将 x强制转换为 double类型的表达式应该为(double)X,所以选项 D)也不正确。故本题的正确答案为选项 A)。37.有以下程序:main()(char a=a,b;printf(“%c,”,+(分数:1.00)A.;printf(“%c/n”,b=a+);程序运行后的输出结果是( )。A) b,b B.b,CC.a,bD.a,c解析:解析 本题考核的知识点是运算符+的用法。程序中的第一个输出语句输出表达式+a 的值,该+a是在使用 a之前,先使 a的值加 1,即为 a加 1为字符 b,此时 a的值为 b,所以第一个输
35、出语句输出的值为 b,第二个输出语句中输出的 b的值,这时 b的值为表达式 a+的值,a+是在使用 a之后(此时 a的值为 b,所以赋给 b的值为 B),使 a的值加一,因此第二个输出的值也为 b。所以,4 个选项中选项 A) 合题意。38.若有定义 int X,Y;,并已正确给变量赋值,则以下选项中与表达式(X-Y)?(X+):(Y+)中的条件表达式(X-Y)等价的是( )。(分数:1.00)A.(X-Y0)B.(X-Y0)C.(X-Y011X-Y0) D.(X-Y=0)解析:解析 本题考查的知识点是逻辑表达式。C 语言编译系统在给出逻辑运算结果时,以数值 1代表“真”,以 0代表“假”,但
36、在判断一个量是否为“真”时,以 0代表“假”,以非 O代表“真”。即将一个非零的数值认作为“真”。要让本题中的条件表达式(X-Y)的结果为真,也就是要使(X-Y)的值非零,即大于 0或者小于 0,故等价的表达式应该是选项 C)。39.已定义以下函数:int fun(int *D) (return*p;)fun函数返回值是( )。(分数:1.00)A.不确定的值B.一个整数 C.形参 P中存放的值D.形参 P的地址值解析:解析 本题考查的是指针的概念。在 C语言中,指针是一种特殊的变量,它存放的值是一个内存地址。所以一个指针变量涉及三个值:指针变量所指内容的值、指针变量中存放的值、指针变量的地址
37、值。它们可以分别用表达式*p、p、&p 来表示。题目中 fun()函数的返回表达式是*p,所以选项 C)、D)不为所选,而应该是形参 p所指内容的值,因为 p为 int型指针,所以该值是一个整数。故应该选择 B) 。40.有以下程序段:struct stint X;int*Y;*pt;int a=1,2,b=3,4;struct st c2=10,a,20,b;pc=c;以下选项中表达式的值为 11的是( )。(分数:1.00)A.*pt-yB.pt-XC.+pt-X D.(pc+)-X解析:解析 本题考查的是*、和+运算符的混合运算。要计算一个复杂的表达式时,首先要弄明白表达式中所有运算符的
38、优先级与结合性,本题中所涉及的运算符中,的优先级最高,*和+的优先级相同,但其结合性为从右至左。所以选项 A)等价于*(ptY)也就是 pt所指向的结构体的成员指针变量 Y所指向的内容。从前面的程序段不难看出,pt 指向结构体数组 c的首地址,也就是指向它的第 1个元素,在它的第 1个元素中,指针变量 Y又被初始化为指向整型数组 a的首地址,即指向数组 a的第 1个元素。故选项 A)中的表达式的值为 a0,也就是 1。ptX 的值为 10。而 D)选项(pt+)X 的值为 20,也不正确。只有 C)选项符合题意。二、填空题(总题数:14,分数:30.00)41.数据结构分为逻辑结构和存储结构,
39、循环队列属于 (1) 结构。(分数:2.00)填空项 1:_ (正确答案:存储或物理)解析:解析 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。可知循环队列应当是物理结构。42.线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的 (2) 存储结构。(分数:2.00)填空项 1:_ (正确答案:顺序)解析:解析 本题考查数据结构的队列。队列是一种特殊的线性表,即限定在表的一端进行删除,在表的另一端进行插入操作的线性表。
40、允许删除的一端叫做队头,允许插入的一端叫做队尾。线性表的存储结构主要分为顺序存储结构和链式存储结构。当队列用链式存储结构实现时,就称为链队列;当队列用顺序存储结构实现时,就称为循环表。因此,本题画线处应填入“顺序”。43.在一个容量为 15的循环队列中,若头指针 front=6,尾指针 rear=9,则该循环队列中共有 (3) 个元素。(分数:2.00)填空项 1:_ (正确答案:3)解析:解析 当循环队列的队尾指针,队头指针时,元素个数=队尾指针一队头指针;当循环队列的队尾指针 c队头指针时,队列中元素个数的为:(尾指针-头指针+容量)%容量。44.软件需求规格说明书应具有完整性、无歧义性、
41、正确性、可验证性、可修改性等特性,其中最重要的是 (4) 。(分数:2.00)填空项 1:_ (正确答案:正确性)解析:解析 本题考查软件工程中需求规格说明书的评审。衡量需求规格说明书好坏的标准按重要性次序排列为:正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性和可追踪性。因此,画线处应填入“正确性”。45.在 ER图中,矩形表示 (5) 。(分数:2.00)填空项 1:_ (正确答案:实体或实体集或 Entify)解析:解析 本题考查数据库的 ER图。ER 模型中,有三个基本的抽象概念:实体、联系和属性。ER图是 ER模型的图形表示法,在 ER图中,用矩形框表示实体,菱形框表示
42、联系,椭圆形框表示属性。因此,画线处应填入“实体”或“实体集”或“Entify”。46.设 X、y、Z 均为 int型变量,请写出描述“X 或 y中至少有一个小于 Z”的表达式 (6) 。(分数:2.00)填空项 1:_ (正确答案:(XZ)|(YZ))解析:解析 XZ 保证 X小于 Z,YZ 保证 Y小于 Z,(XZ)|(YZ),表示 X、Y 中至少有一个小于Z。47.以下程序的输出结果是 (7) 。main()int X=2,Y=-1,Z=2;if(xY)if(y0)Z=0;else Z+=1;printf(“%d/n”,Z);(分数:2.00)填空项 1:_ (正确答案:2)解析:解析
43、本题考查 if的嵌套语句。C 语言规定 else总是与最近的 if搭配,因此程序中 else与第二个 if搭配。程序首先判断(Xy),为假,所以跳过后面的整个 ifelse语句。执行输出语句,z 的值仍为 2。48.有以下程序,若运行时从键盘输入:18,11,则程序的输出结果是 (8) 。main()int a,b;printf(“Enter a,b:”);scanf(“%d,%d”,&a,b);while(a!=b)(while(ab) a-=b;while(ba) b-=a;printf(“%3d%3d/n”,a,b);(分数:2.00)填空项 1:_ (正确答案:1 1)解析:解析 本题
44、考查的是 while循环的嵌套。首先,程序通过 scanf()函数将 18和 11分别读入到变量 a和 b中。然后,因为 a!-b为真,进入外层 while循环。此时 ab 为真,执行 a-=b;,a 的值变为18-11=7;接下来 ba 也为真,执行 b-=a;,b 的值变为 11-7=4。此时 a!=b还是为真,第 2次进入外层循环。ab 为真,执行 a-=b;,a 的值变为 7-4=3。ba 为真,执行 b-=a;,b 的值变为 4-3=1;,接下来 a!=b为真第 3次进入外层循环。ab 为真,执行 a-=b,a 的值变为 3-1=2,ab 为真,执行 a-=b,a的值变为 2-1=1
45、。外循环不成立,退出循环,所以 a=1,b=1。49.以下程序的输出结果是 (9) 。main()int a33=1,2,9,3,4,8,5,6,7,i,s=0;for(i=0;i3:i+)s+=aii+ai3-i-1;printtf(“%d/n”,s);(分数:2.00)填空项 1:_ (正确答案:30)解析:解析 本题主要考查二维数组的引用。题目中的 for循环总共循环了 3次,循环变量 i的值分别为 0、1、2。所以变量 s被累加了 3次,分别是 a00+a03-0-1、a11+a13-1-1、a22+a23-2-1,即 a00+a02、a11+a11、a22+a20。所以循环结束后 s
46、的值为(1+9)+(4+4)+(7+5)=30。故本题的输出结果是:30。以下程序的定义语句中,X1的初值是 10 ,程序运行后输出的内容是 11 。#includemain()int X=(1,2,3,4,5,6,7,8,9,1011,12,13,14,15,16),*p4i;for(i=0(i4;i+)(pi=&X2*i+1;printf(“%d”,pi0);printf(“/n”);(分数:4.00)填空项 1:_ (正确答案:2)解析:填空项 1:_ (正确答案:2 4 6 8)解析:解析 本题主要考查的是通过指针对数组元素的引用。X1是数组 X的第 2个元素,从初始化列表中不难看出,
47、第 2个元素的初值为 2。在 for循环中,循环变量 i从 0循环递增到 3。所以会进行 4次循环,i 的值为 03,那么表达式 2*i+1的值依次就是 1、3、5、7,所以循环体中首先是将 x1、X3、X5、X7的地址值依次赋给指针数组 p的各个元素,然后使用 printf函数输出 pi0,也就是 X1、X3、X5、X7的值。故本题的第 2空应填 2 4 6 8。50.有以下程序:int f(int b4)int i,j,s=0;for(j=0;j4;j+)i=j;if(i21)=3-j;s+=bij;return S;main()int a44=(1,2,3,4),(0,2,4,6),(3,6,9,12),(32,1,0);printf(“%d/n”f(a)执行后的输出结果是12。(分数:2.00)填
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1