1、二级 C 语言笔试-440 及答案解析(总分:103.50,做题时间:90 分钟)一、选择题(总题数:40,分数:71.00)1.算法的时间复杂度是指( )。 A) 算法的长度 t B) 执行算法所需要的时间 C) 算法中的指令条数 D) 算法执行过程中所需要的基本运算次数(分数:2.00)A.B.C.D.2.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是( )。 A) 逻辑设计 B) 需求分析 C) 详细设计 D) 物理设计(分数:2.00)A.B.C.D.3.下列二叉树描述中,正确的是( )。 A) 任何一棵二叉树必须有一个度为 2 的结点 B) 二叉树的度可以小于 2
2、 C) 非空二叉树有 0 个或 1 个根结点 D) 至少有 2 个根结点(分数:2.00)A.B.C.D.4.已经定义 ch 为字符型变量,以下赋值语句中错误的是 _。A) ch=/; B) ch=62+3; C) ch=NULL; D) ch=/xaa;(分数:2.00)A.B.C.D.5.在下列几种排序方法中,要求内存量最大的是_。A) 插入排序 B) 选择排序 C) 快速排序 D) 归并排序(分数:2.00)A.B.C.D.6.下面描述中,不属于软件危机表现的是( )。 A) 软件过程不规范 B) 软件开发生产率低 C) 软件质量难以控制 D) 软件成本不断提高(分数:2.00)A.B.
3、C.D.算法的有穷性是指( )。A算法程序的运行时间是有限的 B算法程序所处理的数据量是有限的C算法程序的长度是有限的 D算法只能被有限的用户使用(分数:2.00)A.B.C.D.A.B.C.D.7.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。A) 125 B) n/2 C) n D) n+1(分数:2.00)A.B.C.D.8.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D) 模块的内聚程度要尽量低,且
4、各模块间的耦合程度要尽量强(分数:1.00)A.B.C.D.9.在深度为 7 的满二叉树中,叶子结点的个数为( )。A) 32 B) 31 C) 64 D) 63(分数:1.00)A.B.C.D.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。A模块间的关系B系统结构部件转换成软件的过程描述C软件层次结构D软件开发过程(分数:3.00)A.B.C.D.A.B.C.D.10.在数据管理技术发展的三个阶段中,数据共享最好的是_。A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分数:2.00)A.B.C.D.11.在数据库设计中,将 E-R
5、图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 逻辑设计阶段 C) 概念设计阶段 D) 物理设计阶段(分数:1.00)A.B.C.D.可在 C 程序中用做用户标识符的一组标识符是( )。Aand_2007BDatey-m-dCHiDr.TomDcaseBigl(分数:2.00)A.B.C.D.A.B.C.D.12.设有定义下列:int a=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=ab)scanf(“%d“,if(x+2)printf(“%d“,x);else printf(“%d/n“,x-);A) 4 和 2 B) 4 和 1 C) 4 和 0 D) 3 和
6、 1(分数:1.00)A.B.C.D.18.设有定义:int n=0,*p=if(-a)b+;else if(a=0) b+=2;else b+=3;printf(“%d/n“,b);程序运行后的输出结果是( )。A)0 B)1 C)2 D)3(分数:2.00)A.B.C.D.20.以下程序运行后的输出结果是#includestdio.hmain()char s=“012xy“; int i, n=0;for(i=0; si!=0; i+)if(si=a printf(“%d/n“, n);A) 0 B) 2 C) 3 D) 5(分数:1.00)A.B.C.D.21.若变量已正确定义,下列正确
7、的程序段是( )。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);(分数:2.00)A.B.C.D.有以下程序#includestdio.hmain()int a=1,2,3,4),y,*p=.a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是( )。Ay=0 By=1 Cy=2 Dy=3(分数:3.00)A.B.C.D
8、.A.B.C.D.22.有以下程序:#includestdio.hmain()char c1,c2,c3,c4,c5,c6;scanf(“%c%c%c%c“,int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij/0;j+=2) s=pij-0;printf(“%d“,s);A) 6357 B) 6135 C) 1357 D) 691357(分数:1.00)A.B.C.D.29.有以下程序#include stdio.hmain()int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;
9、i+) csi+;for(i=1;i5;i+) printf(“%d“,ci);printf(“/n“);程序的运行结果是A) 1 2 3 4 B) 2 3 4 4 C) 4 3 3 2 D) 1 1 2 3(分数:2.00)A.B.C.D.30.有以下程序#includestring.hmain()char p=a,b,c,q10=a,b,c;printf(“%d%d/n“,strlen(p),strlen(q);以下叙述中正确的是A) 在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B) 由于 p 数组中没有字符串结束符,长度不能确定,但 q 数组中字符串长
10、度为 3C) 由于 q 数组中没有字符串结束符,长度不能确定,但 p 数组中字符串长度为 3D) 由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定(分数:2.00)A.B.C.D.31.阅读下列程序,当运行函数时,输入 asd af aa z67,则输出为#include stdio.h#include ctype.h#include string.hint fun(char*str)int i,j=0;for(i=0;stri!=/0;i+)if(stri!=)strj+=stri;strj=/0;main()char str81;int n;printf(“Input a st
11、ring:“);gets(str);puts(str);fun(str);printf(“%s/n“,str);A) asdafaaz67 B) asdafaa267 C) asd D) z67(分数:2.00)A.B.C.D.32.有以下程序#include stdio.hvoid fun(int a,int n)int i,t;for(i=0;in/2;i+) t=ai; ai=an-1-i; an-1-i=t;main()int k10=1,2,3,4,5,6,7,8,9,10,i;fun(k,5);for(i=2;i8;i+) printf(“%d“,ki);printf(“/n“);
12、程序的运行结果是_。A) 345678 B) 876543 C) 1098765 D) 321678(分数:2.00)A.B.C.D.33.以下程序的运行结果是#define MAX(A,B) (A)(B)?(A):(B)#define PRINT(Y) printf(:Y=%d/t“,Y)main()int a=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);A) Y=3 B) 存在语法错误 C) Y=7 D) Y=0(分数:2.00)A.B.C.D.34.以下程序的输出是struet stint x;int *y; *p;int dt4=10,20,30,4
13、0;struct st aa4=50, printf(“%d/n“,+(p-x);A) 10 B) 11 C) 51 D) 60(分数:2.00)A.B.C.D.函数 ftell(fp)的作用是( )。A得到 fp 所指向文件的当前读写位置 B初始化流式文件的位置指针C移动流式文件的位置指针 D以上答案均正确(分数:2.00)A.B.C.D.A.B.C.D.二、填空题(总题数:15,分数:32.50)35.一棵二叉树的中序遍历结果为 DBEAFC,前序遍历结果为 ABDECF,则后序遍历结果为_。(分数:2.00)填空项 1:_36.耦合和内聚是评价模块独立性的两个主要标准,其中U /U反映了
14、模块内各成分之间的联系。(分数:2.00)填空项 1:_37.数据库保护分为:安全性控制、 1、并发性控制和数据的恢复。(分数:2.00)填空项 1:_38.在 E-R 图中,矩形表示 1。(分数:2.00)填空项 1:_39.以下程序的运行结果是 【9】 。#include stdiohmain() int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+; break;case 1: b+; break;case 2:a+; b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);(分数:2.00)
15、填空项 1:_40.有以下函数void prt(char ch, int n)int i;for(i=1; i=n; i+)printf(i%6!=0? “%c“: “%c/n“, ch);执行调用语句 prt(*, 24) ;后,函数共输出了_行*号。(分数:2.00)填空项 1:_41.以下程序的输出结果是_。#includestdio.hmain()int i;for(i=a;if;i+,i+)printf(“%c“,i-a+A);printf(“/n“);(分数:2.50)填空项 1:_42.已有定义:double*P;,请写出完整的语句,利用 malloc 函数使 p 指向一个双精度
16、型的动态存储单元 1。(分数:2.00)填空项 1:_43.以下程序中,for 循环体执行的次数是U /U。# define N 2# define M N+1# define K M+1*M/2main()int i;for(i=1; iK; i+).(分数:2.00)填空项 1:_44.函数 void fun(float *sn,int n)的功能是:根据以下公式计算 s,计算结果通过形参指针 sn 传回;n 通过形参传入,n 的值大于或等于 0。请填空。*void fun(float *sn,int n)float s=0.0,w,f=-1.0;int i;for(i=0;i=n;i+)
17、f=U /U * f;w=f/(2*i+1);s+=w;U /U=s;(分数:2.00)填空项 1:_45.下面程序的功能是建立一个有 3 个节点的单循环链表,如下图所示,然后求各个节点数值域 data 中数据的和,请填空。(分数:2.00)填空项 1:_46.下列程序的功能是将字符串 s 中所有的字符 C 删除。请填空。#includestdio.hmain()char s80;int i,j;gets(s);for(i=j=0;si!=“/0“;i+)if(i!=C)_;sj=/0;puts(s);(分数:4.00)填空项 1:_47.下列程序的运行结果是_。#includestdio.h
18、func(a,b) static int m=0,i=2;i+=m+1;m=i+a+b;return(m);main()int k=5,m=3,p;p=fune(k,m);printf(“%d“,p);p=func(k,m);printf(“%d/n“,p);(分数:1.50)填空项 1:_48.以下程序运行后的输出结果是U /U。#include stdio, hmain ( )char a = “Language“, b : “Programe“;char * pl, * p2; int k;p1=a;p2=b;for(k=0;k=7;k+)if( * (p1 +k) = * (p2+k)
19、 printf(“% c“, * (pi +k);(分数:2.00)填空项 1:_49.函数 main()的功能是在带头结点的单链表中查找数据域中值最小的结点。请填空。#includestdio.hstruct nodeint data;struct node*next:;int min(struct node*first)/*指针 first 为链表头指针*/strct node *p;int m;p=first-next;m=p-data;p=p-next;for(; p!=NULL;p=)if(p-datadatam)m=p-data;return m;(分数:2.50)填空项 1:_二
20、级 C 语言笔试-440 答案解析(总分:103.50,做题时间:90 分钟)一、选择题(总题数:40,分数:71.00)1.算法的时间复杂度是指( )。 A) 算法的长度 t B) 执行算法所需要的时间 C) 算法中的指令条数 D) 算法执行过程中所需要的基本运算次数(分数:2.00)A.B.C.D. 解析:解析 算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。2.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是( )。 A) 逻辑设计 B) 需求分析 C) 详细设计 D) 物理设计(分数:2.00)A.B. C
21、.D.解析:解析 软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。3.下列二叉树描述中,正确的是( )。 A) 任何一棵二叉树必须有一个度为 2 的结点 B) 二叉树的度可以小于 2 C) 非空二叉树有 0 个或 1 个根结点 D) 至少有 2 个根结点(分数:2.00)A.B. C.D.解析:解析 二叉树是由 n0 个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。 二叉树具有
22、如下两个特点: 非空二叉树只有一个根结点。 每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。4.已经定义 ch 为字符型变量,以下赋值语句中错误的是 _。A) ch=/; B) ch=62+3; C) ch=NULL; D) ch=/xaa;(分数:2.00)A. B.C.D.解析:解析 对字符变量赋值时,即可以赋一字符常量,也可以赋 0255 的整数,该整数表示字符常量的 ASCII 值。本题中选项 B 是将 65 赋值给 ch,表示字符 A;选项 C 中 NULL 是 C 语言中的符号常量,其值为 0;选项 D 是将一个转义字符赋值给 ch,该字符的 ASCII 值为 aa,其
23、中 aa 是十六进制;选项 A 错误。5.在下列几种排序方法中,要求内存量最大的是_。A) 插入排序 B) 选择排序 C) 快速排序 D) 归并排序(分数:2.00)A.B.C.D. 解析:评析 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中部分记录的关键字均比另部分记录的关键字小,再分别对这两分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;
24、归并排序是将两个或两个以上的有序表组合成一个新的有序表。6.下面描述中,不属于软件危机表现的是( )。 A) 软件过程不规范 B) 软件开发生产率低 C) 软件质量难以控制 D) 软件成本不断提高(分数:2.00)A. B.C.D.解析:解析 软件危机主要表现在以下 6 个方面: 软件需求的增长得不到满足。 软件开发成本和进度无法控制。 软件质量难以保证。 软件不可维护或维护程序非常低。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。算法的有穷性是指( )。A算法程序的运行时间是有限的 B算法程序所处理的数据量是有限的C算法程序的长度是有限的 D算法只能被有限的用
25、户使用(分数:2.00)A. B.C.D.解析:解析 算法的有穷性是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。A.B.C. D.解析:评析 根据二维数组的定义得出:m00=1,m01=4,m02=7,m10=2,m11=5,m12=8,m20=3,m21=6, m22=9,所以本题的输出是第 3 行的值 m20,m20,m22,即 369。7.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。A) 125 B) n/2 C) n D) n+1(分数:2.00)A.B.C. D.解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的
26、值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。8.为了使模块尽可能独立,要求( )。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:1.00)A.B. C.D.解析:解析 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口
27、简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。9.在深度为 7 的满二叉树中,叶子结点的个数为( )。A) 32 B) 31 C) 64 D) 63(分数:1.00)A.B.C. D.解析:解析 满二叉树是指除最后一层外,每层上的所有结点都有两个子结点;即在满二叉树中,每一层上的结点数都达到最大值,则在满二叉树的第 k 层上有 2k-1个结点,月深度为 m 的满二叉树有 2m-1个结点。深度为 7 的满二叉
28、树,其叶子结点数为 27-1=26=64。软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。A模块间的关系B系统结构部件转换成软件的过程描述C软件层次结构D软件开发过程(分数:3.00)A.B. C.D.解析:解析 软件的过程设计是指系统结构部件转换成软件的过程描述。A.B.C.D. 解析:解析 本题考查宏定义的用法,进行宏定义时语句不能用分号结束,否则会出现错误。10.在数据管理技术发展的三个阶段中,数据共享最好的是_。A) 人工管理阶段 B) 文件系统阶段C) 数据库系统阶段 D) 三个阶段相同(分数:2.00)A.B.C. D.解析:知识点 数据库管理技术的发展特
29、点评析 数据库管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段的特点:数据不保存、数据不独立、数据不能共享、数据无结构,没有专门的数据管理软件。文件系统阶段的特点:数据可以长期保存,有专门的数据管理软件文件系统。但是数据独立性低,共享性差、冗余度大,数据记录内有结构,整体无结构。数据库系统阶段的特点:数据结构化,数据独立性高,数据共享性高,冗余度小,易于扩充,数据库管理系统提供统一的数控制功能,包括数据安全性、完整性、并发控制和数据恢复功能。11.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 逻辑设计阶段 C)
30、 概念设计阶段 D) 物理设计阶段(分数:1.00)A.B. C.D.解析:解析 E-R 模型即实体-联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念以及它们之间的两种连接关系。数据库逻辑设计阶段包括的过程有:从 E-R 图向关系模式转换,逻辑模式规范化及调整,实现规范化和 RDBMS,以及关系视图设计。可在 C 程序中用做用户标识符的一组标识符是( )。Aand_2007BDatey-m-dCHiDr.TomDcaseBigl(分数:2.00)A.B.C.D. 解析:解析 主要考查运算符的优先级。sizeof 的优先级最高。后面的顺序是:%、,优先级最低的是“=”。A. B.
31、C.D.解析:解析 在 C 语言中,合法的标识符可以由字母、数字和下画线组成,且第一个字符必须为字母或下画线。12.设有定义下列:int a=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=ab)scanf(“%d“,if(x+2)printf(“%d“,x);else printf(“%d/n“,x-);A) 4 和 2 B) 4 和 1 C) 4 和 0 D) 3 和 1(分数:1.00)A. B.C.D.解析:解析 本题考查 if else 语句。首先 scanf 函数通过键盘读入 x 的值。当 x=3 时,第一个 if 语句,先判断条件,取 x 的值 3 和 2 比较,然后将
32、 x 的值加 1,发现条件成立,执行下列的 printf 语句,输出x 的值 4。当 x=1 时,第一个 if 语句,先判断条件,取 x 的值 1 和 2 比较,然后将 x 的值加 1(x 的值变为2),发现条件不成立,执行下列的 else 语句,先输出 x 的值 2,再将 x 的值减 1。18.设有定义:int n=0,*p=if(-a)b+;else if(a=0) b+=2;else b+=3;printf(“%d/n“,b);程序运行后的输出结果是( )。A)0 B)1 C)2 D)3(分数:2.00)A.B.C. D.解析:解析 由于变量 a 的初始值等于 1,所以在程序中执行 if
33、(-a)后,a 的值等于 0,执行 else if(a=0)b+=2;这条语句后,变量 b 的值等于 2。20.以下程序运行后的输出结果是#includestdio.hmain()char s=“012xy“; int i, n=0;for(i=0; si!=0; i+)if(si=a printf(“%d/n“, n);A) 0 B) 2 C) 3 D) 5(分数:1.00)A.B. C.D.解析:解析 程序的功能是统计字符串“012xy”中小写字母的个数。所以程序的运行结果为 2。21.若变量已正确定义,下列正确的程序段是( )。A) while(ch=getchar()=/N)putch
34、ar(ch);B) while(ch=getchar()=/n)putchar(ch);C) while(ch=getchar()!=/N)putchar(ch);D) while(ch=getchar()!=/n)putchar(ch);(分数:2.00)A.B.C.D. 解析:解析 本题考查两个知识点:C 语言用/n这个字符常量表示换行;函数 getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。有以下程序#includestdio.hmain()int a=1,2,3,4),y,*p=.a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是( )。Ay
35、=0 By=1 Cy=2 Dy=3(分数:3.00)A.B.C.D. 解析:解析 本题中首先定义了一个一维数组和指针,接着将数组第 4 个元素的地址赋予*p,接着使指针 p 指向了数组的第三个元素,并将数组第三个元素的值 3 赋予 y。A.B. C.D.解析:解析 数据块输入/输出函数的调用格式为:fread(buffer,size,count,fp),其中:“buffer”是一个指针,对于 fread 来说,它是读入数据的存放地址。“size”是要读写的字节数:“count”是要进行读写多少个 size 字节的数据项;“fp”是指文件型指针。选项 B)中 bi是一个数组,不是指针,需改为in
36、t i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i2;i+)for(j=0;pij/0;j+=2) s=pij-0;printf(“%d“,s);A) 6357 B) 6135 C) 1357 D) 691357(分数:1.00)A.B.C. D.解析:解析 本题先将指针 p 指向二维数组 ch25,相当于 p0=“1234“,p1=“5678“,通过双重for 循环,是要将 p 中的字符隔一个输出一个,通过 s=pij-0这条语句是将所要输出的字符转换成相应的+进制数。29.有以下程序#include stdio.hmain()int s12=1,2,3,4,4
37、,3,2,1,1,1,2,3,c5=0,i;for(i=0;i12;i+) csi+;for(i=1;i5;i+) printf(“%d“,ci);printf(“/n“);程序的运行结果是A) 1 2 3 4 B) 2 3 4 4 C) 4 3 3 2 D) 1 1 2 3(分数:2.00)A.B.C. D.解析:解析 在 br(i=0;i12;i+)csi)+中,数组元素 si的值作为数组 c 的下标,当退出循环时,数组 c 的 4 个元素的值分别为 4、3、3、2。30.有以下程序#includestring.hmain()char p=a,b,c,q10=a,b,c;printf(“%
38、d%d/n“,strlen(p),strlen(q);以下叙述中正确的是A) 在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B) 由于 p 数组中没有字符串结束符,长度不能确定,但 q 数组中字符串长度为 3C) 由于 q 数组中没有字符串结束符,长度不能确定,但 p 数组中字符串长度为 3D) 由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定(分数:2.00)A. B.C.D.解析:解析 在给 p 和 q 数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组 p 和 q都有 3 个字符,所以长度均为 3。31.阅读下列程序,当运行函数时
39、,输入 asd af aa z67,则输出为#include stdio.h#include ctype.h#include string.hint fun(char*str)int i,j=0;for(i=0;stri!=/0;i+)if(stri!=)strj+=stri;strj=/0;main()char str81;int n;printf(“Input a string:“);gets(str);puts(str);fun(str);printf(“%s/n“,str);A) asdafaaz67 B) asdafaa267 C) asd D) z67(分数:2.00)A. B.C
40、.D.解析:解析 本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于 C 语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用 stri从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在 if()的单引号之间有一个空格),则将其保存 strj中。注意 j 的下标变化、初值及最后加串结束符/0。32.有以下程序#include stdio.hvoid fun(int a,int n)int i,t;for(i=0;in/2;i+) t=ai; ai=an-1-i; an-1-i=t;main()int
41、 k10=1,2,3,4,5,6,7,8,9,10,i;fun(k,5);for(i=2;i8;i+) printf(“%d“,ki);printf(“/n“);程序的运行结果是_。A) 345678 B) 876543 C) 1098765 D) 321678(分数:2.00)A.B.C.D. 解析:评析 在主函数中,定义了一维数组 k,并通过调用 fun 函数将形参数组 a 指向实参数组 k 所在的存储单元,这样,a 和 k 共用同一存储单元,所以对数组 a 的元素值的改变相当于对相应数组 k 的元素值的改变。在 fun 函数中,通过 for 循环对数组元素 a0与 a4、a1与 a3的值
42、分别作了交换,也即相当于主函数中 k0与 k4、k1与 k3的值分别作了交换,此时 k 中各元素的值为5,4,3,2,1,6,7,8,9,10,故输出 k2到 k7的值为 321678。33.以下程序的运行结果是#define MAX(A,B) (A)(B)?(A):(B)#define PRINT(Y) printf(:Y=%d/t“,Y)main()int a=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);A) Y=3 B) 存在语法错误 C) Y=7 D) Y=0(分数:2.00)A.B.C. D.解析:命题目的 考查带参数的宏替换。解题要点 宏替换不像
43、函数调用要进行参数值的计算、传递等,而只是简单按照原格式进行字符串的替换。考点链接 宏定义的命令格式。34.以下程序的输出是struet stint x;int *y; *p;int dt4=10,20,30,40;struct st aa4=50, printf(“%d/n“,+(p-x);A) 10 B) 11 C) 51 D) 60(分数:2.00)A.B.C. D.解析:解析 由于数组名保存了数组的首地址,即数组中第一个元素的地址,执行 p=aa;后,p 指向aa0,p-x 相当于 aa0.x,也就是 50,经过自增运算后,显示结果为 51。函数 ftell(fp)的作用是( )。A得
44、到 fp 所指向文件的当前读写位置 B初始化流式文件的位置指针C移动流式文件的位置指针 D以上答案均正确(分数:2.00)A. B.C.D.解析:解析 由于运算符优先级比*高,所以 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量。A. B.C.D.解析:解析 位置指针当前值函数 ftell()的基本调用格式为:ftell(fp)。ftell 函数的功能是,得到fp 所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。二、填空题(总题数:15,分数:32.50)35.一棵二叉树的中序遍历结果为 DBEAFC,前序遍历结果为 ABDECF,则后
45、序遍历结果为_。(分数:2.00)填空项 1:_ (正确答案:DEBFCA)解析:解析 本题考查的知识点是二叉树的遍历。前序遍历要求先遍历根结点,再遍历左子树,最后遍历右子树;中序遍历要求先遍历左子树,再遍历根结点,最后遍历右子树;后序遍历要求先遍历左子树,再遍历右子树,最后遍历根结点。由题目可求出该二叉树如下图所示,所以该二叉树后序遍历的结果为DEBFCA。36.耦合和内聚是评价模块独立性的两个主要标准,其中U /U反映了模块内各成分之间的联系。(分数:2.00)填空项 1:_ (正确答案:内聚)解析:解析 内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内
46、的联系;耦合性是模块间互相连接的紧密程度的度量。37.数据库保护分为:安全性控制、 1、并发性控制和数据的恢复。(分数:2.00)填空项 1:_ (正确答案:完整性控制)解析:解析 安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库将其恢复到正确的状态。38.在 E-R 图中,矩形表示 1。(分数:2.00)填空项 1:_ (正确答案:实体)解析:解析 在 E-R 图中用矩形表示实体,用椭圆形表示属性,用菱形表示联系。39.以下程序的运行结果是 【9】 。#include stdiohmain() int x=1,y=0,a=0,b=0