1、计算机二级(C)16 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.有以下程序: main( ) int x=3, y=2, z=1; printf(“%d/n“,x/y 程序运行后的输出结果是( )。 (分数:1.50)A.3B.2C.1D.02.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是( )。(分数:1.50)A.字符 AB.字符 aC.字符 eD.非法的常量3.在以下给出的表达式中,与 while(E)中的
2、(E)不等价的表达式是_。 (分数:1.50)A.(!E=0)B.(E0|E0)y=1; else if(x= =0)y=0; else y=-1;B.y=0; if(x0)y=1; else if(xC.y = 0; if (x = 0) if (x0) y = 1; else y = -1;D.if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1;20.与十六进制数 200 等值得十进制数为( )。(分数:1.50)A.256B.512C.1024D.204821.有以下程序 main( ) int x=102,y=012; printf(“
3、%2d,%2d/n”,x,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10D.02,1022.在深度为 7 的满二叉树中,叶子结点的个数为_。 (分数:1.50)A.32B.31C.64D.6323.有以下程序 main() int y=10; while(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.50)A.y=0B.y=-1C.y=1D.while24.有以下程序 void swap(char *x,char *y) char t; t=*x;*x=*y;*y=t; main() char *s1=
4、“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。 (分数:1.50)A.123,abcB.abc,123C.1bc,a23D.321,cba25.Internet 的通信协议是( )。(分数:1.50)A.TCP/IPB.BBSC.WWWD.FTP26.程序中头文件 typel.h 的内容是: #define N 5 #define M1 N*3 程序如下: #include“typel.h“ #define M2 N *2 main( ) int i; i=M1+M2; printf(“%d/n“,i);
5、 程序编译后运行的输出结果是( )。 (分数:1.50)A.10B.20C.25D.3027.以下能正确定义二维数组的是( )。(分数:1.50)A.int a 3;B.int a 3=22*3;C.int a 3=;D.int a23=1,2,3,4;28.有以下程序 main( ) int i; for(i=0;i3;i+) switch(i) case 1: printf(“%d“,i); case 2: printf(“%d“,i); default: printf(“%d“,i); 执行后输出的结果是( )。 (分数:1.50)A.011122B.012C.012020D.12029
6、.有以下结构体说明和变量定义,如图所示: (分数:1.50)A.P-next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next;30.设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句: if(aA.B.C.D.31.有以下函数: fun(char *a,char *b) while(*a!=/0)b+; return(*a-*b); 该函数的功能是_。(分数:1.50)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串连接到 a 所指字符串中C.将 b 所指字符串连接到 a 所指字符串后面D.比较 a 和
7、b 所指字符串的大小32.下列关于 C 语言用户标识符的叙述中正确的是( )。(分数:1.50)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头33.下列选项中不属于结构化程序设计方法的是_。 (分数:1.50)A.自顶向下B.逐步求精C.模块化D.可复用34.有以下程序: #include main() char c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); p
8、utchar(c2); 当运行时输入 a 后,以下叙述正确的是_。(分数:1.50)A.变量 c1 被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入第 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值35.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输出结果是( )。 (分数:1.50)A.产生语法错B.随机值C.AD.6536.有以下程序 #include main() char c1
9、,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123 45678 则输出结果是_。 (分数:1.50)A.1267B.1256C.1278D.124537.有以下程序 main( ) int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1f/n“,a,c,f,
10、x); 程序运行后的输出结果是( )。 (分数:1.50)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.538.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。 (分数:1.50)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/239.有以下程序: main() int m=12,n=34; printf(“%d%d“,m+,+n); printf(“%d%d/n“,n+,+m); 程序运行后的输出结果是_。(分数:1.50)A.12353514B.123535
11、13C.12343514D.1234351340.s12 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S;41.单个用户使用的数据视图的描述称为( )。(分数:-1.00)A.外模式B.概念模式C.内模式D.存储模式42.软件生命周期中花费时间最多的阶段是( )。(分数:-1.00)A.详细设计B.软件编码C.软件测试D.软件维护43.在软件工程中,白
12、箱测试法可用于测试程序的内部结构。此方法将程序看做是( )。(分数:-1.00)A.路径的集合B.循环的集合C.目标的集合D.地址的集合44.n 个顶点的强连通图的边数至少有( )。(分数:-1.00)A.n-1B.n(n-1)C.nD.n+145.已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是( )。(分数:-1.00)A.acbedB.decabC.deabcD.cedba46.下列叙述中,不属于结构化程序设计方法的主要原则的是( )。(分数:-1.00)A.自顶向下B.由底向上C.模块化D.限制使用 goto 语句47.分布式数据库系统不具有的特点是
13、( )。(分数:-1.00)A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余48.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。(分数:-1.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段49.尔排序属于( )。(分数:-1.00)A.交换排序B.归并排序C.选择排序D.插入排序50.下列工具中为需求分析常用工具的是( )。(分数:-1.00)A.PADB.PFDC.N-SD.DFD三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.以下程序中函数 huiwen 的功能是检查一个字符串是否是回文
14、,当字符串是回文时,函数返回字符串 yes!,否则函数返回字符串 no!,并在主函数中输出,所谓 回文即正向与反向的拼写都一样,例如:adgda。请填空。 #include char *huiwen(char *str) char *p1,*p2; int i,t=0; p1=str;p2= 1 ; for(i=0;ik=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_56.以下程序运行后的输出结果是 1。 main( ) int a,b,c; a=25; b=025; c=0x25; printf(“%d %d %d/n“,a,b,c); (分数:40.
15、00)填空项 1:_57.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:40.00)填空项 1:_58.以下程序运行后的输出结果是 1。 #include void fun(char *s,int p,int k) int i; for(i=p;i2 char s=“abcdefg“; fun(s,3,strlen(s); puts(s); (分数:40.00)填空项 1:_59.计算机软件分为系统软件和应用软件,操作系统属于 1。(分数:40.00)填空项 1:_60.在 Windows 环境下,为了将屏幕内容存入剪贴板,应按 1 键。(分数:40.00)填空项 1:_61.以下程序运
16、行后的输出结果是 1。 main2 char c1,c2; for(c1=0,c2=9;c1填空项 1:_62.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:40.00)填空项 1:_6
17、3.fun1 函数的功能是首先对 a 所指的 N 行 N 列的矩阵,找出各行中的最大的数,再求这 N 个最大值中 的最小的那个数作为函数值返回,请填空。 #includestdio.h #define N 100 int fun(int( * a)N) in(row,col,max,min; for(row=0;rowN;row+) for(max=a row0,col=1;colN;col+) if( 2)max=arowcol; if(row= =0)min=max; else if( 3)min=max; return min; (分数:40.00)填空项 1:_64.以下程序运行后的输
18、出结果是 1。 main2 int a=3,b=4,c=5,t=99; if(b填空项 1:_65.已有定义如下: struct node int data; struct node *next; *p; 以下语句调用 malloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。请填空。 p = (struct node *)malloc( 1); (分数:40.00)填空项 1:_66.单元测试又称模块测试,一般采用 1 测试。(分数:-1.00)填空项 1:_67.试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.0
19、0)填空项 1:_68.在算法正确的前提下,评价一个算法的两个标准是 1。(分数:-1.00)填空项 1:_69.用链表表示线性表的突出优点是 1。(分数:-1.00)填空项 1:_70.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、 1 和物理数据模型。(分数:-1.00)填空项 1:_计算机二级(C)16 答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.有以下程序: main( ) int x=3, y=2, z=1; printf(“%d/n“,x/y 程序运行后的输出结果是(
20、)。 (分数:1.50)A.3B.2C.1D.0 解析:2.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是( )。(分数:1.50)A.字符 A B.字符 aC.字符 eD.非法的常量解析:字符,/101,所对应的八进制数为 101,转换成十进制数为 65。3.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。 (分数:1.50)A.(!E=0)B.(E0|E0)y=1; else if(x= =0)y=0; else y=-1;B.y=0; if(x0)y=1; else if(xC.y =
21、0; if (x = 0) if (x0) y = 1; else y = -1; D.if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1;解析:20.与十六进制数 200 等值得十进制数为( )。(分数:1.50)A.256B.512 C.1024D.2048解析:21.有以下程序 main( ) int x=102,y=012; printf(“%2d,%2d/n”,x,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10 D.02,10解析:22.在深度为 7 的满二叉树中,叶子结点的个数为_
22、。 (分数:1.50)A.32B.31C.64 D.63解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每层上的所有结点都有两个子结点。这就是 说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第 K 层上有 2 的(k-1)次方个结点,且深度为 m 的满二叉树有 2(m 次方)-1 个结点。树的最大层次称为树的深度。本题中深度为 7,故叶子结点数为 2 的(6 次方)=64。23.有以下程序 main() int y=10; while(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.50)A.y=0B.y=-1 C.y=1D.whil
23、e解析:此题考核的是 while 条件语句及自减运算。当 while 的条件表达式成立时(非零),重复执行循环体, 但此题的 while 循环无循环体,则只要 while 的条件表达式成立,就不断执行 while 条件表达式,直到其条 件表达式不成立,程序就自动跳出 while 循环,直接执行 printf 语句。“y”表示先运用 y 的值,再进行 y 自减。本题一开始先判断 y 为 10 的值是否满足条件(同时 y 的值自减 1),显然 y=10 条件满足,则再次 执行 while 语句,判断 y 为 9 的值是否满足条件(同时 y 的值自减 1)直到判断 y 为 0 的值是否满足 条件(同
24、时 y 的值自减 1,即 y=-1),此时条件为假,退出循环,执行 printf 语句,输出 y=-1。24.有以下程序 void swap(char *x,char *y) char t; t=*x;*x=*y;*y=t; main() char *s1=“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。 (分数:1.50)A.123,abcB.abc,123C.1bc,a23 D.321,cba解析:此题考核的知识点是指针变量值的交换。C 语言中,字符串常量在内存中是以字符数组的形式进行 存放的,因此字符
25、指针 x 和 y 指向的是各字符串的首地址,也就是字符串第一个字符的地址,则*x 与*y 交 换的是字符串的第一个字符,即字符“a”与“1”的交换,而字符串中其它字符保持不变,所以答案选 C。25.Internet 的通信协议是( )。(分数:1.50)A.TCP/IP B.BBSC.WWWD.FTP解析:26.程序中头文件 typel.h 的内容是: #define N 5 #define M1 N*3 程序如下: #include“typel.h“ #define M2 N *2 main( ) int i; i=M1+M2; printf(“%d/n“,i); 程序编译后运行的输出结果是
26、( )。 (分数:1.50)A.10B.20C.25 D.30解析:27.以下能正确定义二维数组的是( )。(分数:1.50)A.int a 3;B.int a 3=22*3; C.int a 3=;D.int a23=1,2,3,4;解析:28.有以下程序 main( ) int i; for(i=0;i3;i+) switch(i) case 1: printf(“%d“,i); case 2: printf(“%d“,i); default: printf(“%d“,i); 执行后输出的结果是( )。 (分数:1.50)A.011122 B.012C.012020D.120解析:29.有
27、以下结构体说明和变量定义,如图所示: (分数:1.50)A.P-next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next; 解析:要想将 q 所指结点从链表中删除,同时保持链表的连续,必需使 p 结点的 next 指向 r,在四个选项 中,只有选项 D 不能做到。30.设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句: if(aA.B.C. D.解析:if 语句中包含一个或多个 if 语句称为 if 语句的嵌套。在 C 语言中,从最内层开始,else 总是与它 上面最近的(未曾配对的)if 配对。故本题中 y=1 的条
28、件是 cd,又因为此 if 语句是前一个 if 语句的内 层嵌套语句,所以在满足内层嵌套的 if 语句之前,必须先满足外层的 if 语句中的条件表达式“a31.有以下函数: fun(char *a,char *b) while(*a!=/0)b+; return(*a-*b); 该函数的功能是_。(分数:1.50)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串连接到 a 所指字符串中C.将 b 所指字符串连接到 a 所指字符串后面D.比较 a 和 b 所指字符串的大小 解析:字符串的比较规则是对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同 的字
29、符或遇到/0为止,相等,则返回 0,否则返回第一个不等字符串的 ASCII 码的差值。32.下列关于 C 语言用户标识符的叙述中正确的是( )。(分数:1.50)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线 C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头解析:33.下列选项中不属于结构化程序设计方法的是_。 (分数:1.50)A.自顶向下B.逐步求精C.模块化D.可复用 解析: 20 世纪 70 年代以来,提出了许多软件设计方法,主要有逐步求精:对复杂的问题,应
30、设计一些 子目标作过渡,逐步细化;自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考 虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;模 块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标, 再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。34.有以下程序: #include main() char c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入 a 后,以下叙
31、述正确的是_。(分数:1.50)A.变量 c1 被赋予字符 a,c2 被赋予回车符 B.程序将等待用户输入第 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值解析:函数 getchar( )的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也算是一个字符)。故本题中变量 c1 被赋予字符 a,c2 被赋予回车符。35.有以下程序 main( ) union unsigned int n; unsigned char c; ul; ul.c=A; printf(“%c/n“,ul.n); 执行后输
32、出结果是( )。 (分数:1.50)A.产生语法错B.随机值C.A D.65解析:36.有以下程序 #include main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入(从第 1 列开始) 123 45678 则输出结果是_。 (分数:1.50)A.1267B.1256C.1278D.1245 解析:此题考核的是字符输入输出函数的应用,getchar()函数只能接收一个
33、字符,即使输入多个字符后再按 回车还是只能将第一个字符读入。scanf()和 printf()是按格式输入输出的函数,当输入 123,scanf() 分别读入字符“1”、“2”、“3”、“”;接下来输入 45678,则 getchar()读入字符“4” 赋值给 c5,字符“5” 赋值给 c6,所以输出语句输出结果为 1245。37.有以下程序 main( ) int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1f/n“,a,c,f,x); 程序运行后的输出结果是( )。 (分数:
34、1.50)A.1 65 1 6.5B.1 65 1.5 6.5 C.1 65 1.0 6.5D.2 65 1.5 6.5解析:38.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。 (分数:1.50)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/2 解析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2 遍的从前往后扫描和 n/2 遍的从后 往前扫描,需要比较次数为 n(n-1)/2。快速排序法的最坏情况比较次数也是 n(n-1)/2。39.有以下程序: main() int m=12,n=34; pr
35、intf(“%d%d“,m+,+n); printf(“%d%d/n“,n+,+m); 程序运行后的输出结果是_。(分数:1.50)A.12353514 B.12353513C.12343514D.12343513解析: 执行 “ printf(“%d%d“,m+,+n); ”后, 输出 的是 m 和 n+1 的值 1235 ,接 着执 行 “printf(“%d%d/n“,n+,+m);”输出 n 和 m+1 的值 3514。40.s12 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S;则以下选项中正确的是 (分数:1.50)A.if(s
36、1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,s2)0)S; 解析:41.单个用户使用的数据视图的描述称为( )。(分数:-1.00)A.外模式 B.概念模式C.内模式D.存储模式解析:选项 A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图 的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。42.软件生命周期中花费时间最多的阶段是( )。(分数
37、:-1.00)A.详细设计B.软件编码C.软件测试D.软件维护 解析:软件生命周期分为软件定义、软件开发及软件运行维护 3 个所段。本题中,详细设计、软什编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性降低维护的代价。43.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是( )。(分数:-1.00)A.路径的集合 B.循环的集合C.目标的集合D.地址的集合解析:软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试
38、用例,对程序所有逻辑路径进行测试。44.n 个顶点的强连通图的边数至少有( )。(分数:-1.00)A.n-1B.n(n-1)C.n D.n+1解析:在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有 n 条边。45.已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是( )。(分数:-1.00)A.acbedB.decabC.deabcD.cedba 解析:依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba 构成,右子树为空;又由左子树的后序遍历序列可知其根结点为 e,由中序遍历序列可知其左
39、子树为 d,右子树由 ba 构成,如图 9-14 所示。求得该二叉树的前序遍历序列为选项 D)。46.下列叙述中,不属于结构化程序设计方法的主要原则的是( )。(分数:-1.00)A.自顶向下B.由底向上 C.模块化D.限制使用 goto 语句解析:结构化程序设计方法的主要原则可以概括为以下 4 个方面,即白顶向下、逐步求精、模块化及限制使用 goto 语句。 47.分布式数据库系统不具有的特点是( )。(分数:-1.00)A.数据分布性和逻辑整体性B.位置透明性和复制透明性C.分布性D.数据冗余 解析:分布式数据库系统具有数据分布性、逻辑整体性、位置透明性和复制透明性的特点,其数据也是分布的
40、;但分布式数据库系统中数据经常重复存储,数据也并非必须重复存储,主要视数据的分配模式而定。若分配模式是一对多,即一个片段分配到多个场地存放,则是冗余的数据库,否则是非冗余的数据库。48.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。(分数:-1.00)A.需求分析阶段B.逻辑设计阶段 C.概念设计阶段D.物理设计阶段解析:E-R 模型即实体联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。数据库逻辑设计阶段包括以下几个过程:从 E-R 图向关系模式转换,逻辑模式规范化及调整、实现规范化和 RDBMS,以及关系视图设计。49.尔排序
41、属于( )。(分数:-1.00)A.交换排序B.归并排序C.选择排序D.插入排序 解析:希尔排序的基本思想是把记录按下标的一定增量分组,对每组记录使用插入排序,随增量的逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到 1 时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。50.下列工具中为需求分析常用工具的是( )。(分数:-1.00)A.PADB.PFDC.N-SD.DFD 解析:需求分析中的常用工具有 PAD、PFD 及 N-S 等,而 DFD(数据流图)为结构化分析工具。三、填空题(每空 2 分,共 40 分)(总题数:15,分数:600.00)51.以下程序中函数
42、huiwen 的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串 yes!,否则函数返回字符串 no!,并在主函数中输出,所谓 回文即正向与反向的拼写都一样,例如:adgda。请填空。 #include char *huiwen(char *str) char *p1,*p2; int i,t=0; p1=str;p2= 1 ; for(i=0;ik=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_ (正确答案:13431)解析:程序执行过程如下:p=m,q=m+4,条件 p!=q 成立,执行 p-k=+i;,由于是“前加”,所以 m0.k
43、=1,执行 p+后 p=m+1;执行 q-k=i+;,由于是“后加”,所以 m4.k=1,然后使得 i 加上 1,即 i=2,q-后,q=m+3; p=m+1,q=m+3,条件 p!=q 成立,执行 p-k=+i; ,由于是“前加”,所以 i=3,m0.k=3,执行 p+后 p=m+2; 执行 q-k=i+; ,由于是“后加”,所以 m4.k=3,i=4,q-后,q=m+2;p=m+2,q=m+2,条件 p!=q 不成立,则执行 q-k=i;即 m2.k=4;故输出的值为 13431。56.以下程序运行后的输出结果是 1。 main( ) int a,b,c; a=25; b=025; c=0
44、x25; printf(“%d %d %d/n“,a,b,c); (分数:40.00)填空项 1:_ (正确答案:25 21 37)解析:57.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:40.00)填空项 1:_ (正确答案:空间)解析:程序在计算机上运行时所耗费的时间由下列因素所决定:程序运行时所需输入的数据总量,对源程 序进行编译所需时间,计算机执行每条指令所需时间,程序中的指令重复执行的次数。前一条取决于实现 算法的计算机软、硬件系统,习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法 的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。58
45、.以下程序运行后的输出结果是 1。 #include void fun(char *s,int p,int k) int i; for(i=p;i2 char s=“abcdefg“; fun(s,3,strlen(s); puts(s); (分数:40.00)填空项 1:_ (正确答案:abcfg)解析:函数 fun 的作用是将 s 所指的字符串中从第 p+3 到第 k+1 个字符向前移动两个位置。本题程序是将 数组 s 中从第 6 个元素开始的值分别向前移动两个位置。在执行 fun 函数时,p 的值是 3,k 的值是 7,所 以,具体执行“for(i=p;i59.计算机软件分为系统软件和应
46、用软件,操作系统属于 1。(分数:40.00)填空项 1:_ (正确答案:系统软件)解析:计算机软件可分为系统软件和应用软件,操作系统属于系统软件。60.在 Windows 环境下,为了将屏幕内容存入剪贴板,应按 1 键。(分数:40.00)填空项 1:_ (正确答案:print screen)解析:61.以下程序运行后的输出结果是 1。 main2 char c1,c2; for(c1=0,c2=9;c1填空项 1:_ (正确答案:918273645)解析:本题程序的作用是通过 for 循环将 0-9 这 10 个数字从前向后,同时也从后向前依次输出。62.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(