1、国家二级( C语言)笔试模拟试卷 151及答案与解析 1 算法的空间复杂度是指 ( ) ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 数据的存储结构是指 ( ) ( A)数据所占的存储空间 ( B)数据的逻辑结构在计算机中的存放形式 ( C)数据在计算机中的顺序存储方式 ( D)存储在计算机外存中的数据 3 有下列二叉树,对此二叉树前序遍历的结果为 ( ) ( A) ACFHIBEDG ( B) ABCDEFGHI ( C) ABDEGCFHI ( D) ABCDEFHGI 4 下列描述中正确的是 ( ) (
2、A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据和相关文档的集合 5 两个或两个以上模块之间联系的紧密程度称为 ( ) ( A)耦合性 ( B)内聚性 ( C)复杂性 ( D)数据传输特性 6 数据库技术的根本目标是要解决数据的 ( ) ( A)存储问题 ( B)共享问题 ( C)安全问题 ( D)保护问题 7 下列 不属于软件工程的 3个要素的是 ( ) ( A)工具 ( B)过程 ( C)方法 ( D)环境 8 关系数据库管理系统能实现的专门关系运算包括 ( ) ( A)排序、索引、统计 ( B)选择、投影、连接 (
3、C)关联、更新、排序 ( D)显示、打印、制表 9 将 E-R图转换到关系模式时,实体与实体间的联系可以表示成 ( ) ( A)属性 ( B)关系 ( C)键 ( D)域 10 设计数据库的存储结构属于 ( ) ( A)需求分析 ( B)概念设计 ( C)逻辑设计 ( D)物理设 计 11 C语言规定,在一个源程序中, main函数的位置 ( A)必须在最开始 ( B)必须在系统调用的库函数的后面 ( C)可以任意 ( D)必须在最后 12 以下叙述中错误的是 ( A)计算机不能直接执行用 C语言编写的源程序 ( B) C程序经 C编译程序编译后,生成后缀为 .obj的文件是一个二进制文件 (
4、 C)后缀为 .obj的文件,经连接程序生成后缀为 .exe的文件是一个二进制文件 ( D)后缀为 .obj和 .exe的二进制文件都可以直接运行 13 下列选项可以正确表示字符型常量的是 ( A) r ( B) a ( C) 897 ( D) 296 14 以下叙述中正确的是 ( A)构成 C程序的基本单位是函数 ( B)可以在一个函数中定义另一个函数 ( C) main( )函数必须放在其他函数之前 ( D) C函数定义的格式是 K语句为变量 a1和 a2赋数值 10和 20,为变量 c1和 c2赋字符 X和 Y。以下所示的输入形式中正确的是 (注: 代表空格字符 ) ( A) 10X20
5、Y ( B) 10X20Y ( C) 10X 20Y ( D) 10X 20Y 16 若有说明: int *p,m=5,n;,以下正确的程序段是 ( A) p=scanf(“%d“, ( B) p=scanf(“%d“,*p) ( C) scanf(“%d:,*p=n; ( D) p=*p=m; 17 在执行下述程序时,若从键盘输入 6和 8,则结果为 main( ) int a,b,s; scanf(“%d%d“, S=a if(a b) s=b; S*=s; printf(“%d“,s); ( A) 36 ( B) 64 ( C) 48 ( D)以上都不对 18 若执行下面的程序时,从键盘
6、输入 5和 2,则输出结果是 main( ) int a,b,k; scanf(“%d,%d“, k=a; if(a b)k=a%b; else k=b%a; printf(“%dn“,k); ( A) 5 ( B) 3 ( C) 2 ( D) 0 19 在 C语言中,函数返回值的类型最终取决于 ( A)函数定义时在函数首部所说明的函数类型 ( B) return语句中表达式值的类型 ( C)调用函数时主调函数所传递的实参类型 ( D)函数定义时形参的类型 20 已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语
7、句是 ( A) c=(c-A)%26+a ( B) c=c+32 ( C) c=c-A+a ( D) c=(A+c)%26-a 21 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( A) x%2=1 ( B) x/2 ( C) x%2!=0 ( D) x%2=0 22 有以下程序 main( ) int k=5,n=0; do switch(k) case 1: case 3:n+=1;k-;break; default:n=0;k-; case 2: case 4:n+=2;k-;break; printf(“%d“,n); while(k 0且当0i3, 0j4,则可以有以下
8、几种方式来引用数组中的第 i行,第 j列的元素:aij,*(ai+j),*(*(a+i)j,*(&a00+4*i+j)。表达式 a00+2*i+j-2相当于是地址 a00加上偏移量。 31 【正确答案】 C 【试题解析】 本题的选项 A)和 B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项 D)中, s是血型指针变量, p是 char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量 p的值赋给整型指针变量 s。 32 【正 确答案】 C 【
9、试题解析】 本段程序的作用是输出字符串 “lanuage”中字母 u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放, 0,。 33 【正确答案】 D 【试题解析】 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个 int型数据长度大小的内存,然后指针 p指向了这段内存,函数f( )中对 p所指向的数据进行了赋值, p11为二维数组第二行第 二列的元素,对应于实参 a的元素 5,所以输出结果为 5。 34 【正确答案】 B 【试题解析】 调用函数 f(
10、)时,将数组 a的地址传递给了指针 q,此时 q指向的就是数组 a的第一个元素 a0。在 5次循环过程中, q始终指向 a0,因此 a0的值增加了 5。最后的输出结果为 “6,2,3,4,5”。 35 【正确答案】 A 【试题解析】 C语言的字符常量是用单引号 (即撇号 )括起来的一个字符。除此之外,在 C语言中还允许用一个 “”开头的字符序列来表示字符常量。其中,形式“ddd“表示 1到 3位 8进制 数所代表的字符;形式 “xhh“表示 1到 2位 16进制数所代表的字符。在本题中, x13表示回车符,是一个字符常量; 081用 8进制数所代表的字符,但形式不正确,因为 8进制数所代表的字
11、符中不会出现数字 8;65不是一个字符,而是一个十进制数字; “n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。 36 【正确答案】 D 【试题解析】 本题考查数组指针的应用。选项 D)第一层括号中为数组 a中第 i项元素的值,外面再加指针运算符没有意义。 37 【正确答案】 B 【试题解 析】 strcpy( )函数的功能是将字符串 q复制到从 p13位置开始的存储单元,同时复制字符串结束标志 0到 p6中。函数 strlen( )返回的是字符串中不包括 0在内的实际长度,敢本题答案为 B)。 38 【正确答案】 A 【试题解析】 auto变量:无 static声明的局部变量
12、。用 auto作存储类别的声明时,可以不写 auto,存储类别隐含确定为 auto(自动存储类别 ),是动态存储方式。大多数变量是自动变量。用 static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的 内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用 extern声明外部变量,外部变量即全局变量,可以用 extern声明来改变全局变量的作用域,实际上,关键字 “auto”可以省略, auto不写则隐含确定为 “自动存储类别 ”,属于动态存储方式。 39 【正确答案】 C 【试题解析】 本题考查按位与 “ ”。因为 1&1=1, 0 0=0,所以任何数与
13、自身按位与,结果仍为此数,不发生变化。 40 【正确答案】 A 【试题解析】 本题中,最主要的是掌握几个有关文件函数的应用。 函数名: fopen 功能:打开一个文件 调用方式 FILE *fp; fp=fopen(文件名,使用文件方式 ); 函数名: fprintf 功能:传送格式化输出到一个文件中 调用方式: fprintf(文件指针,格式字符串,输出表列 ); 函数名: fclose 功能:关闭一个文件 调用方式: fclose(文件指针 ); 函数名: fscanf 功能:从磁盘文件执行格式化输入 调用方式: fscanf(文件指针,格式字符串,输入列表 )。 41 【 正确答案】 共
14、享性 【试题解析】 数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。 42 【正确答案】 E-R图 【试题解析】 数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而 E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将 E-R图转换成关系模式。 43 【正确答案】 类 【试题解析】 在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。 44 【正确答案】 冒泡排序 【试题解析】 交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过
15、相邻元素之间的相互交换逐步将线性表变成有序。 45 【正确答案】 循环链表 【试题解析】 在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。 46 【正确答案】 非 0 【试题解析】 逻辑运算中,非 0表示逻辑 “真 ”,用 0表示逻辑 “假 ”。 47 【正确答案】 x+ 1 【试题解析】 本题 考查 “+“、 “-“运算符。 “+“、 “-“只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增 1或减 1,后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1。 48 【正确答案】 3,1,2 【试题解
16、析】 分析程序,第一个 if句, a 1,b 2,控制条件 a b成立,则交换a、 b的值,此时 a 2,b 1。第二个 if语句, a 2,c 3,控制条件 a c成立,则交换 a、 c的值,此时 a 3,c 2。 49 【正确答案】 dowhile 【试题解析】 考查 while和 dowhile 循环的主要区别。 while循环的控制出现在循环体之前,只有当 while后面的表达式的值为非零时,才可能执行循环体;在dowhile 构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。 50 【正确答案】 101091 【试题解析】
17、for(表达式 1;表达式 2;表达式 3)语句的功能是:首先计算表达式 1的值,然后检测表达式 2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式 3的值。然后再检测表达式 2的值是否为真,若 为真,继续执行循环体语句,若为假,则退出循环;第 1次循环 x 8成立,输出 x 10, y 10后, x的值减 1, i l,执行 y +i操作, y的值变为 1判断条件还成立,输出 x9,y 1,然后 x的值减 1,循环条件不成立,则退出循环。 51 【正确答案】 4 【试题解析】 一维数组元素的定义形式为:数组名 N,则该数组中元素的下限是 0,上限是 N-1。 52 【正确答案】
18、150 【试题解析】 本题先给变量 x赋初始值 100,然后将指针 p指向变量 x, *p是取指针 p所指地址的内容,即 100,所以 x 100+50 150。 53 【正确答案】 100 【试题解析】 本题考查带参数的宏定义财目关运算。运算过程为: k B*20(A+3)*20 (2+3)*20 100。 54 【正确答案】 B 【试题解析】 因为 c是字符类型变量,它只能接收一个字符,所以 c A,字符型变量在参与算术运算的时候是用其相应的 ASCII码参与运算的,这样抖 c得到字母 B的 ASCII码,用 putchar函数输出是输出其相应的字符,所以是 B。 55 【正确答案】 8 【试题解析】 第 1次 for循环, i 0,调用函数 f(2),然后将 a的值加 1,在 f()函数中,变量 c为 static类型,所以 c 8:第 2次 for循环, i 1,调用函数f(3),然后将 a的值加 1,调用函数 f(3)时, a c+8,所以 k 8。 56 【正确答案】 x0 x0 【试题解析】 函数 f()通过 for循环逐个比较数组 x中的元素,循环结束后, p0和 p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值 xp0和数组的最后一个元素 xn-1) 交换位置,再将最小值 xp1和第一个元素 (x0)进行交换,所 以空白处应该填入 x0。