1、国家二级( C语言)笔试模拟试卷 17及答案与解析 1 算法的时间复杂度是指 _。 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 2 下列叙述中正确的是 _。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 3 下面关于完全二叉树的叙述中,错误的是 _。 ( A)除了最后一层外,每一层上的结点数均达到最大值 ( B)可能缺少若 干个左右叶子结点 ( C)完全二叉树一般不是满二叉树 ( D)具有结点的完全二叉树的深度为 log2n+1 4 结构化程
2、序设计主要强调的是 _。 ( A)程序的规模 ( B)程序的易读性 ( C)程序的执行效率 ( D)程序的可移植性 5 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 _。 ( A)概要设计 ( B)详细设计 ( C)可行性分析 ( D)需求分析 6 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标 识的图符不属于数据流图合法图符的是 _。 ( A)控制流 ( B)加工 ( C)数据存储 ( D)源和潭 7 软件需求分析一般应确定的是用户对软件的 _。 ( A)功能需求 ( B)非功能需求 ( C)性能需求 ( D)功能需求和非功能
3、需求 8 下述关于数据库系统的叙述中正确的是 _。 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型的一致 ( D)数据库系统比文件系统能管理更多的数据 9 关系表中的每一横 行称为一个 _。 ( A)元组 ( B)字段 ( C)属性 ( D)码 10 数据库设计包括两个方面的设计内容,它们是 _。 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 11 以下有 4组用户标识符,其中合法的一组是 _。 ( A) FOR -sub Case ( B) 4d D
4、o Size ( C) f2 G3 IF abc ( D) WoRD void define 12 下列叙述中正确的是 _。 ( A) C程序中注释部分可以出现在程序中任伺合适的地方 ( B)花括号 “和 “只能作为函数体的定界符 ( C)构成 C程序的基本单位是函数,所有函数名都可以由用户命名 ( D)分号是 C语句之间的分隔符,不是语句的 部分 13 以下合法的赋值语句是 _。 ( A) X=Y=100 ( B) D-; ( C) X+Y ( D) C=int( + ) 14 设 x为 int型变量,执行以下语句, X=10;X+=X-=X-X;X的值为 _。 ( A) 10 ( B) 2
5、0 ( C) 30 ( D) 40 15 以下程序的输出结果是 _。 main() int a=3; printf(“%n“,(a+=a-=a*a); ( A) ( B) 1 ( C) 2 ( D) -12 16 设 int型占 2个字节,则 unsigned int所能表示的数据范围是 _。 ( A) 0 65535 ( B) -32769 32767 ( C) 1 65536 ( D) 0 32767 17 设 a、 b、 c、 d、 m n均为血型变量 ,且 a=5、 b=6、 c=7、 d=8、 m=2、 n=2,则逻辑表达式 (m=a b) (n=c d)运算后, n的值为 _。 (
6、 A) 0 ( B) 1 ( C) 2 ( D) 3 18 下面的关键字中,不能够从循环体中跳到循环体外的是 _。 ( A) goto ( B) break ( C) return ( D) continue 19 以下各选项企图说明一种新的类型名,其中正确的是 _。 ( A) typedef v1 int; ( B) typedef v2=int; ( C) typedef int v3; ( D) typedef v4: int 20 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。 ( A)地址传递 ( B)单向值传递 ( C)由实参传给形,再由形参传回实参 ( D
7、)传递方式由用户指定 21 下列程序的输出结果是 _。 main () int i, k, ai0, p3; k=5; for (i=0;i 10;i+) ai=i; for (i=0;i 3;i+) pi=ai*(i+l); for (i=0;i3;i+) k+=pi*2; printf (“%dn“, k); ( A) 20 ( B) 21 ( C) 22 ( D) 23 22 下列程序的执行结果是 _。 point (char *pt); main ( ) char b4= a, c, s, f ,*pt=b; point (pt); printf (“%cn“, *pt); point
8、 (char*p) p+=3; ( A) s ( B) c ( C) f ( D) a 23 已知 chara=15, 则 a,-a和 !a的整型值分别为 _。 ( A) 240、 -15、 0 ( B) -16、 -15、 0 ( C) 0、 -15、 240 ( D) 0、 -15、 0 24 设 ch是 char型变量,其值为 A,且有表达式: ch=(ch =A printf(“%c n“,A+(x-a+l); ( A) G ( B) H ( C) I ( D) J 27 若输入 1,2,下列程序的运行结果为 _。 #define SWAP(a,b) t=b;b=a;a=t main
9、() int a,b, t; scanf (“%d, %d“, SWAP (a,b); printf (“a=%d,b=%dn“, a,b); ( A) a=1,b=2 ( B) a=2,b=1 ( C) a=1,b=1 ( D) a=2,b=2 28 运行以下程序后,如果从键盘上输入 china#回车 ,则输了结果为 _。 #include stdio. h main () int v1=0, v2=0; char ch ; while (ch=getchar() !=#) switch (ch) case a: case h: default:vi+; case 0:v2+; printf
10、 (“%d, %dn“,v1,v2); ( A) 2,0 ( B) 5,0 ( C) 5,5 ( D) 2,5 29 下列程序中的 for 循环执行的次当次数是 _。 #define N 2 #define M N+i #define NUM 2*M+l #main ( ) int i; for (i=1;i =NUM;i+) printf (“%dn“, i); ( A) 5 ( B) 6 ( C) 7 ( D) 8 30 下列程序的输出结果是 _。 main ( ) int i; for (i=l;i6;i+) if(i%2)printf(“#“);continue; printf (“*
11、“); printf(“n“); ( A) #*#*# ( B) # ( C) * ( D) *#*#* 31 若采用直接插入法对字母序列 (W, S, E, L, X, G, I)进行排序,使字母按升序排列,那么第一次排序的结果为【 】。 32 对于一棵具有 n个结点的树,则该树中所有结点的度之和为【 】。 33 单独测试一个模块时,有时需要一个【 】程序驱动被测试的模块。 34 仅 依据规格说明书描述的程序功能来设计测试实例的方法称为【 】。 35 在进行软件结构设计时,应遵循的最主要原理是【 】。 36 x、 y、 x均为 int型变量,描述 “x、 y和 z中至少有两个为正数 ”的表达
12、式是_。 37 与表达式 a+=b等价的另一书写形式是 _。 38 下列程序的输出结果是 _。 #include stdio.h main() int x=1,y=1,a=1,b=1; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+;break; printf(“a=%d,b=%dn“,a,B) ; 39 C语言用于结构化程序设计的 3种基本结构是 _、选择结构和循环结构。 40 下列循环的循环次数是 _。 int k=2; while(k=0) printf“%d“,k); k-;
13、 printf(“n“); 41 若有定义 float b15,*p=b;,且数组 b的首地址为 200H,则 p+13所指向的数组元素的地址为 _。 42 “printf(“%dn“,strlen(“t“023xABCn“);”语句的输出 结果是 _。 43 设有下列宏定义: #define A 2 #define B A+3 则执行赋值语句; t=B*2; t为 int型变量后的值是 _。 44 下列程序的功能是将字符串 s中所有的字符 c删除。请填空。 #include stdio.h main() char s80; int i,j; gets(s); for(i=j=0;si!=0;
14、i+) if(si!=c) sj=0; puts(s); 45 下列程序的运行结果是 _。 #include stdio.h 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(“%dn“,p); 国家二级( C语言)笔试模拟试卷 17答案与解析 1 【正确答案】 C 【试题解析】 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 2 【正确答案】 A 【试题解析】 一般将数据结构分为
15、两大类型:线性结构与非线形结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 3 【正确答案】 B 【试题解析】 满二叉扔指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树 指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点 (叶子结点 )的二叉数。 4 【正确答案】 B 【试题解析】 结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。 5 【正确答案】 D 【试题解析】 需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规
16、格说明书及初步的用户手册,提交评审。 6 【正确答案】 A 【试题解析】 数据流图从数据传递 和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工 (转换 )、数据流、存储文件(数据源 )、源和潭。 7 【正确答案】 D 【试题解析】 软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。 8 【正确答案】 A 【试题解析】 由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地
17、减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。 9 【正确答案】 A 【试题解析】 在关系数据库中,关系模型采用二维表来表示,简称 “表 ”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。 10 【正确答案】 A 【试题解析】 数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义 关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将 ER图转换为指定的 RDBMS中的关系模型。
18、11 【正确答案】 C 【试题解析】 C语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。 12 【正确答案】 A 【试题解析】 C程序中注释部分用 “/*”和 “*/”括起来,可以出现在程序中任何合适的地方;花括号 “”和 “”不仅可作为函数体的定界符,也可作为复合语句的定界符;构成 C程序的基本单位是函数;一个语句必须在最后出现 分号,分号是 C语句中不可缺少的部分。 13 【正确答案】 B 【试题解析】 本题中的答案 A与 D都缺少 “; ”,而答案 C中,表达式是不能独立成为语句的,答案 B使用了 C语言的自减运算符它就相当于
19、D=D-I,所以答案B为一赋值语句。 14 【正确答案】 B 【试题解析】 本题 x=10,表达式 “x+=x-=x-x; ”的求解步骤如下:先进行 x-=x-x的运算,相当于 x=x-(x-x)=x=10;再进行 x+=x的运算,即 x=x+x=20。 15 【正确答案】 D 【试题解析】 赋值运算符的结 合方向是自右至左,所以表达式 a+a-=a*a先运算最右边的 a*a得 9,再运算 a=a-9,即 a=3-9,所以此时 a的值由 3变成了 -6,最后运算 a=a+(-6),即 a-(-6)+(-6)=-12。 16 【正确答案】 A 【试题解析】 本题 int型占 2个字节,即 16位
20、, unsigned int 所能表示的数据范围是 0 (2(上标 )16-1),即 0 65535。 17 【正确答案】 A 【试题解析】 C语言中比较表达式的运算结果为 0或 1。 0代表不成立, 1表示成立。 18 【正确答案】 B 【试题解析】 在 C语言中,可以用 break语句和 continue语句跳出本层循环和结束本次循环。 goto语句可跳出多层循环,如果在函数的循环体内使用 return语句,就会直接结束循环返回函数值。 19 【正确答案】 C 【试题解析】 C语言中可以使用 typedef来重新定义已有的数据类型,相当于为数据类型取个别名。 20 【正确答案】 B 【试题
21、解析】 C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参 ,也就是实参的引用。 21 【正确答案】 B 22 【正确答案】 D 23 【正确答案】 A 24 【正确答案】 B 25 【正确答案】 C 26 【正确答案】 A 27 【正确答案】 B 28 【正确答案】 C 29 【正确答案】 B 30 【正确答案】 A 31 【正确答案】 S, W, E, L, X, G, I 32 【正确答案】 n-1 33 【正确答案】 驱动 34 【正确答案】 黑箱法 35 【正确答案】 模块独立原理 36 【正确答案】 (
22、x 0)& y 0)(x 0)&(z 0)y 0)&(z 0) 【试题解析】 题目要求 “x、 y和 z中至少有两个为正数 ”,即 x、 y和 x这 3个数中必须有两个是正数,且这 3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。 37 【正确答案】 a=a+b 【试题解析】 a+=b与 a=a+b等价,作用是把变量 a的值加 b后再赋给变量 a。 38 【正确答案】 a=2,b=3 【试题解析】 分析程序,程序从 x=1语句开始执行,之后执行第一个 switch语句, switch(x)=switch(1),所以执行 case1, case1语句中包含一个复合 switch语句:这
23、时执行第二个 switch语句,此时 y=1,所以 switch(y)=switch(1),因此执行case1,将 b加 1,得到 b=2,遇到 break语句,退出第二个 switch语句,则整个case 1的复合语句执行完毕,由于在这个 case 1的后面没有 break语句使其退出第一个 switch语句,所以接着执行下列的 case 2后面的语句,即将 a, b各加 1,得到 a=2, b=3。 39 【正确答案】 顺序结构 【 试题解析】 结构化程序有 3种摹本结构,即顺序结构、选择结构 (包括 if语句和 switch语句 )和循环结构 (包括 for语句、 while语句、 do
24、while 语句 )。 40 【正确答案】 0 【试题解析】 解答本题需要注意表达式 “k=0”,它是赋值表达式而不是关系表达式,不论 k为何值,表达式 k=0总会使 k为 0,所以不能进入循环。 41 【正确答案】 252H 【试题解析】 要解答本题,首先要明白在对指针进行加,减运算时,数字 “1”不是十进制数的 “1”,而是指 “1”个存储单元长度。 1个存储单元 长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是血型,则移动 1个存储单元的长度就是位移 2个字节;如果存储单元基类型是 float型,则移动 1个存储单元的长度就是位移 4个字节。所以 p+13所指向的数组元素
25、的地址为: 200H+(13*4) H=252H。 42 【正确答案】 6 【试题解析】 strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志 0。 tf是转义字符,代表横向跳若干格: “是转义字符,代表双引号; 023只代表一个 字符,而不管转义字符后面有几个字符; 仅 AB,是以两位十六进制数 AB表示的 ASCII码字符,只代表一个字符; n是转义字符,代表回车换行。 5个字符常量各代表一个字符,再加上字母 C,所以返回的长度是 6。 43 【正确答案】 8 【试题解析】 本题考查带参数的宏定义及相关运算运算过程为:t=B*2=A+3*2=2+3
26、*2=8。 44 【正确答案】 Sj+=si 【试题解析】 循环开始后如果数组 s中储存值与字符 c相同,则 i+直接跳过当前值;如果不相同,则将当前值赋予数组指定 位置,并通过 j+将下标加 1,指向下一元素要存储的位置。 45 【正确答案】 11 23 【试题解析】 在主函数中第一次调用 func子函数时, m=0, i=2, i=i+m+1=3,m=i+a+b=3+5+3=11。因为在于函数中将 m和 i定义成了 static类型,所以在于函数中对 m和 i进行的改变在下一次调用子函数时能进行保存,所以第二次调用于函数时, m=11, i=3,则 i=i+m+1=15, m=i+a+b=15+5+3=23。