1、国家二级( C语言)笔试模拟试卷 202及答案与解析 1 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)无序线性表 ( B)线性链表 ( C)二叉链表 ( D)顺序存储的有序表 2 下列叙述中,不属于设计准则的是 ( )。 ( A)提高模块独立性 ( B)使模块的作用域在该模块的控制域中 ( C)设计成多入口、多出口模块 ( D)设计功能可预测的模块 3 下列队列的描述中,正确的是 ( )。 ( A)队列属于非线性表 ( B)队列在队尾删除数据 ( C)队列按 “先进后出 ”进行 数据操作 ( D)队列按 “先进先出 ”进行数据操作 4 对下列二叉树进行前序遍历的结果为 ( )。
2、( A) ABCDEFGH ( B) ABDGEHCF ( C) GDBEHACF ( D) GDHEBFCA 5 对于长度为 n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ( )。 ( A)冒泡排序为 n(n-1) 2 ( B)简单插入排序为 n ( C)希尔排序为 n ( D)快速排序为 n/2 6 为了使模块尽可能独立,要求 ( )。 ( A)内聚程度要尽量高,耦合程度要尽量强 ( B)内聚程度要尽量高,耦合程度要尽量弱 ( C)内聚程度要尽量低,耦合程度要尽量弱 ( D)内聚程度要尽量低,耦合程度要尽量强 7 下列选项中不属于软件生命周期开发阶段任务的是 ( )。
3、( A)软件测试 ( B)概要设计 ( C)软件维护 ( D)详细设计 8 数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 ( )。 ( A)数据与程序独立存放 ( B)不同的数据被存放在不同的文件中 ( C)不同的数据只能被对应的应用程序所使用 ( D)以上三种说法都不对 9 在学校中, “班级 ”与 “学生 ”两个实体集之间的联系属于 ( )关系。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 软件调试的目的是 ( )。 ( A)发现错误 ( B)改善软件的性能 ( C)改正错误 ( D)验证软件的正确性 11 下面说法正确的是 ( )。 ( A)一个 C
4、程序可以有多个主函数 ( B)一个 C语言的函数中只允许有一对花括号 ( C) C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内 ( D)在对 C程序进行编译时,可以发现注释行中的拼写错误 12 下列不合法的用户标识符是 ( )。 ( A) i2_KEY ( B) Double ( C) 4d ( D) 8 13 以下 4个选项,不能看作一条语句的是 ( )。 ( A) ; ( B) int x=0,y=1, z=0; ( C) if(!a); ( D) )if(b=0)m=1; n=2; 14 设 a和 b均为 int型变量,且 a: 6、 b=11、 c=3,则能使值为
5、3的表达式是( )。 ( A) b (c 4) ( B) b (c-a 5) ( C) b a-a 5 ( D) (b a)-(a 4) 15 以下程序的输出结果是 ( )。 main() int a=4,b=3,c=2,d=1; printf(“ d”, ab?a: dc?d: b); ( A) 1 ( B) 3 ( C) 2 ( D) 4 16 阅读以下程序 #include main() Int Case; floatprintF; printf(“请输入 2个数: ”); scanf(“ d f”, j-) if(_=2) b=b+arriJ; printf(“ d, d n”, a,
6、 b); 51 函数 fun的功能是:根据以下公式求 p的值,结果由函数值返回。 m与 n为两个正数且要求 mn。 例如: m=12, n=8时,运行结果应该是 495 000 000。请在题目的空白处填写适当的程序语句,将该程序补充完整。 #include #include float fun(int m, int n) int i; float p=1 0: for(i=1; i #include“myfun C” main() fun(); printf(“ n”); myfun C文件如下: void fun() char s80, c; int n=0; while(c=getcha
7、r()!= n) sn+=c; n-; while(n=0)printf(“ c”, sn-); 当编译连接通过后,运行程序 T18时,输入 Hello!则输出结果是 _。 国家二级( C语言)笔试模拟试卷 202答案与解析 1 【正确答案】 D 【试题解析】 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。 2 【正确答案】 C 【试题解析】 大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中:应减少模块的接口和界面的复杂性;设计成单入口、单出口的
8、模块;设计功能可预测的模块。 3 【正确答案】 D 【试题解析】 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做 队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。 4 【正确答案】 B 【试题解析】 遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有 3种:前序遍历、中序遍历和后序遍历。记住 3种遍历的顺序: 前序,访问根一按前序遍历左子树一按前序遍历右子树。 中序,按中序遍历左子树一访问根一按中序遍历右子树。 后序,按后序遍历左子树一按后序遍历右子树一访问根。 所以对该二叉树的中序遍历结果为 A
9、BDGEHCF。 5 【正确答案】 A 【试题解析】 在最坏情况下,冒泡排序所需要的比较次数为 n(n-1) 2;简单插入排序所需要的比较次数为 n(n-1) 2:希尔排序所需要的比较次数 0n1.5);堆排序所需要的比较次数为 O(nlog2n)。 6 【正确答案】 B 【试题解析】 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模 块之间的耦合性和提高模块内的内聚性,有利于提高模块的
10、独立性。 7 【正确答案】 C 【试题解析】 软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。 8 【正确答案】 D 【试题解析】 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项 A,选项 B和选项 C都不正确。 9 【正确答案】 B 【试题解析】 一个班可以有多名学生,而一名学生只能属于一个班级,所以 “班级 ”与 “学生 ”两个实体 集之间的联系属于一对多关系。 10 【正确答案】 C 【试题解析】 在对程序进行了成功的测试之后将进入稃序调试,程序调试的任务是诊断和改正程序中的错误。
11、11 【正确答案】 C 【试题解析】 在 C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。 12 【正确答案】 D 【试题解析】 if语句是用来判定所给的条件是否满足,根据判定的结果 (真或假 )决定执行给出的两种操作之一。 在 if和 else后面可以只含一个内嵌的操 作语句,也可以有多个操作语句,此时用花括号 “”将几个语句括起来成为一个复合语句。选项 D中没有将两个操作语句括起来,不能看作一条语句。 13 【正确答案】 D 【试题解析】 选项 D括号内的运算分别是 b a=11 6=5和 a c=6 4=2,最后得到 5-2=3
12、。 14 【正确答案】 D 【试题解析】 本题首先判断 ab,当 ab时结果等于 a,否则等于 “dc?d: b”,因为 ab,所以直接输出 a的值,注:这里 “a: dc?d: b”是用来干扰考生的。 15 【正确答案】 B 【试 题解析】 C语言是一种大小写敏感的语言,因此 Int应为 int,而 casep printF则可以使用。 16 【正确答案】 C 【试题解析】 在 C语言中, gwitcb()后的一对圆括号中可以是整型表达式或字符表达式。 case语句后面的常量表达式的类型必须与 swItch后圆括号中的表达式类型相同,各 case语句标号的值应该互不相同。选项 A中 case
13、后面的常量表达式为实型,所以不正确;选项 D中 case后面出现了变量表达式,所以选项 D错误。 17 【正确答案】 D 【试题解析】 本题考查不同进制 间的转换。 printf输出函数中输出变量的格式,由输出格式符决定。题中 “ 0”格式符表示以八进制的形式输出; “ x”格式符表示以十六进制的形式输出。 “33”的八进制和十六进制分别是 41和 21。 18 【正确答案】 C 【试题解析】 本程序是通过 gctchar()函数读入字符,并通过 putchar()函数将字符逐个输出,当用户输入 “?”时停止输出。 19 【正确答案】 A 【试题解析】 本题中, (int)(x+1000+0
14、5)的结果为 1237, (float)1000是将 1000强制转 换成 float类型;整个表达式 (int)(x*1000+0 5) (float)1000的结果为1 237000,再以实数 (6位小数 )形式输出。 20 【正确答案】 A 【试题解析】 本题考查 print的输出格式和条件表达式 “?: ”的使用。 printf函数输出时, “& d n”和 “! d n”中的 “&”和 “!”都是直接输出。 条件表达式的基本格式为: a?b: c。其运算规则为:当 a为非 0时,整个表达式的值取 b的值,当 a为 0时,整个表达式取 c的值。 printf函数中如果在格式说明 符之前
15、插入任何字符都将原样输出。本题中 ab为真,所以返回 “&a= d”。 21 【正确答案】 C 【试题解析】 “ b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致 “ b”格式符前面的字母不能输出; “v”格式符表示输出单引号字符; “ ”格式符表示输出反斜线字符。 22 【正确答案】 A 【试题解析】 分析程序可知,程序循环 5次,然后利用 if语句决定每次循环时输出的字符。当 i为奇数时, i 2=1, if(i 2)为真,输出 “*”;当 i为偶数时, i2=0, if(i 2)为假,执行 else语句,输出 “#”,所以当 i取 1、 3、 5值时输出 “*”,当 i取
16、 2、 4值时输出 “#”。 23 【正确答案】 A 【试题解析】 return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条 return语句返回函数的值,也可以不包含 return语句。 24 【正确答案】 C 【试题解析】 本题考查 dowhile 循环。在 dowhile 构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到 n=3,while循环表达式仍然成 立,接着执行直到 n=4,表达式不成立,跳出循环,结束程序。 25 【正确答案】 B 【试题解析】 本题中 del(cbar*s)函数实现的功能是:逐个读入 s数组中的字
17、符,如果遇到数字,则将其重新存在 s中,遇到非数字字符则跳过。所以最后输出的应该是字符串 s中的所有数字。 26 【正确答案】 B 【试题解析】 该函数中 fun是一个函数指针。指向一个返回 int的函数。 27 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。分析题目可知 fun函数的形参是指向实参的指针,但 main()函数中调用 fun()函数时,实参是指针变量 x、 y(分别为指向 8和 b的指针 ), a、 b的值在函数调用前后未发生变化,因而 a=1, b=2,即输出 12。 28 【正确答案】 B 【试题解析】 此题考查的是二维数组的初始化。题干中数组 a的第二个下
18、标为3,由此可知数组 a是一个 2行 3列的数组,初始化时未赋初值的元素的值自动为0,所以与选项 B是等价的,最后一个元素的值为 0。 29 【正确答案】 C 【试题解析】 strlen(s)返回 s字符串中字符的个数,若 s是一个数组,则返回数组元素的个数。 30 【正确答案】 A 【试题解析】 此题考查的是函数参数的传递。 main函数中首先调用 fun函数,fun函数的功能是使字符 c的 ASCII码值加 1并输出,使 d加 1并输出对应的字符; fun(&b, a)输出 “g, G”,但是由于 fun函数的第一个参数进行的是地址传递,而第二个参数进行的是值传递,所以 main函数中的
19、printf函数输出 “F, g”。 31 【正确答案】 D 【试题解析】 本题考查如何引用数组元素的地址。选项 A中, p+5引用的是 a5的地址,而数组 a只有 5个元素,即 a0、 a1、 a2、 a3、 a4,所以引用错误;选项 B中, *a+1指的是将数组 a的第一个元素加 1;选项 C中,这种引用方式错误;选项 D中, &a0引用的是数组的首地址。 32 【正确答案】 C 【试题解析】 本题考查字符串比较函数 strcmp(),调用形式: strcmp(str+1,str+2),其中 str+1、 str+2分别是字符串存储区的首地址,函数功能:比较字符串str1和 str2,当
20、str1str2,返回值为正数。注 意:不能使用关系运算符比较两个字符串的大小。 33 【正确答案】 B 【试题解析】 本题考查字符比较函数和字符复制函数: strcmp(s1, s2);函数功能:比较字符串 str1和 str2比较的是字符的 ASCII码的值,当 syt1syt2,返回值为正数。 34 【正确答案】 C 【试题解析】 本题考查的是 for循环以及 while循环。 fun函数中定义了静态变量 i=0, fun(a)使得 a0=a0+a1=4, a1=a1+a2=8,此时 i的值变为 1, +ij是否成立, i的变化过程为: i=2, i=4, i=6, i=8, i=10,
21、i=12,此时 ij成立,所以判断 ij共执行的次数为 6次。 36 【正确答案】 B 【试题解析】 本题考查的是结构和数组元素所占的字节数。题目中定义的结构 st因为包含 x、 y、 z这 3个 元素,所以 slze(struct st)=2+2+2=6;而联合体所占的字节数,由于最后存入的元素会把前面存入的元素覆盖掉,所以联合体所占的字节数就是占据最多存储单元的元素所占的字节数, sizeof(un)=sizeof(long)=4。 37 【正确答案】 B 【试题解析】 由于联合体是同一存储区域由不同类型的变量共享,所以不可以直接对联合体变量名进行赋值,且联合体中的空间在某一时刻只能保持某
22、一成员的数据;另外合体中可以出现结构类型的成员。 38 【正确答案】 A 【试题解析】 本题主 要考查按位异或和右移运算。 b=4的二进制为 00000100,b2后为 00000001, a=2的二进制为 00000010,两者异或为 00000011。 39 【正确答案】 A 【试题解析】 分析程序段,首先以只写方式打开文件,利用 fprintf函数将 i和 j的值写入到文件 d1 dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数 fscanf将文件中的数据赋值给 k和 n,最后输出 k和 n的值,分别是20和 30。 40 【正确答案】 存储结构 【试题解析】 数据结构是
23、指相互之间存在一 种或多种特定关系的数据 元素的集合,即数据的组织形式。它分为数据的逻辑结构和数据的存储结构。 41 【正确答案】 消息 【试题解析】 对象之间进行通信的构造叫做消息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 42 【正确答案】 内聚性 【试题解析】 模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。 43 【正确答案】 一对多 【试题解析】 在现实世界中事物间的关联称为联系。在概念世界中联系反映了实体集间的一定关系
24、。两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3种,分别是一对一,一对多和多对多,依据题意,一名学生只能住一间宿舍,一间宿舍可住多名学生,所以实体 “宿舍 ”与实体 “学生 ”的联系属于一对多的联系。 44 【正确答案】 数据操作 【试题解析】 数据模型就是现实世界的反映,数据模型所描述的内容有 3个部分,它们是数据结构、数据操作与数据约束。 45 【正确答案】 9 【试题解析 】 此题考查的是算术运算符。依照运算级的优先性,首先执行 “+”和 “-”, “+a”执行之后 a的值变为 6, +a*-b=(+a)*(-b)=6*19=114;此后再依次执行和, +a*-b
25、5 13=114 5 13=22 13=9。 46 【正确答案】 7 【试题解析】 本题考查的是 scanf函数。题目中, “ 2d”是指读入整型数据,允许的数据宽度是 2位; “*2d”指空余 2位不读入;所以最终读入的 a的值为 12, b的值为 5,即得到 a-b=7,最终输出 a-b的值 7。 47 【正确答 案】 abcdabcdabcdabcdbcdabcdabcdcdabcdd 【试题解析】 本题考查的是二维数组。本题定义了一个 4行 4列的二维数组 x,通过 for循环以及 strcpy函数将字符数组 ch的值 abcd分别复制到了 x数组的每一行,使得二维数组每一行的值均为
26、abed,再通过第二个 for循环输出每一行上所要求输出的字符串,当 i=0时,输出以 x00的地址为首地址的字符串“abcd”;当 x=1时,输出以 x11的地址为首地址的字符串 “bcd”;当 x=2时,输出以 x22的地址 为首地址的字符串 “cd”;当 x=3,输出以 x33地址为首地址的字符串 “d”。 48 【正确答案】 10 【试题解析】 由于此程序中, fun函数的实参和形参进行的是值传递,所以形参值的改变不会影响到实参值,因此变量 a的值还是最初赋的初值 10。 49 【正确答案】 12, 1 【试题解析】 此程序中函数 fun的实参和形参进行的是地址值的传递,因此被调用函数
27、中形参值的改变会改变实参值。所以 c=3*4=12, d=4 3=1。 50 【正确答案】 j=2 i+j=2 【 试题解析】 本题要求是分别输出数组 arr的两条对角线上的元素之和。题目中已经给出的语句 if(i=j)a=a+arrij; a的值是正对角线元素 a00、 a11、a22的和; b的值是另一对角线元素 a02、 a11、 a20之和,所以第一空白处填入 j=2,使得内层循环 j从 2递减到 0;第二空白处填入 i+j=2,因为此对角线元素的下标满足下标之和为 2,这样即可得到 b的值。 51 【正确答案】 p=p*i p=p i 【试题解析】 本题中题目要求是 m和 n的值分别
28、为 12和 8,得到的结果是495 000 000。分析可知 (12!) (8!) (4)!即可得到结果,所以第一个 for循环处得到的是 12!,所以空白处填入口 =p*i;第二空白处需得到 (12!) (8!),故填入 p=p i。 52 【正确答案】 !olleH 【试题解析】 本题考查的是 “文件包含 ”处理功能。 “文件包含 ”处理是指一个源文件可以将另一个源文件的全部内容包含进来,供源文件使用。此题中 “myfun c”就是被包含在 T18 c下进行编译。 myfun c文件是实现字符串反序的功能,用getchar()函数输入字符并赋给数组 s,每输入一个字符,数组下标 n自行加 1,直到遇到回车键时结束输入。 while(n=0)下的条件语句就是来实现字符串反序功能的。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1