1、国家二级( C语言)笔试模拟试卷 240 及答案与解析 1 为了使模块尽可能独立,要求 ( A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 2 一个关系中属性个数为 1时,称此关系为 ( A)对应关系 ( B)单一关系 ( C)一元关系 ( D)二元关系 3 数据的存储结构是 指 _。 ( A)存储在外存中的数据 ( B)数据所占的存储空间量 ( C)数据在计算机中的顺序存储方式 ( D)数据的逻辑结
2、构在计算机中的表示 4 线性表的顺序存储结构和线性表的链式存储结构分别是 ( A)顺序存取的存储结构、顺序存取的存储结构 ( B)随机存取的存储结构、顺序存取的存储结构 ( C)随机存取的存储结构、随机存取的存储结构 ( D)任意存取的存储结构、任意存取的存储结构 5 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 6 线性表 L=(a1,a2,a3,ai,an), 下列说法正确的是 ( A)每个元素都有一个直接前件和直接后件 ( B)线性表中至少要有一个元素 ( C)
3、表中诸元素的排列顺序必须是由小到大或由大到小 ( D)除第一个元素和最后一个元素外 ,其余每个元素都有一个且只有一个直接前件和直接后件 7 线性表的顺序存储结构和线性表的链式存储结构分别是 ( A)顺序存取的存储结构、顺序存取的存储结构 ( B)随机存取的存储结构、顺序存取的存储结构 ( C)随机存取的存储结构、随机存取的存储结构 ( D)任意存取的存储结构、任意存取的存储结构 8 数据结构中,与所使用的计算机无关的是数据的 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)物理和存储结构 9 下列叙述中错误的是 ( )。 ( A)线性表是由 n个元素组成的一个有限序列 ( B)线
4、性表是一种线性结构 ( C)线性表的所有结点有且仅有一个前件和后件 ( D)线性表可以是空表 10 将 E-R图转换为关系模式时,实体和联系都可以表示为 _。 ( A)属性 ( B)键 ( C)关系 ( D)域 11 下列程序执行后的输出结果是 main() int a33, *p, i; p=int i; for(i=0;i SIZE;i+) si=A+i+32; sub(s,5,SIZE-1); for(i=0;i SIZE;i+)printf(“%c“,si); printf(“n“); sub(char *a,int t1,int t2) char ch; while(t1 t2) c
5、h=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1+;t2-; 48 对数据元素之间的逻辑关系的描述是 ( )。 49 若变量 a, b已定义为 int类型并分别赋值 21和 55,要求用 printf函数以a=21, b=55的形式输出,请写出完整的输出语句行:【 】。 50 若有程序: main() int i,j; scanq(“i=%d,j=%d“, printf(“i=%d,j=%dn“, i,j); 要求给 i赋 10,给 j赋 20,则应该从键盘输入【 】。 51 以下程序的输出结果是【 】。 main() int s, i; for(s=0,i
6、=1; 1 3; i+, s+=i); printf(“%dn“, s); 52 关系表达式 x y z,用 C语言的表达式为【 】。 53 以下程序的输出结果是【 】。 void fun() static int a=0; a+=2; printf(“%d“, a); main() int cc; for(cc=1; cc 4; cc+)fun(); printf(“n“); 54 表达式 10+a+1.5-0.5*B的结果是【 】。 55 以下函数的功能是求 x的 y次方,请填空。 double fun(double x,int y) int i; double z; for(i=1,z=
7、x;i y;i+)z=z*【 】; return z; 56 若运行时给变量 x输入 12,则以下程序的运行结果是 【 】 ; main() int x,y; scanf(“%d“, for(i=1; j N; i+) xi 0=_ =1; for(j=1; j i; j+) xi j=_ ; 国家二级( C语言)笔试模拟试卷 240 答案与解析 1 【正确答案】 B 【试题解析】 模块的独立程度可以由两个定性标准度量:耦合性和内聚性。耦合性是衡量不同模块彼此间互相依赖 (连接 )的紧密程度;内聚性是衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽可能地低,而内聚性尽
8、可能地高。 2 【正确答案】 C 【试题解析】 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N个属性的关系称为 N元关系。 3 【正确答案】 D 【试题解析】 数据的存储结构是指数据的逻辑结构在计算机 存储空间中的存放形式。 4 【正确答案】 B 【试题解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC (ai) LOC(a1)+(i-1)L 计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 5 【正确答案】 D 【试题解析】
9、 依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍 历序列可知其左子树为 d,右子树由 ba构成,如下图所示,求得该二叉树的前序遍历序列为选项 D)。 6 【正确答案】 D 【试题解析】 线性表可以为空表 ;第一个元素没有直接前件 ,最后一个元素没有直接后件 ;线性表的定义中 ,元素的排列并没有规定大小顺序。 7 【正确答案】 B 【试题解析】 顺序存储结构中 ,数据元素存放在一组地址连续的存储单元中 ,每个数据元素地址可通过公式 LOC(ai)=LOC(a1)+(i-1)L 计算得到 ,从而实现
10、了随机存取。对于链式存储结构 ,要对某结点进行存取 ,都得从链的头指 针指向的结点开始 ,这是一种顺序存取的存储结构。 8 【正确答案】 C 【试题解析】 数据结构概念一般包括 3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。 9 【正确答案】 C 【试题解析】 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以 C是错误的。 10 【正确答案】 C 【试题解析】 将 E-R图转换为关系
11、横式时,实体和联系都可以表示成关系, E-R图中属性也可以转换成关系的属性。实体集也可以转换成关系。 11 【正确答案】 B 【试题解析】 本题中, a12是二维数组中的第 6个元素,对应 for循环中 i的值为 5, p5=5+1。 12 【正确答案】 D 【试题解析】 +(或 -)的运算结果是使运算对象增 1(或减 1);运算对象可以是整型变量,实型交易也可以是字符型变量,但可能是常量或表达式。 +(或 -)的结合方向是 “自右向左 ”。 13 【正确答案】 A 【试题解析】 本题考查 if-else语句和 switch 语句。 scanf函数通过键盘读入 num的值。因为 num=321
12、99,所以 s=3, i=3, j=2, k=1。因为 s=3,所以执行 case 3,输出 k, j, i的值,然后通过 break 结束程序。 14 【正确答案】 A 【试题解析】 条件表达式的 般形式为:表达式 1?表达式 2:表达式 3;先求解表达式 1,若为真则求解表达式 2;若表达式 1的值为假,则求解表达式 3。本题中先判断 i j,不等,执行 j=7;然后执行 x=7。故本题为 A。 15 【正确答案】 D 【试题解析】 计算机软件是包括程序、数据及相关文档的完整集合,软件是一种逻辑实体,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。 16 【正确答案】 B 【试
13、题解析】 C语言的字符以其 ASCII 码的形式存在 ,所以要确定某个字符是大写字母 ,只要确定它的 ASCII码在 A和 Z之间就可以了 ,选项 A)和 C)符合要求。函数 isalpha用来确定一个字符是否为字母 ,大写字母的 ASCII 码值的范围为 65 到 90,所以如果一个字母的 ASCII码小于 91,那么 就能确定它是大写字母。 17 【正确答案】 D 【试题解析】 当 b为 10时,执行 b-=a,此时 b 为 9,接着 b-表达式值为 9, b的值为 8,大于 0, while不成立,退出循环,故选择 D选项。 18 【正确答案】 C 【试题解析】 在 C语言中,可以用一个
14、标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为: #define标识符常量。 19 【正确答案】 B 【试题解析】 本程序中有个 for循环,但注意到 for循环的条件是 “i+1”,也就是只要 i+1的值为 真 (非零值均为真 ),就执行循环。当 i=1的时候, i+1的值为真,判断 if条件不成立,执行 i+,输出 i的值为 5。 20 【正确答案】 B 21 【正确答案】 A 【试题解析】 NULL 表示空,常在定义指针变量时将其值赋为 NULL,表示不指向任何地址。 NULL 在 C语言的头文件中宏定义为 0。 22 【正确答案】 C 23 【正确答案
15、】 A 【试题解析】 本题考查了 continue和 break 语句在循环语句中的作用。 break 语句的作用是结束本层循环,而 continue语句的作用是结束 本次循环直接进入到下次循环。 24 【正确答案】 D 【试题解析】 本题涉及 C语言最基本的 4个知识点: C语言程序是由函数构成的, C程序的基本单位是函数; 每个 C程序有且只有一个主函数 main(),且程序必须从 main()函数开始执行,但是 main()函数可以放在程序中的任意位置: C语言的书写格式是自由的,一行可以写多条语句,一条语句也可以写在不同的行上; C语言本身不提供输入输出语句,可以通过函数来实现输入和输
16、出操作。 25 【正确答案】 B 【试题解析】 此程序考察了 for循环和 x+。对于大循环 ,有两个 x+,其中循环 3次 ,对于小循环 ,循环三次 ,但是运行了两次 x+,所以最后结果是 6+2=8。 26 【正确答案】 D 【试题解析】 由题意可知,小写字符 a和大写字符 A的 ASC 代码相差为 32,所以选项 C)能将大写字符 c的 ASC 代码转换为小写字符 c的 ASC 代码:选项A)和 C)左侧的表达式都是大写字符 c与大写字符 A的差与 a的 ASC 代码的和就是小写字符 c的 ASC 代码。而选项 D)中应该是加上 a,而不是减去 a。 27 【正确答案】 B 28 【正确
17、答 案】 B 29 【正确答案】 D 30 【正确答案】 A 【试题解析】 C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。 31 【正确答案】 B 【试题解析】 在 main 函数中, j的值是 f(1)和 f(2)的值相加的结果。 f(1)=1, f(2)=f(1)+1=2, j的值为 1+2=3。 32 【正确答案】 B 【试题解析】 预处理命令行可以出现在 C源程序的任何位置,故选项 A不正确。 #include stdio.h预处理命令行的意思是将 stdio h头文件插入源程序中该行命令所在的位置,表
18、示我们将在后续行中用到 stdio h 头文件中定义的函数或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项 C不正确。 C提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项 D不正确。在 C语言中,预处理命令行都以 ”#”开头,故应该选择 B。 33 【正确答案】 C 【试题解析】 a数组存放的是字符串,系统会自动在字符串的最后加上一个 0,所以 a数组的长度为 4,而 b数组 的长度为 3,故 a数组长度大于 b数组长度。 34 【正确答案】 A 【试题解析】 执行 t=x+5:使指针指向数组元素 59,运算符 *和 -的优先级相同,结合性为自右向左,先计
19、算 -t,对 t减 1,使 t指向数组元素 78,再计算 *t,取该地址单元的值 78。 35 【正确答案】 D 【试题解析】 第一个 while循环是字符串 a的长度,第二个 while是将字符串 b接在 a的后面, num在 a串长度上继续累计,为两个字符串长度之和。 36 【正确答案】 A 【试题解析】 实参指针变量 s指向数组 a的 第一个元素,在函数 fun 中首先将 s所指数组 a的第一个元素赋值为 0.0,然后将数组 a和 b中的元素值依次累加到数组 a的第一个元素中。 37 【正确答案】 A 【试题解析】 在 switch 语句中 break 语句的作用是退出分支语句,若没有
20、break语句则一直向下执行。本题中首先计算 switch后面括号里的表达式 a%3,即15%3为 0;执行 case0;后面的语句 m+; m自加 1,即 m为 1;遇到 break 语句;然后跳出 switch 语句,所以最后输出的 m的值为 1。 38 【正确答案】 D 【试题解析】 main()函数可以带参数,并且参数只能有两个,第一个参数 (arge)类型为整型用来记下命令行的参数个数,第二个参数 (argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执行时, arge的值为 4,在循环中依次求出 algvl、 argv2和 argv3指向的字符串 (“
21、abcd”、 “efg”和“10”)的长度,并把它们加到变量 len中,得到 len的值 9。所以最后输出的 len值为 9。 39 【正确答案】 B 【试题解析】 本题主要考查结构指针: p=&data,访问 结构体的成员,可以通过结构变量访问,即 data.a,也可以用等价的指针形式: (*p).a和 p- a来访问结构体变量中的成员。 40 【正确答案】 B 【试题解析】 选项 A)是将指针 q1和 q2所指向的变量值相加,然后赋给 k;选项 B)中, float型数据和指针型数据之间不能进行赋值运算;选项 C)中,是两个指针变量之间的赋值:选项 D)中,是两个指针型变量所指向的两个 f
22、loat型数据相乘。 41 【正确答案】 C 【试题解析】 本题考查 while循环。 while循环的控制表达式 k=1是个赋值 表达式而不是逻辑表达式,所以循环体一次也不执行。 42 【正确答案】 输出 【试题解析】 软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性 ,便于测试质量的度量 ,增强测试过程的可管理性。软件测试用例包括 :输入值集和输出值集。测试用例是软件测试的核心。 43 【正确答案】 45 【试题解析】 假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 遍的从前往后扫描和 遍
23、的从后往前扫描,需要比较次数为 。 44 【正确答案】 软件生命周期 【试题解析】 软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期都属于软件生命周期,一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等。 45 【正确答案】 封装 【试题解析】 软件工程的基本原则抱括抽象,信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 46 【正确答案】 DEBFCA 47 【正确答案】 abcdelkjihgf 【试题解析】 本题先给字符型数组 s的 12个元素赋值 a到 1共 12 个字母
24、,函数sub(char*a,int t1,int t2)的功能是将数组 a的从第 t1+1个元素到 t2+1个元素进行逆置,在主函数中调用 sub(s,5,SIZE-1)函数,是将数组 s的第 6个元素到第 12个元素进行逆置,其他元素位置不变。 48 【正确答案】 数据的逻辑结构 【试题解析】 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。 49 【正确答案】 printf(“a=%d, b=%d“, a, b); 【试题解析】 根据 printf 函数的格式可知输出语句应该为: printf(“a=%d,b=%d“, a, b)
25、; 50 【正确答案】 i=0,j=20 【试题解析】 该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入 i=,j=,后面分别给变量 0和 20,所以说空格处应该填入 i=0, j=20。 51 【正确答案】 5 【试题解析】 此程序中, for循环语句后 面直接跟了一个 “; ”,表明循环体为空。输出语句不在 for循环体内,所以在循环执行完毕后才输出 s的值。 s、 i的初值分别为。和 1,判断循环条件,表达式 “1 3”成立,执行 “i+, s+=i”后, i和 s的值分别为 2和 1,继续判断循环条件
26、,表达式 “2 3”成立,执行 “i+, s+=j”后, i和 s的值分别为 3,再次判断循环条件,表达式 “3 3”不成立,循环结束。 52 【正确答案】 (x y)&(y z) 【试题解析】 x y z的意思是 y大于 x并且 y小于 z。在 C语言中,表达 “并且 ”用逻辑与运算符 “&”。 53 【正确答案】 2 4 6 【试题解析】 本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量 ”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。 54 【正确答案】 75.5 55
27、【正确答案】 x 【试题解析】 函数的定义形式为; 函数类型 函数名 (形参表 ) 类型说明语句; 执行语句; 本题中函数的功能是:累积变量以求得变量 的 Y次方。 56 【正确答案】 0 【试题解析】 三目运算符的形式为 (表达式 1)?(表达式 2): (表达式 3)。当 (表达式1)值为真时,返回 (表达式 2)的值;为假时,返回 (表达式 3)的值。题中因为 x 12为假,所以结果为 x-12,即为 0。 57 【正确答案】 xii xi-1j-1+xi-1或 xi-1j+xi-1j-1 【试题解析】 本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第 0列赋值为 1,对角线上的元素赋值 为 1显然在第一个空中应该填入对角线上的元素即 xii在第 2重循环中给每行其他元素赋值,而在每行中除了第 0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入 xi-1j-1+xi-1j。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1