1、国家二级( C语言)笔试模拟试卷 187及答案与解析 1 算法的有穷性是指 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 2 下列关于栈的描述中,正确的是 ( )。 ( A)在栈中只能插入元素 ( B)在栈中只能删除元素 ( C)只能在一端插入或删除元素 ( D)只能在一端插入元素,而在另一端删除元素 3 在一棵二叉树中,叶子结点共有 30个,度为 1的结点共有 40个,则该二叉树中的总结点数 共有 ( )个。 ( A) 89 ( B) 93 ( C) 99 ( D) 100 4 对下列二
2、叉树进行中序遍历的结果是 ( )。 ( A) ABCDEFGH ( B) ABDGEHCF ( C) GDBEHACF ( D) GDHEBFCA 5 设有表示学生选课的三张表,学生表 (学号,姓名,性别 ),课程表 (课程号,课程名 ),选课成绩表 (学号,课程号,成绩 ),则选课成绩表的关键字为 ( )。 ( A)课程号,成绩 ( B)学号,成绩 ( C)学号,课程号 ( D)学号,课程号,成绩 6 详细设计主要确定 每个模块具体执行过程,也称过程设计,下列不属于过程设计工具的是 ( )。 ( A) DFD图 ( B) PAD图 ( C) N-S图 ( D) PDL 7 下列关于软件测试的
3、目的和准则的叙述中,正确的是 ( )。 ( A)软件测试是证明软件没有错误 ( B)主要目的是发现程序中的错误 ( C)主要目的是确定程序中错误的位置 ( D)测试最好由程序员自己来检查自己的程序 8 在 E-R图中,用 ( )来表示实体之间联系。 ( A)矩形 ( B)菱形 ( C)椭圆形 ( D)正方形 9 在数据库系 统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是 ( )。 ( A)外模式 ( B)逻辑模式 ( C)概念模式 ( D)物理模式 10 设有如下关系表,由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A) T=RS ( B) T=R S
4、 ( C) T=RS ( D) T=R/S 11 下面的程序在编泽时产生错误,其出错原因是 ( )。 #include stdio.h main() int 1_case; float printF; printf(“请输入 2个数: “); scanf (“%d%f“,( C) scanf(“%1f“, ( D) scanf(“%1e“, A); 21 if语句的基本形式为: if(表达式 )语句,其中 “表达式 ”( )。 ( A)可以是任意合法的表达式 ( B)必须是逻辑表达式 ( C)必须是 逻辑表达式或关系表达式 ( D)必须是关系表达式 22 若 i、 j已定义成 int型,则以下
5、程序段中内循环体的总执行次数是 ( )。 for(i=6; i 0; i-) for(j=0; j 4 j+) ( A) 20 ( B) 24 ( C) 25 ( D) 30 23 以下选项中非法的字符常量是 ( )。 ( A) ( B) 0201 ( C) xAA ( D) 0 24 以下程序的输出结果是 ( )。 #include stdio.h int m=13; int fun(int x,int y) int m=2; return(x*y-m); main() int a=7, b=6; printf(“%d“,fun(a, B)/m); ( A) 1 ( B) 3 ( C) 7
6、( D) 10 25 下面程序运行后的输出结果是 ( )。 #include stdio.h main() int a5=1, 0, 4, 2, 0, b5=1, 2, 3, 4, 5, i, s=0; for(i=0; i 5;i+)s=s+bai; printf(“%dn”, s); ( A) 12 ( B) 15 ( C) 11 ( D) 8 26 已知下列函数定义: fun(int%, int c,int n, int datA)int k; for(k=0; km*n; k+) *b=data; b+; 则调用此函数的正确写法是 (假设变量 a的说明为 int a50)( )。 (
7、A) fun(*a, 4, 5, 1); ( B) fun(&a, 4, 5, 1); ( C) fun(int*)a, 4, 5, 1); ( D) fun(a, 4, 5, 1); 27 以下程序段的输出结果是 ( )。 #include stdio.h main() char p4=“ABC“, “DEF“, “GHI“; int i; for(i=0; i 3; i+) puts(pi); ( A) A B C ( B) A D G ( C) A B C D E F G H I ( D) A B C 28 下面程序的运行结果是 ( )。 #include stdio.h #includ
8、e string.h main() char*s1=“abDuj“; char*s2=“ABdUG“; int t; t=strcmp(s1, s2); printf(“%d“, t); ( A)正数 ( B)负数 ( C)零 ( D)不确定的值 29 已知: int c34;,则对数组元素引用正确的是 ( )。 ( A) c14 ( B) c1.50 ( C) c1+00 ( D)以上表达都错误 30 以下程序: #include stdio.h #include string.h main() char str=“abcdn123xab“; printf(“%d“, (str); 运行后的
9、输出结果是 ( )。 ( A) 10 ( B) 9 ( C) 7 ( D) 14 31 C语言中允许用外部说明来指定变量、函数和其 他标识符的特征,这里所说的外部指的是 ( )。 ( A)冠以关键字 extern ( B)位置在函数体外部 ( C)作用范围是全程的 ( D)位置在函数的外部 32 有以下程序: #include stdio.h int fun(int x, int y) if(x=y)return(x); else return(x+y)/2); main() int a=1, b=2, c=3; printf(“%dn“, fun(2*a,fun(b, C); 程序运行后的输
10、出结果是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 33 若有 char s33=“AAA“, “BBB“, “CCC“;说明语句,则与它等价的语句是 ( )。 ( A) char*s=“AAA“, “BBB“, “CCC“; ( B) char*s3=“AAA“, “BBB“, “CCC“; ( C) char s5=“AAA“, “BBB“, “CCC“; ( D) char s3=“AAA“, “BBB“,“CCC“; 34 设函数中有整型变量 a,为保证其在未赋初值的情况下初值为 0,应选择的存储类别是 ( )。 ( A) static ( B) registe
11、r ( C) auto ( D) auto或 register 35 若有如下说明,且 int类型占两个字节,则正确的叙述为 ( )。 struct st int a; int b2; a; ( A)结构体变量 a与结构体成员 a同名,定义是合法的 ( B)程序只在执行到该结构体时才为结构体 st分配存储单元 ( C)程序运行时为结构体 st分配 8字节存储单元 ( D)类型名 struct st可以通过 extern关键字提前引用 36 有以下程序: #include stdio.h int fun(int*k) int b=0; b=*k+b: return(B); main() int
12、a10=1, 2, 3, 4, 5, 6, 7, 8, i; for(i=2; i4; i+)printf(“%d“, fun(&ai); printf(“n“); 程序运行后的输出结果是( )。 ( A) 10 12 ( B) 8 10 ( C) 3 4 ( D) 10 28 37 若 x=2, y=3,则 x&y的结果是 ( )。 ( A) 0 ( B) 2 ( C) 3 ( D) 5 38 有以下程序: #include stdio.h main() int i=0, a=0; while(i 20) for(; ) if(i%5)=0)break; else i-; i+=13, a+
13、=i; pfintf(“%dn“, A); 程序的输出结果是 ( )。 ( A) 62 ( B) 63 ( C) 23 ( D) 36 39 在下列选 项中,没有构成死循环的程序段是 ( )。 ( A) int i=100; for(; ) i=i%10+1; if(i 10)break; ( B) while(1); ( C) int k=0; do+k; while(k =10); ( D) int s=12; while(s); -s; 40 在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。 41 在最坏情况下,堆排序需要比较的次数为 ( )。 42 软 件开发环境是全面
14、支持软件开发全过程的 ( )集合。 43 关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为 ( )。 44 已知 a=1, b=2,则表达式 (a&B)&b|b的结果为 ( )。 国家二级( C语言)笔试模拟试卷 187答案与解析 1 【正确答案】 A 2 【正确答案】 C 【试题解析】 栈实际也是线性表只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈项 ,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除
15、的元素。 3 【正确答案】 C 【试题解析】 根据二叉树性质 3:对任何一棵二叉树,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。所以该二叉树度为 2的结点有 29个,故总结点数=30个叶子结点 +29个度为 2的结点 +40个度为 1的结点 =99个结点。 4 【正确答案】 C 【试题解析】 遍历就是不重复地访问二叉树的所有结点。 二叉树遍历的方 法有3种:前序遍历、中序遍历和后序遍历。记住 3种遍历的顺序: 前序,访问根 按前序遍历左子树 按前序遍历右子树。 中序,按中序遍历左子树 访问根 按中序遍历右子树。 后序,按后序遍历左子树 按后序遍历右子树 访问根。所以对该二叉树的
16、中序遍历结果为 GDBEHACF。 5 【正确答案】 C 【试题解析】 关键字是指属性或属性的组合,其值能够惟一地标识一个元组,而在选课成绩表中学号和课程号的组台可以对元组进行惟一的标识。所以学号与课程号组合作为选课成绩表的主 6 【正确答案】 A 【试题解析】 DFD图 (数据流图 )是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,它是需求分析阶段的图形工具。盒式图(N-S图 )、问题分析图 (PAD图 )和 PDL(伪码 )是详细设计的常用工具。 7 【正确答案】 B 【试题解析】 软件侧试的目的: 软件测试是为了发现错误而执行程序的过程; 一个好的测试用例能
17、够发现至今尚未发现的错误; 一个成功的测试是发现了至今尚未发现的错误。软件侧试的准则: 所有测试都应追溯到需求; 严格执行测试计划,排除测试的随意性; 充分注意测试中的群集现象; 程序员应避免检查自己的程序; 穷举测试不可能; 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 8 【正确答案】 B 【试题解析】 在 E-R图中用矩形表示实体集,在矩形内写上该实体集的名字,用椭圆形表示属性,在椭圆形内写上该属性的名称,用菱形表示联系,菱形内写上联系名。 9 【正确答案】 A 【试题解析】 外模式也称子模式,它是数据库用户 (包括应用程序员和最终用户 )能够看见和使用的局部数据
18、的逻辑结构和特征的描述,它是由概念模式推导出来的,是数据库用户的数据视图,是 与某一应用有关的麴据的逻辑表示。一个概念模式可以有若干个外模式。 10 【正确答案】 B 【试题解析】 T就是关系 R中插入关系 S,合并为 T,即并运算 ( )。 11 【正确答案】 A 【试题解析】 C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。 12 【正确答案】 D 【试题解析】 是反斜线符, d是整型变量转义字符, s是字符串型转义字符, C语言中没有规定 088为转义字符。 13 【正确答案】 C 【试题解析】 本题考查的是逗号表达式 。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达
19、式 2,直到表达式 N的值。整个逗号表达式的值就是最后一个表达式 N的值。表达式 (x=3*y,x+6)中, x=15。表达式 y=x-1=14。 14 【正确答案】 B 【试题解析】 sizeof(char)是一个 C语言的关键字,它不是函数调用。 sizeof的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。 15 【正确答案】 B 16 【正确答案】 A 【试题解析】 在使用 scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符 (Tab键 )等间隔符隔开。 17 【正确答案】 A 【试题解析】 本题考查 if-
20、else语句。首先, scanf函数通过键盘读入 x的值。当x=3时,第一个 if语句先判断条件,取 x的值 3和 2比较,然后将 x的值加 1, if条件成立,执行下面的 printf语句,输出 x的值 4。当 x=2时,第一个 if语句先判断条件,先取 x的值 2和 2比较,然后将 x的值加 1(x的值变为 3), if条件不成立,执行下面的 else语句,先输出 x的值 3,再将 x的值减 1。 18 【正确答案】 D 19 【正确答案】 C 【试题解析】 当从键盘输入 Microsoft Visual studio时,由于 scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序
21、只将 Microsoft这 9个字符送到了字符数组 str中,并在其后自动加上结束符 “0”。 20 【正确答案】 C 21 【正确答案】 A 【试题解析】 本题考查 if表达式。 if(表达式 )中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号 (=)误写为赋值号 (=)时 不会报错的,但是其值恒为 1。 22 【正确答案】 B 【试题解析】 本题考查的是嵌套 for循环执行次数。对于外层 i的循环中任何一个 i,内层 j的循环中的 j都要从 0变化到 3, j=4时退出循环;然后外层 i循环的 i减少 1,内层循环的 i仍要从 0变化到 3, j=4时退
22、出循环 直到外层 i循环的 i变为 0,退出 i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层 for语句执行 6次,内层 for语句执行 4次,所以内循环 体执行 6*4=24次。 23 【正确答案】 B 24 【正确答案】 B 25 【正确答案】 A 26 【正确答案】 D 27 【正确答案】 C 28 【正确答案】 A 29 【正确答案】 C 30 【正确答案】 C 31 【正确答案】 D 32 【正确答案】 A 33 【正确答案】 D 34 【正确答案】 A 35 【正确答案】 A 36 【正确答案】 C 37 【正确答案】 B 【试题解析】 本题主要考查按位与 (&)运算的知识点。 “&”是对 两个运算量相应的位进行逻辑与, “&”的规则与逻辑与 “&”相同。 x=2的二进制为 00000010,y=3的二进制为 00000011, x&y=00000010,转化为十进制即为 2。 38 【正确答案】 D 39 【正确答案】 C 40 【正确答案】 类 41 【正确答案】 O(nlog2n) 42 【正确答案】 软件工具 43 【正确答案】 关系 44 【正确答案】 1