1、二级 C语言笔试-417 及答案解析(总分:102.50,做题时间:90 分钟)一、选择题(总题数:40,分数:71.00)1.栈和队列的共同特点是A) 都是先进先出 B) 都是先进后出C) 只允许在端点处插入和删除元素 D) 没有共同点(分数:2.00)A.B.C.D.2.对于长度为 n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是_。A) 冒泡排序为 n/2 B) 冒泡排序为 nC) 快速排序为 n D) 快速排序为 n(n-1)/2(分数:2.00)A.B.C.D.3.下列叙述中正确的是_。(A) 程序设计就是编制程序(B) 程序的测试必须由程序员自己去完成(C) 程序
2、经调试改错后还应进行再测试(D) 程序经调试改错后不必进行再测试(分数:2.00)A.B.C.D.4.下列对于软件测试的描述中正确的是_。A) 软件测试的目的是证明程序是否正确B) 软件测试的目的是使程序运行结果正确C) 软件测试的目的是尽可能地多发现程序中的错误D) 软件测试的目的是使程序符合结构化原则(分数:2.00)A.B.C.D.5.在设计程序时,应采纳的原则之一是( )。A) 不限制 goto语句的使用 B) 减少或取消注解行C) 程序越短越好 D) 程序结构应有助于读者理解(分数:1.00)A.B.C.D.6.某系统总体结构图如下图所示:(分数:2.00)A.B.C.D.7.数据流
3、程图(DFD 图)是A) 软件概要设计的工具 B) 软件详细设计的工具C) 结构化方法的需求分析工具 D) 面向对象方法的需求分析工具(分数:2.00)A.B.C.D.8.下列选项中不属于软件生命周期开发阶段任务的是_。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B.C.D.9.在软件开发过程中,软件结构设计是描述 _。A) 数据存储结构 B) 软件体系结构 C) 软件结构测试 D) 软件控制过程(分数:2.00)A.B.C.D.10.下列叙述中,不属于软件需求规格说明书的作用的是( )。 A) 便于用户,开发人员进行理解和交流 B) 反映出用户问题的结
4、构,可以作为软件开发工作的基础和依据 C) 作为确认测试和验收的依据 D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D.11.下列叙述中,正确的是A) 用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B) 用 E-R图只能表示实体集之间一对一的联系C) 用 E-R图只能表示实体集之间一对多的联系D) 用 E-R图表示的概念数据模型只能转换为关系数据模型(分数:2.00)A.B.C.D.12.以下关于函数的叙述中正确的是_。A) 每个函数都可以被其他函数调用(包括 main函数)B) 每个函数都可以被单独编译C) 每个函数都可以单独运行D) 在一个函数内部可以定
5、义另一个函数(分数:2.00)A.B.C.D.13.以下选项中可作为 C语言合法常量的是_。A) -80. B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A.B.C.D.14.以下关于简单程序设计的步骤和顺序的说法中正确的是 A) 确定算法后,整理并写出文档,最后进行编码和上机测试 B) 首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档 C) 先编码和上机测试,在编码过程中确定算法和数据结构,最后整理文档 D) 先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(分数:1.00)A.B.C.D.15.有以下程序int add(int a,
6、int b)return(a+b);main()int k,(*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);(分数:1.00)A.B.C.D.16.假定 w、x、y、m 均为 int型变量,则执行下列的语句后,m 的值是( )。w=6,x=4,y=3;m=(wx)?W:X;m=(my)?m:y;A) 3 B) 4 C) 5 D) 6(分数:2.00)A.B.C.D.17.设有以下语句,其中不是对 a数组元素的正确引用的是:_(其中 0i0) inta10=O,1
7、2,3,4,5,6,7,8,9,*p=a;A) ap-a B) *( B) char s5=A,B,C,D,E;C) char *s=“ABCDE“; D) char *s; scanf(“%s“,*s);(分数:1.00)A.B.C.D.19.有以下程序#includestdio.hmain()int x=8;for(;x0;X-)if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是( )。A7,4,2 B8,7,5,2 C9,7,6,4 D8,5,4,2(分数:1.00)A.B.C.D.20.设有程序段:int k=12;wh
8、ile(k=1) k=k-1;则下列描述中正确的是( )。A) while循环执行 10次 B) 循环是无限循环C) 循环体语句一次也不执行 D) 循环体语句执行一次(分数:2.00)A.B.C.D.21.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)return 3;elsea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);A) 2 B) 8 C) 9 D) 5(分数:2.00)A.B.C.D.22.字符串“%/“ABCDEF/“/“的长度是( )。A) 11 B)
9、10 C) 5 D) 3(分数:2.00)A.B.C.D.23.若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是_。A) main()x=fun(2,10);float fun(int a,int b)B) float fun(int a,int b)main()x=fun(i,j);C) float fun(int,int);main()x=fun(2,10);float fun(int a,int b)D) main()float fun(int i,int j);x=fun(i,j);float fun(int a,int b)(分
10、数:2.00)A.B.C.D.24.下列程序的输出结果是( )。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0|+b0) +C; printf(“%d,%d,%d“,a,b,c); A) 0,1,2 B) 1,2,3 C) 1,1,3 D) 1,2,2(分数:2.00)A.B.C.D.25.判断 char型变量 c1是否为小写字母的正确表达式为( )。A) ac1Z B) (c1A) c1z)C) (ac1(“z“c1) D) (c1a) B) char,c20“goodmoming“;C) charca,b,c,d; D) charc
11、“goodmoming“;(分数:2.00)A.B.C.D.29.下列程序的输出结果是( )。void f(int *x, int *y)int t;t=*x,*x=*y;*y=t;main( )int a8= 1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=while(pq)f(p,q); p+; q-;for (i=0;i8;i+) printf(“%d,“,ai);A) 8,2,3,4,5,6,7,1 B) 5,6,7,8,1,2,3,4C) 1,2,3,4,5,6,7,8 D) 8,7,6,5,4,3,2,1(分数:2.00)A.B.C.D.30.有如下程序段:int *p
12、,a=10,b=1;p= a= *p+b;执行该程序段后,a 的值为( )。A) 12 B) 11 C) 10 D) 编译出错(分数:1.00)A.B.C.D.31.下列二维数组初始化语句中,不正确的是( )。A) int b2=1,2,3,4,5,6,7; B) int b35=0,0,0;C) int b4=1,2,3,4,5,6; D) int b32=(1,2),(3,4) ,(5,6);(分数:2.00)A.B.C.D.32.设有定义:int n1=0,n2,*p=,下列赋值语句中与 n2=n1;语句等价的是 ( )。A) *p=*q; B) p=q; C) *p= while(pi
13、) if(pi=“ i+;main() char s1100=“ab cd EFG!“; fun(s1); printf(“%s/n“, s1); A) ab cd EFG! B) Ab Cd EFg! C) aB cD EFG! D) ab cd EFg!(分数:2.00)A.B.C.D.34.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填 _。struct linkchar data;_;node;(分数:2.00)A.B.C.D.35.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char*p;p
14、=a;for(p=a;pa+8;p+=2) putchar(*p);A) language B) lnug C) 有语法错误 D) lang(分数:1.00)A.B.C.D.36.有以下程序#includestdio.hmain()struct nodeint n;struct node *next; *p;struct node x3=2,x+1,4,x+2,6,NULL;p=x;printf(“%d,“,p-n);printf(“%d/n“,p-next-n);程序运行后的输出结果是( )。A)2,3 B)2,4 C)3,4 D)4,6(分数:2.00)A.B.C.D.37.变量 a中的数
15、据用二进制进表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000,若要求将 a的高 4位取反,低 4位不变,所要执行的运算是( )。A) a*b B) ab C) aif(ij)t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+) printf(“%d,“,aai);printf(“/n“);执行后的输出结果是U /U。(分数:2.00)填空项 1:_43.在关系数据库中把数据表示成二维表,每一个二维表称为U /U。(分数:2.00)填空项 1:_44.实
16、体完整性约束要求关系数据库中元组的 1 属性值不能为空。(分数:2.00)填空项 1:_45.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。int n=0,c;c=getchar();while(c!=/n)if(_)n+;(分数:2.00)填空项 1:_46.下列程序的循环次数是_。x=2;dox=x*x;while(!x);(分数:2.00)填空项 1:_47.下列循环的循环次数是_。int k=2;while(k=0)printf“%d“,k);k-;printf(“/n“);(分数:1.50)填空项 1:_48.以下程序的功能是:求出数组 x中各相邻两个元
17、素的和,依次存放到 a数组中,然后输出,请填空。main1int x10,a9,i;for (i=0;i10;i+)scanf(“%d“,xi);for(i=1;i10;i+)ai-1=xi+ 2;for(i=0;i9;i+)printf(“%d“,ai);printf(“/n“);(分数:2.00)填空项 1:_49.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。#includestdio.h#includectype.hmain()char c;int a,s=0;while(_)if(isdigit(c)a= c-0;s+=a;printf(“s=%d“
18、,s);(分数:2.00)填空项 1:_50.以下程序的输出结果是_。 #includestdio.h void swap(int*a,int*b) int*t; t=a;a=b;b=c;main() int i=3,j=5,*p=if(x=0x=1) return(1) ;p=x*func(x-1) ;return(p);main()printf(“%d/n“,func(4) );(分数:2.00)填空项 1:_53.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值,请填空void fun(int,int,int(*)4,int *);main()int a34=12
19、,41,36,28,19,33,15,27,3,27,19,1,b3,i;fun(3,4,a,b);for(i=0;i3;i+)printf(“%4d“,bi);printf(“/n“);void fun(int m,int n,int ar4,int *bar)int i,j,x;for(i=0;iM;i+)x=ari0;for(j=0;jN;j+)NBSP;IF(X_=x;(分数:2.00)填空项 1:_54.现有两个 C程序文件 T18.c和 myfun.c同在 TC系统目录(文件夹)下,其中 T18.c文件如下:#includestdio.h#include“myfun.c“maim(
20、)fun();printf(“/n“);myfun.c文件如下:void fun()char s80,c;int n=0;while(c=getchar()!=/n)sn+=c;n-;while(n=0)printf(“%c“,sn-);当编译连接通过后,运行程序 T18时,输入 Thank!,则输出结果是_。(分数:2.00)填空项 1:_55.若有以下程序:main()char a;a=H-A+0;printf(“%c/n“,a);执行后的输出结果是U /U。(分数:2.00)填空项 1:_二级 C语言笔试-417 答案解析(总分:102.50,做题时间:90 分钟)一、选择题(总题数:4
21、0,分数:71.00)1.栈和队列的共同特点是A) 都是先进先出 B) 都是先进后出C) 只允许在端点处插入和删除元素 D) 没有共同点(分数:2.00)A.B.C. D.解析:命题目的 考查栈和队列概念的掌握。解题要点 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。考点链接 评价模块独立性的主要标准,以及对它们的定义和分类。2.对于长度为 n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是
22、_。A) 冒泡排序为 n/2 B) 冒泡排序为 nC) 快速排序为 n D) 快速排序为 n(n-1)/2(分数:2.00)A.B.C.D. 解析:解析 存最坏情况下,快速排序退化为冒泡排序,冒泡排序法的基本过程参见本题的理论链接。冒泡排序的每个元素都要与它前面的元素相比较,因此比较次数为(n-1)+(n-2)+1=n(n-1)/2。3.下列叙述中正确的是_。(A) 程序设计就是编制程序(B) 程序的测试必须由程序员自己去完成(C) 程序经调试改错后还应进行再测试(D) 程序经调试改错后不必进行再测试(分数:2.00)A.B.C. D.解析:4.下列对于软件测试的描述中正确的是_。A) 软件测
23、试的目的是证明程序是否正确B) 软件测试的目的是使程序运行结果正确C) 软件测试的目的是尽可能地多发现程序中的错误D) 软件测试的目的是使程序符合结构化原则(分数:2.00)A.B.C. D.解析:解析 软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。5.在设计程序时,应采纳的原则之一是( )。A) 不限制 goto语句的使用 B) 减少或取消注解行C) 程序越短越好 D) 程序结构应有助于读者理解(分数:1.00)A.B.C.D. 解析:解析 滥用 goto语句将破坏程序结构,可读性差,因此 A) 不对;注解行有利于对程序的理解,不应减少或取消,B) 不对;程序的长短要
24、依实际情况而论,而不是越短越好,C) 不对。6.某系统总体结构图如下图所示:(分数:2.00)A.B.C. D.解析:解析 这个系统总体结构图是一棵树结构,在树结构中,根结点在第 1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共 3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为 3。7.数据流程图(DFD 图)是A) 软件概要设计的工具 B) 软件详细设计的工具C) 结构化方法的需求分析工具 D) 面向对象方法的需求分析工具(分数:2.00)A.B.C. D.解析:解析 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程。软件结
25、构图是软件概要设计的工具,而详细设计是对概要设计的每个模块进行细化,UML 是面向对象的需求分析的工具。8.下列选项中不属于软件生命周期开发阶段任务的是_。A) 软件测试 B) 概要设计 C) 软件维护 D) 详细设计(分数:2.00)A.B. C.D.解析:解析 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段,其中详细设计、软件编码和软件测试都属于软件开发阶段。9.在软件开发过程中,软件结构设计是描述 _。A) 数据存储结构 B) 软件体系结构 C) 软件结构测试 D) 软件控制过程(分数:2.00)A.B. C.D.解析:评析 从工程管理角度来看,软件设计分两步完成:概要设计和
26、详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。10.下列叙述中,不属于软件需求规格说明书的作用的是( )。 A) 便于用户,开发人员进行理解和交流 B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C) 作为确认测试和验收的依据 D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D. 解析:解析 软件需求规格说明书有以下几个方面的作用: 便于用户、开发人员进行理解和交流。 反映出用户问题的结构,可以作为软件开发工作的基础和依据。 作为确认测试和验收的依据。11.下列叙述中,正确的是A) 用 E-R图能够表示实体集
27、间一对一的联系、一对多的联系和多对多的联系B) 用 E-R图只能表示实体集之间一对一的联系C) 用 E-R图只能表示实体集之间一对多的联系D) 用 E-R图表示的概念数据模型只能转换为关系数据模型(分数:2.00)A. B.C.D.解析:解析 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。12.以下关于函数的叙述中正确的是_。A) 每个函数都可以被其他函数调用(包括 main函数)B)
28、每个函数都可以被单独编译C) 每个函数都可以单独运行D) 在一个函数内部可以定义另一个函数(分数:2.00)A.B. C.D.解析:解析 C 语言中,除了主函数外,用户定义的函数或库函数都可以互相进行调用,甚至可以自己调用自己。所以选项 A错误。每个函数可以单独被编译成二进制代码,但不是所有的函数都可以单独运行,程序的运行需要从主函数 main开始,缺少 main函数,则无法运行。所以选项 C错误。C 语言规定,不能在一个函数内部再定义函数,所以选项 D错误。13.以下选项中可作为 C语言合法常量的是_。A) -80. B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A
29、. B.C.D.解析:解析 选项 A是整型常量的十进制表示法,正确。八进制数表示法以 0或-0 开头,且“逢八进一”,所以选项 B错误。实型常量的指数表示法是用字母 e(或 E)将实数的小数部分和指数部分分开,字母e(或 E)之前的是小数部分,之后的是指数部分,这两部分都不能省略,且指数部分必须是整数,所以选项 C和 D错误,选 A。14.以下关于简单程序设计的步骤和顺序的说法中正确的是 A) 确定算法后,整理并写出文档,最后进行编码和上机测试 B) 首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档 C) 先编码和上机测试,在编码过程中确定算法和数据结构,最后整理文档 D) 先
30、写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(分数:1.00)A.B. C.D.解析:解析 设计一个能解决实际问题的计算机程序需要经过以下过程:(1) 建立模型。由实际问题的描述抽象出数学模型,即由物理模型到抽象模型,用形式化方法描述现实世界。(2) 算法设计。给出解决问题的步骤(算法)。(3) 算法表达。选择一种表达算法的工具,对算法进行清晰的表达。(4) 编写程序。选择一种程序设计语言,将以上算法程序化。(5) 程序调试。对编写好的程序进行调试,修改程序中的错误。(6) 程序文档编写与程序维护。整理和编写程序文档,以便更好地维护程序。选项 B符合上述描述。15.有以下程序
31、int add(int a,int b)return(a+b);main()int k,(*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);(分数:1.00)A.B.C. D.解析:命题目的 函数的调用。解题要点 在语句“k=*f(a,b)”中,由于“()”的优先级高于“*”,所以“*f(a,b);”表示其返回类型为指针的带有两个整型参数的函数。16.假定 w、x、y、m 均为 int型变量,则执行下列的语句后,m 的值是( )。w=6,x=4,y=3;m=(wx)
32、?W:X;m=(my)?m:y;A) 3 B) 4 C) 5 D) 6(分数:2.00)A. B.C.D.解析:解析 条件表达式“a?b:c”的含义是:当 a为真时,其值等于表达式 b的值,当 a为假时,其值等于表达式 c的值。第一个表达式:w=6x=4 为假,所以返回 x的值,即 m=x=4;第二个表达式:m=4y=3 为假,所以返回 y的值,即 m=y=3。17.设有以下语句,其中不是对 a数组元素的正确引用的是:_(其中 0i0) inta10=O,12,3,4,5,6,7,8,9,*p=a;A) ap-a B) *( B) char s5=A,B,C,D,E;C) char *s=“A
33、BCDE“; D) char *s; scanf(“%s“,*s);(分数:1.00)A.B.C. D.解析:解析 选项 A)字符串的赋值产生越界错误,不正确;选项 B)是字符数组的赋值,而不是字符串的赋值;选项 D)中 scanf的列表项必须为变量的地址。19.有以下程序#includestdio.hmain()int x=8;for(;x0;X-)if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是( )。A7,4,2 B8,7,5,2 C9,7,6,4 D8,5,4,2(分数:1.00)A.B.C.D. 解析:解析 “x-”
34、表示先执行程序,再令 x的值减 1;而“-x”表示令 x的值减 1,再执行程序。20.设有程序段:int k=12;while(k=1) k=k-1;则下列描述中正确的是( )。A) while循环执行 10次 B) 循环是无限循环C) 循环体语句一次也不执行 D) 循环体语句执行一次(分数:2.00)A.B.C. D.解析:解析 本题考查 while循环。while 循环的控制表达式 k=1是个赋值表达式而不是逻辑表达式,所以循环体一次也不执行。21.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)return 3;els
35、ea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);A) 2 B) 8 C) 9 D) 5(分数:2.00)A. B.C.D.解析:解析 本题考查函数的递归调用。在函数递归调用时,fun(7):a=7-fon(5)fun(5):a=5-fon(3)fun3:a=3-fun(1)fun(1):a=3,反推回去 fun(3):a=3-3=0fun(5):a=5-0=5fun(7):a=7-5-2,最后的计算结果为 2。22.字符串“%/“ABCDEF/“/“的长度是( )。A) 11 B) 10 C) 5 D) 3(分数:2.00)A.B. C
36、.D.解析:解析 本题涉及字符串最基本的 2个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符;以反斜杆/开头的特殊字符序列,意思是把反斜杆后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,/连同后面的字符为一个长度;而%也是如此。23.若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是_。A) main()x=fun(2,10);float fun(int a,int b)B) float fun(int a,int b)main()x=fun(i,j);C) float fun(int,int);m
37、ain()x=fun(2,10);float fun(int a,int b)D) main()float fun(int i,int j);x=fun(i,j);float fun(int a,int b)(分数:2.00)A. B.C.D.解析:解析 在调用函数时,此函数必须被声明或定义过。A 选项中 fun在调用时并未声明,因此是错误的。24.下列程序的输出结果是( )。 #includestdio.h void main() int a=0,b=1,c=2; if(+a0|+b0) +C; printf(“%d,%d,%d“,a,b,c); A) 0,1,2 B) 1,2,3 C) 1
38、,1,3 D) 1,2,2(分数:2.00)A.B.C. D.解析:解析 本题考查 if语句。先判断 if语句的条件是否成立,因为+a=10,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行+b 操作,就可以直接得出整个表达式的值为逻辑 1,执行下面的+c。25.判断 char型变量 c1是否为小写字母的正确表达式为( )。A) ac1Z B) (c1A) c1z)C) (ac1(“z“c1) D) (c1a) B) char,c20“goodmoming“;C) charca,b,c,d; D) charc“goodmomin
39、g“;(分数:2.00)A. B.C.D.解析:解析 本题考查两个概念:用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。选项 A)中一个单引号内放了若干个字符是错误的;选项 B)和选项 D)中将一个字符串赋值给一个字符数组是允许的。29.下列程序的输出结果是( )。void f(int *x, int *y)int t;t=*x,*x=*y;*y=t;main( )int a8= 1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=while(pq)f(p,q); p+; q-;for (i=0;i8;i+) printf(“%d,“
40、,ai);A) 8,2,3,4,5,6,7,1 B) 5,6,7,8,1,2,3,4C) 1,2,3,4,5,6,7,8 D) 8,7,6,5,4,3,2,1(分数:2.00)A.B.C.D. 解析:解析 函数 f()的功能是对两个数据互换。在主函数中指针变量 p和 q分别指向数组 a8的首和尾,在 while循环中实现从首尾开始数组元素的互换操作。30.有如下程序段:int *p,a=10,b=1;p= a= *p+b;执行该程序段后,a 的值为( )。A) 12 B) 11 C) 10 D) 编译出错(分数:1.00)A.B. C.D.解析:解析 p=a=*p+b表达式的含义是指针变量 p
41、所指内存的值 10与 b的和赋给 a。31.下列二维数组初始化语句中,不正确的是( )。A) int b2=1,2,3,4,5,6,7; B) int b35=0,0,0;C) int b4=1,2,3,4,5,6; D) int b32=(1,2),(3,4) ,(5,6);(分数:2.00)A.B.C.D. 解析:解析 在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0;C 语言规定,对于二维数组,只可以省略第 1个方括号中的常量表达式,而不能省略第 2个方括号中的常量表达式:赋的初值不能多于事先定义好的数组元素个数。选项 D)赋值表达式中对每一维的元素赋初值应用,
42、而不是()。32.设有定义:int n1=0,n2,*p=,下列赋值语句中与 n2=n1;语句等价的是 ( )。A) *p=*q; B) p=q; C) *p= while(pi) if(pi=“ i+;main() char s1100=“ab cd EFG!“; fun(s1); printf(“%s/n“, s1); A) ab cd EFG! B) Ab Cd EFg! C) aB cD EFG! D) ab cd EFg!(分数:2.00)A.B.C. D.解析:解析 函数 fun中 while循环实现的功能是从字符串第一个字符开始,依次取出字符进行判断,若当前的字符等于空格并且当前
43、字符的前一个字符为小写字母的话,就将前一个小写字母转换成大写。实际上 while循环完成的操作是将空格字符前的小写字母转换成大写,所以选择选项 C。34.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填 _。struct linkchar data;_;node;(分数:2.00)A.B.C.D. 解析:评析 在单向链表中,由于每个结点需要存储下个结点的地址,且下一个结点的数据类型与前个结点的数据类型完全相同,故应为 struct link *next。35.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;
44、char*p;p=a;for(p=a;pa+8;p+=2) putchar(*p);A) language B) lnug C) 有语法错误 D) lang(分数:1.00)A.B. C.D.解析:解析 本程序首先定义了静态字符数组 a,然后将指针 p指向数组 a的首地址。第 1次 for循环,p=a,p 指向数组的第 1个元素,*p 是取指针 p所指地址的内容,输出 1;第 2次 for循环, p=p+2,则 p指向数组的第 3个元素,*p 是取指针 p所指地址的内容,输出 n;第 3次 for循环,p=p+2,则 p指向数组的第 5个元素,*p 是取指针 p所指地址的内容,输出 u;第 4
45、次 for循环,p=p+2,则 p指向数组的第 7个元素,*p 是取指针 p所指地址的内容,输出 g,结束循环。36.有以下程序#includestdio.hmain()struct nodeint n;struct node *next; *p;struct node x3=2,x+1,4,x+2,6,NULL;p=x;printf(“%d,“,p-n);printf(“%d/n“,p-next-n);程序运行后的输出结果是( )。A)2,3 B)2,4 C)3,4 D)4,6(分数:2.00)A.B. C.D.解析:解析 在程序中由结构休 node的数组 x3组成了一个线性链表,指针 p指
46、向链表的第一结点 x0,所以首先输出 2,p-next 指向第二个结点 x1,所以输出 4。37.变量 a中的数据用二进制进表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000,若要求将 a的高 4位取反,低 4位不变,所要执行的运算是( )。A) a*b B) ab C) aif(ij)t=ai;ai=aj;aj=t;f(a,i+1,j-1);main()int i,aa5=1,2,3,4,5;f(aa,0,4);for(i=0;i5;i+) printf(“%d,“,aai);printf(“/n“);执行后的输出结果是U /U。(分数:2.00)填空项 1:_ (正确答案:1,5,4,3,2)解析:解析 第一次调用函数 f后 aa0=5、aa4=1;第二次调用函数 f后 aa1=4、aa4=2;第三次调用函数 f后 aa33。正确答案为 1,5,4,3,2。43.在关系数据库中把数据表示成二维表,每一个二维表称为U /U。(分数:2.00)填空项 1:_ (正确答案:关系或一个关系)解析:解析 在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。44.实体完整性约束要求关系数据
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1