1、二级 C 第 3 套1一、选择题在下列各题的 A)、B) 、C) 、 D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)与数据元素本身的形式、内容、相对位置、个数无关的是数据的 A)存储结构B)存储实现C)逻辑结构D)运算实现(1)C【解析】所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。所谓数据的存储结构,是指数据的逻辑结构在计算机存储空间中的存放形式。与数据元素本身的形式、内容、相对位置、个数有关。逻辑结构与物理存储无关。 因此本题的正确答案为 C。(2)以下关于链式存储结构的叙述中,哪一条是不正确的A)结点除自身信息外还包括指针
2、域,因此存储密度小于顺序存储结构B)逻辑上相邻的结点物理上不必相邻C)可以通过计算直接确定第I个结点的存储地址D、插入、删除运算操作方便,不必移动结点(2)C【解析】A 项中:链式存储结构由于有指针域的存在,其比顺序存储结构的存储密度要小,即:相同存储空间下存的数据少。选项中的叙述是正确的。B 项中:链式存储结构可通过指针访问下一个结点,但此结点可能与上一结点相邻, 也可能不相邻。选项中的叙述是正确的。C 项中:链式存储结构如果要计算第 I 个结点的存储地址,不能直接从首结点直接计算,而必须通过指针域来顺序查找,最后再定位。选项中的叙述是错误的。D 项中:链式存储结构在插入、删除结点时,可通过
3、修改指针域的值来完成,而不必移动其他结点,操作方便。选项中的叙述是正确的因此本题的正确答案为 C 。(3)用快速排序法对下列关键字序列进行排序,速度最慢的是A) 7, 11,19,23,25,27,32 B) 27,25,32,19,23,7,11 C) 3, 11,19,32,27,25,7 D) 123,27,7,19,11,25,32 (3)A【解析】快速排序的基本方法:在待排序的序列中任取一个记录,以它为基准用交换的方法将所有的记录分成两个部分关键码比它小的一个部分和关键码比它大的另一个部分,再分别对两个部分实施上述过程,一直重复到排序完成为止。最坏的情况指的是对已经排好序的记录进行完
4、全相反的排序。 因此本题的正确答案是 A 。(4)软件设计中划分模块的一个准则是A)低内聚低耦合 B)高内聚低耦合二级 C 第 3 套2C)低内聚高耦合 D)高内聚高耦合(4)B【解析】耦合性与内聚性是模块独立性的两个定性标准。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。故本题答案为 B。(5)在结构化方法中,软件功能分解属于软件开发中的哪个阶段。A)详细设计 B)需求分析 C)总体设计 D)编程调试(5)C 【解析】总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具
5、体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。(6)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送A)调用语句 B)命令 C)口令 D)消息(6)D【解析】 面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。(7)用树形结构表示实体之
6、间联系的模型是A)关系模型 B)网状模型C)层次模型 D)以上三个都是(7)C【解析】本题考查的是数据模型。层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。故本题答案为C。(8)在E-R图中,用来表示实体的图形是A)矩形 B)椭圆形 C)菱形 D)三角形(8)A【解析】 E-R 图中用矩形表示实体集,用椭圆形表示属性,用菱形表示联系。(9)数据库设计包括两个方面的设计内容,它们是A)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)结构特性设计和行为特性设计(9)A【解析】数据库设计可分为概念设计与逻辑设计。数据库概念设计的目的是分析数据间内在语义关联,在此基础
7、上建立一个数据的抽象模型。二级 C 第 3 套3数据库逻辑设计的主要工作是将E-R图转换为指定的RDBMS中的关系模型。(10)有两个关系R和T如下:则由关系R得到关系T的操作是A)选择B)投影C)交D)并(10)A【解析】从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。由图可知关系 R 通过运算得到关系 T,关系 T 与关系 R 相比,属性的个数没有发生变化,记录的条数发生了变化。因此所使用的运算应该是选择。故本题答案为 A。(11)以下叙述中正确的是A) C程序中注释部分可以出现在程序中任意合适的地方B) 花括号“和“只能作为函数体的定界符C
8、) 构成C 程序的基本单位是函数,所有函数名都可以由用户命名D) 分号是 C 语句之间的分隔符,不是语句的一部分(11)A【解析】本题的考查点是C程序设计的初步知识。选项A,C程序中的注释只是给人看的,对编译和运行不起作用,可以加在程序中任何位置,所以选项A是对的。选项B,函数体是函数的主体,从左花括号开始,到与之匹配的右花括号结束。花括号也可以为复合语句等定界。选项C,一个C程序中必须有且只有一个由“main ”命名的主函数,其他函数由用户自行命名。选项D,C语句是组成C程序的基本单位,具有独立的程序功能。所有的C 语句都以分号结尾。(12)以下不能定义为用户标识符的是A) scanfB)
9、VoidC) _3com _D) int(12)D二级 C 第 3 套4【解析】本题的考查点是用户标识符的辨别。标识符是 C 语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由 132 个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与 C 语言的关键字相同,并区分大小写。由上可知选项 D 是不对的,因为 int 是 C 语言中的关键字。(14)下面程序的运行结果是y=5; x=14; y=(x=3*y,x+6),x-1);printf(“x=%d,y=%d“,x,y);A)
10、x=27,y=27B)x=12 ,y=13C)x=15 ,y=14D)x=y=27(14)C【解析】本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N 的值。表达式(x=3*y,x+6)中, x=15。表达式y=x-1=14。(14)以下叙述中正确的是A) 调用 printf 函数时,必须要有输出项B) 使用 putchar 函数时,必须在之前包含头文件 stdio.hC) 在 C 语言中,整数可以以十二进制、八进制或十六进制的形式输出D) 调用 getchar 函数读入字符时,可以从键盘上输入字符所对应
11、的 ASCII 码(14)B【解析】本题考查的是标准输出函数。在使用标准输入输出库函数(除了 printf 和 scanf)前,必须要用预编译命令“#include“将头文件“stdio.h“包括到用户源文件中。(15)有以下程序,其中%u 表示按无符号整数输出main() unsigned int x=0xFFFF; /* x 的初值为十六进制数 */printf(“%un “,x);程序运行后的输出结果是A) -1B) 65535C) 32767D) 0xFFFF(15)B【解析】本题考查的是整型无符号数的输出。%u 的作用是按无符号的十进制形式输出整型数,整型无符号数的取值范围在 065
12、535 之间,无符号数不能表示成小于 0 的负数,十六进制数 0xFFFF 转换为二进制位其值为 16 个 1,代表的整数就是 65535。(16)有定义语句“int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x 的值不为 3 的二级 C 第 3 套5是A) if (cy C) if(x0) x -else y+; D) if(y0 int i,j;for(i=0;i0) strcpy(t,pi); strcpy(pi,pj); strcpy(pj,t); main() char p510=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p,5);p
13、rintf(“%dn“,strlen(p0);程序运行后的输出结果是A) 2 B) 4 C) 6 D) 3(23)C【解析】本题考查的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符数组 p 并按行赋值,调用 f()函数,将字符串从小到大排序。strcmp()函数的功能是对两个字符串自左至右逐个字符相比,直到出现不同的字符或遇到“0“为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。如果遇到的某个字符大,该字符所在的字符串就是较大的字符串。由此可知最小的字符串为“aabdfg“,排序后放在 p0,所以
14、在输出语句中 strlen(p0)指向的字符串的长度为 6。(24)有以下程序#include main() char p20=a,b,c,d,q=“abc“,r=“abcde“;strcat(p,r); strcpy(p+strlen(q),q);printf(“%dn“,strlen(p); 程序运行后的输出结果是A) 9 B) 6 C) 11 D) 7(24)B【解析】本题考查的是用于字符串处理的函数。题目中首先通过 strcat(p,r)将 r 所指字符串的内容连接到 p 所指的字符串后面,p20=a,b,c,d,a,b,c,d,e。然后通过 p+strlen(q)在数组元素 p0地址
15、的基础上向后移动三位,然后将 q 所指字符串的内容复制到 p 所指的存储空间中,从字符“d”往后全部覆盖,p20=a,b,c,a,b,c。在输出语句中 strlen(p)是求字符串的长度,值为 6。二级 C 第 3 套9(25)有以下程序#include main() char p20=a,b,c,d,q=“abc“,r=“abcde“;strcpy(p+strlen(q),r); strcat(p,q);printf(“%d%dn“,sizeof(p),strlen(p);程序运行后的输出结果是A) 20 9B) 9 9C) 20 11D) 11 11(25)C【解析】本题考查的是用于字符串
16、处理的函数。题目中 p+strlen(q)的作用是在数组元素 p0地址的基础上向后移动三位,然后再将 r 所指字符串的内容复制到 p 所指的存储空间中,字符“d“ 被覆盖,p20=a,b,c,a,b,c,d,e。然后通过 strcat(p,q)将 q 所指字符串的内容连接到 p 所指的字符串后面,p20=a,b,c,a,b,c,d,e,a,b,c。在输出语句中 strlen(p)是求字符串的长度,值为 11。sizeof(p)用来求数组 p 占多少字节,值为 20。(26)以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。vo
17、id f (int b,int n,int flag) int i,j,t;for(i=0;ibj:bimain() int n, *p=NULL;*p=printf(“Input n:“); scanf(“%d“, printf(“output n:“); printf(“%dn“,p);该程序试图通过指针 p 为变量 n 读入数据并输出,但程序有多处错误,以下语句正确的是A) int n , *p=NULL ;B) *p= C) scanf (“%d “,(34)A【解析】本题考查的是指针的赋值。*p 代表存储单元的值,而pc=ch; printf(“%cn“,*(pc+5);程序运行后的
18、输出结果是A) zB) 0C) 元素 ch5 的地址D) 字符 y 的地址(35)A【解析】本题考查的是指向数组的指针。本题中定义了一个字符串数组和指针,并将指针pc 指向该数组的首地址,执行输出语句“printf(“%cn“,*(pc+5);” 。语句中的*(pc+5)指的就是 pc5的值,所以最后输出的结果为 z。(36)有以下程序struct Sint n; int a20;二级 C 第 3 套14void f(int *a, int n) int i;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(p-aip-aj) t=p-ai; p-ai=p-aj; p-aj
19、=t;main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9;f(for(i=0;iaip-aj时进行互换,其作用就是从小到大进行排二级 C 第 3 套15序,最后将排序后的元素输出:1,2,3,4,5,6,7,8,9,10,。(38)有以下程序段typedef struct nodeint data; struct node *next; *NODE;NODE p; 以下叙述中正确的是A) p 是指向 struct node 结构变量的指针的指针B) NODE p ;语句出错C) p 是指向 struct node 结构变量的指针D) p 是 str
20、uct node 结构变量(38)C【解析】本题考查的是对用户自定义类型的理解。本题中定义了一个指针类型的“用户类型名”NODE ,通过“用户类型名”可以定义该类型的结构体变量,所以选项 C 的叙述是正确的。(39)有以下程序main() unsigned char a=2,b=4,c=5,d;d=a|b; d printf(“%dn“,d);程序运行后的输出结果是A) 3 B) 4 C) 5 D) 6(39)B【解析】本题考查的是逻辑运算。本题中主要是进行位的逻辑运算。将 a 的值转换成二进制为:0000 0010,b 的值转换成二进制为:0000 0100,将 a、b 进行按位或运算(参加
21、计算的两个位只要有一个为 1,那么运算结果为 1) ,因此此时 d 的二进制为:0000 0110,c的值转换成二进制为:0000 0101,接下来将 d 和 c 进行按位与运算(参加计算的两个位都为 1,则结果为 1,否则为 0) ,结果为:0000 0100,转换成十进制数结果为 4。(40)有以下程序#include main() FILE *fp; int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat“,“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET); /*该语句使读文件的位置指
22、针从文件头向后移动 3 个 int 型数据*/fread(a,sizeof(int),3,fp); fclose(fp);for(i=0;imain() printf(“%dn“,strlen(“IBMn0121“); 二级 C 第 3 套17(6) 【6】9【解析】本题考查的是字符串长度。本题中的字符是:I、B 、M、n、0、1 、2、1 、 和最后一个字符串结束标记 0,由于 strlen()求的是字符串的实际长度,不包括0,所以字符串长度为 9。(7)以下程序的运行结果是【7】 。main() int a=2,b=7,c=5;switch(a0)case 1:switch(b0 值为真(
23、1) ,与case 1 匹配,然后执行 case 1 下面的 switch 语句,表达式 b,则其中 while 循环体将执行【8】次。#include main() char ch;while(ch=getchar()=0) printf(“#“);(8) 【8】0【解析】本题考查的是通过 getchar()函数输入字符。ch=getchar()的功能是从终端读入一个字符赋给变量 ch,由于 getchar()只能接收一个字符,所以输入的字符1被赋值给 ch,1!=0,循环体不执行,直接退出 while 循环。所以循环体执行次数为 0。(9)以下程序的功能是:求出数组 x 中各相邻两个元素的
24、和依次存放到 a 数组中,然后输出。请填空。main()二级 C 第 3 套18 int x10,a9,i;for(i=0;imain() char *s1,*s2,m;s1=s2=(char*)malloc(sizeof(char);*s1=15; *s2=20; m=*s1+*s2;printf(“%dn“,m);(12) 【13】40【解析】本题考查的是指针变量、malloc() 函数的应用。malloc()函数的作用是开辟了一个长度为 sizeof(char)的内存区,s1、s2 为指向字符型数据的指针变量,执行 s1=s2=(char*)malloc(sizeof(char);语句后
25、,s1、s2 指向同一个存储空间,此时*s1=20,m=*s1+*s2=20+20=40。(13)设有说明struct DATE int year;int month;int day;请写出一条定义语句,该语句定义 d 为上述结构体类型变量,并同时为其成员 year、month、day 依次赋初值 2006、10、1:【14】 。(13) 【14】struct DATE d=2006,10,1【解析】本题考查的是结构类型名定义变量。本题中定义了一个结构体类型名为 struct DATE 的结构体,当需要对一个变量定义为结构体类型时,需要使用结构类型名对其进行定义。故此处答案为:struct DATE d=2006,10,1 。(14)设有定义:FILE *fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt 的最后续写内容。fw=fopen(“readme.txt“,【15】);(14) 【15】“a“【解析】本题考查的是文件操作的简单应用。文件常用打开方式“a“的作用是向文本文件尾增加数据。