[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc

上传人:amazingpat195 文档编号:503299 上传时间:2018-11-29 格式:DOC 页数:24 大小:90KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级(C语言)笔试模拟试卷135及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 135及答案与解析 1 下列叙述中正确的是 ( )。 ( A)算法的执行效率与数据的存储结构无关 ( B)算法的空间复杂度是指算法程序中指令 (或语句 )的条数 ( C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 ( D)以上 3种描述都不对 2 数据的存储结构是指 ( )。 ( A)数据所占的存储空间 ( B)数据的逻辑结构在计算机中的存放形式 ( C)数据在计算机中的顺序存储方式 ( D)存储在计算机外存中的数据 3 栈和队列的共同点是 ( )。 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同特点

2、 4 有下列二叉树,对此二叉树中序遍历的结果为 ( )。 ( A) ABCDEF ( B) BDAECF ( C) ABDCEF ( D) ABCDFE 5 对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 6 源程序的文档化不包括 ( )。 ( A)符号名的命名要有实际意义 ( B)正确的文档形式 ( C)良好的视 觉组织 ( D)正确的程序注释 7 下列描述中正确的是 ( )。 ( A)软件工程只是解决软件项目的管理问题 ( B)软件工程主要解决软件产品的生产率问题 ( C)软件工程的主要思想是强调

3、在软件开发过程中需要应用工程化原则 ( D)软件工程只是解决软件开发过程中的技术问题 8 为了提高软件模块的独立性,模块之间最好是 ( )。 ( A)控制耦合 ( B)公共耦合 ( C)内容耦合 ( D)数据耦合 9 数据库系统的核心是 ( )。 ( A)数据模型 ( B)数据库管理系统 ( C)数 据库 ( D)数据库管理员 10 待排序的关键码序列为 (33, 18, 9, 25, 67, 82, 53, 95, 12, 70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码 33被放到第 ( )个位置。 ( A) 3 ( B) 5 ( C) 7

4、( D) 9 11 请读程序: #include stdio.h main() int a;float b,c; scanf(“%2d%3f%4f“, printf(“na=%d,b=%f,c=%fn“,a,b,c) 若运行时从键盘上输入 987643210则上面程序的输出结果是 _。 ( A) a=98, b=75,c=4321 ( B) a=10,b=432,c=8765 ( C) a=98,b=765.000000c=4321.000000 ( D) a=98, b=765.0,c=4321.000000 12 请选出以下程序的输出结果 _。 #include stdio.h sub(x

5、,y,z) int x,y,*z; *z=y-x; main() int a,b,c; sub(10,5,sub(7,a,sub(a,b, printf(“%d,%d,%dn“,a,b,c); ( A) 5,2,3 ( B) -5,-12,-7 ( C) -5,-12,-17 ( D) 5,-2,-7 13 设整型数 i=5,则 printf(“%d“i+i);的输出为 _。 ( A) 10 ( B) 11 ( C) 12 ( D)语法错误 14 若要用下面的程序片段使指针变量 p指向 个存储整型变量的动态存储单元 int *p; p=_malloc(sizeof(int); 则应填入 _。

6、( A) int ( B) int* ( C) (*int) ( D) (int*) 15 下面程序输出的结果是 _。 main() inti=5,j=9,x; x=(ij?i:(j=7); printf(“n%d,%d“,i,j) ( A) 5,7 ( B) 5,5 ( C)语法错误 ( D) 7,5 16 若有以下定义和语句: int a=1,2,3,4,5,6,7,8,9,10),*p=a; 则值为 3的表达式是 _。 ( A) P+=2,*(p+) ( B) p+=2,*+p ( C) p+=3,*p+ ( D) p+=2,+*p 17 设 a、 b和 c都是 int型变量,且 a=3

7、、 b=4、 c=5,则下面的表达式中,值为 0的表达式是 _。 ( A) a ( A) ap-a ( B) *( s0=a 0,s1=a1 pp=s p=(int*)malloc(sizeof(int); *pp=s11; p=*pp; printf(“%dn“,*p); ( A) 1 ( B) 7 ( C) 9 ( D) 11 21 若变量已正确定义,下列正确的程序段是 ( )。 ( A) while(ch=getchar()=N)putchar(ch); ( B) while(ch=getchar()=n)putchar(ch); ( C) while(ch=getchar()!=N)p

8、utchar(ch); ( D) while(ch=getchar()!=n)putchar(ch); 22 若有下列定义,则对 a数组无素地址的正确引用是 ( )。 int a5,*p=a; ( A) p+5 ( B) *a+1 ( C) “则对 a数组的第 i行第 j列无素的正确引用为 ( )。 ( A) *(*(a+i)+j) ( B) (a+i) j ( C) *(a+i+j) ( D) *(a+i)+j 24 下列选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( )。 ( A) x%2=1 ( B) x/2 ( C) x%2!=0 ( D) x%2=0 25 下列叙述中不正确

9、的是 ( )。 ( A)在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 ( B)在 C的函数中,最好使用全局变 量 ( C)外部变量可以在函数之间传递数据 ( D)自动变量实质上是一个函数内部的局部变量 26 定义下列结构体 (联合 )数组: struct st char name15; int age; a10=“ZHAO“,14, “WANG“,15, “LIU“,16, “ZHANG“,17 ; 执行语句printf“%d,%c“,a2.age, *(a3.name+2)的输出结果为 ( )。 ( A) 15, A ( B) 16, H ( C) 16, A (

10、 D) 17, H 27 设有下列语句 int a=1,b=2,c; c=a(b 2); 执行后, C的值为 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 28 有下列程序: #include stdio.h main( ) char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1);putchar(c2); printf(“%c%cn“,c5,c6); 程序运行后,若从键盘输入 (从第 1列开始 ) 123 CR 45678 CR 则输出结果是 ( )。 ( A) 12

11、67 ( B) 1256 ( C) 1278 ( D) 1245 29 若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正 确的是( )。 Struct stu int i; int name; st,*p; p= ( A) st.i ( B) *p.i ( C) (*p).i ( D) p- i 30 字符串 “ABCDEF“的长度是 ( )。 ( A) 15 ( B) 10 ( C) 7 ( D) 8 31 下列选项中,值为 1的表达式是 ( )。 ( A) 1-0 ( B) 1-0 ( C) 1-0 ( D) 0-0 32 有下列程序: fun(int x) int p;

12、if(x= =0 x= =1) return(3); p=x-fun(x-2); return p; main( ) print f(“%dn“,fun(7 ); 执行后输出的结果是 ( )。 ( A) 7 ( B) 3 ( C) 2 ( D) 0 33 下列程序的输出结果是 ( )。 #include stdio.h int fun(int x) int p; if(x=0x=1) return 3; else p=x-fun(x-2); return p; void main() print f(“n%d“, fun(5); ( A) 5 ( B) 3 ( C) 7 ( D) 1 34 下

13、列程序的输出结果是 ( )。 point(char*pt); main() char b4= a,c,s,f ,*pt=b; pt=point(pt); printf(“%cn“,*pt); point(char*p) p+=3; return p; ( A) s ( B) c ( C) f ( D) a 35 已有定义 int(*q)(),指针 q可以 ( )。 ( A)指向函数的入口地址 ( B)代表函数的返回值 ( C)表示函数的类型 ( D)表示函数返回值的类型 36 下列程序的输出结果是 ( )。 #include stdio.h #include string.h main() c

14、har a=“n123“; printf (“%d,%dn“,strlen(a),sizeof(a); ( A) 5,6 ( B) 5,5 ( C) 6,6 ( D) 6,5 37 下列选项中不会引起二义性的宏定义是 ( )。 ( A) #define S(x) X*X ( B) #define S(x)(x)*(x) ( C) #define S(x)(x*x) ( D) #define S(x)(x)*(x) 38 若有运算符: 、 *=、 %、 sizeof,则它们按优先级 (由低至高 )的正确排列次序为 ( )。 ( A) *= % sizeof ( B) *= % sizeof (

15、C) %= sizeof % ( D) *= % sizeof 39 在 C语言中,下列关于文件操作的叙述正确的是 ( )。 ( A)对文件操作必须先关闭文件 ( B)对文件操作必须先打开文件 ( C)对文件操作顺序没有统一规定 ( D)以上全错 40 利用 fseek函数可实现的操作是 ( )。 ( A)实现文件的顺序读写 ( B)改变文件的位置指针 ( C)实现文件的随机读写 ( D)以上答案均正确 41 测试用例包括输入值集和【 】值集。 42 某二叉树中度为 2的结点有 18个,则该二叉树中有【 】个叶子结点。 43 数据结构分为逻辑结构与存储结构,线性链表属于【 】。 44 在关系模

16、型中,把数据看成一个二维表,每一个二维表称为一个【 】。 45 数据库设计分为以下 6个设计阶段:需求分析阶段、【 】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 46 阅读下面程序段,则执行后输出的结果是【 】。 #include “stdio.h“ main() char fun(char, int); char a=A; int b=13; a=fun(a, b); putchar(a); char fun(char a, int b) char k; k=a+b; return k; 47 阅读下面语句,则程序的执行结果是【 】。 #include “stdio.h“ ma

17、in() int a=-1, b=1, k; if(+a 0) main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i 10; i+)s+ bi; printf(“%dn“, s); 51 有如下图所示的双链表结构,请根据图示完成结构体的定义: struct aa int data; 【 】 node; 52 有以下程序段,且变量已正确定义和赋值 for(s=1.0, k=1; k =n; k+)s=s+1.0/(k*(k+1); printf(“s=%fnn“, s); 请填空,使

18、下面程序段的功能与之完全相同 s=1.0; k=1; while(【 】 )s=s+1.0/(k*(k+1);【 】; printf(“s %fnn“, s); 53 以下函数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中, b所指二维数组中其他数据不变。 #define N 4 void rotade (int aN, int bN) int i, j; for(i=0; i N; i+) biN-1【 】;【 】 aN-1i; 国家二级( C语言)笔试模拟试卷 135答案与

19、解析 1 【正确答案】 C 【试题解析】 算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。 2 【正确答案】 B 【试题解析】 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。 3 【正确答案】 C 【 试题解析】 栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。 4 【正确答案】 B 【试题解析】 对二又树的中序遍历是指:首先遍历左子树,然后访问根结点,

20、最后遍历右子树。在遍历左,右子树时,注意依旧按照 “左子树 根结点 右于树 ”的顺序。 5 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符, 查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 6 【正确答案】 B 【试题解析】 源程序的文档化主要包括 3点: 符号名应具有一定实际的含义,便于理解程序功能; 正确的程序注释; 良好的视觉组织 (利用空格、空行、缩进等技巧使程序层次清晰 )。 7 【正确答案】

21、 C 【试题解析】 软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。 8 【正确 答案】 D 【试题解析】 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。 9 【正确答案】 B 【试题解析】 数据库系统由数据库 (数据 )、数据库管理系统 (软件 )、数据库管理员 (人员 )、硬件平台 (硬件 )、软件平台 5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织,数据操纵、数据锥护、控制及保护和数

22、据服务等工作。 10 【正确答案】 B 【试题解析】 快速排序的基本思想是;从表中选取一个元素 (如本题中的 33),将表中小于此元素的移到前面,大于此元素的移到后面结果把线性表分割成两部分 (两个子表 ),此元素插入到其分界线的位置处。然后分别对两个子表再次分割 本题中 33作为分割的中界线,第一趟排序后排在比它小的 18、 9、 25、 12后面。 11 【正确答案】 C 【试题解析】 scanf()把用户从键盘录入的数字的第 1、 2位存入整型变量 a;把第 3、 4、 5位存入单精度实型变量 b,把第 6、 7、 8、 9位存入单精度实型变量c,用户录 入的第 10位被 scanf()

23、遗弃。这时变量 a、 b、 c的值分别为: 98、765.000000、 4321.000000。 12 【正确答案】 B 【试题解析】 sub()函数的作用是将形参 y和 x的差赋给了 z指向的那个内存地址,所以在 sub(10,5,后, p中将是 s0的值,最后的输出语句将输出地址 s0)所指向的数据,即时 a00。 21 【正确答案】 D 【试题解析】 本题考查两个知识点: C语言用 n这个字符常量表示换行; 函数 getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。 22 【正确答案】 D 【试题解析】 本题考查如何引用数组元素的地址。选项 A)中, p+5引用的是 a

24、5的地址,而数组 a只有 5个元素,即 a0、 a1、 a2、 a3、 a4,所以引用错误;选项 B)中, *a+1指的是将数组 a的第一个元素加 1;选项 C)中,这种引用方式错误;选项 D)中, *(ai+j); *(*(a+i)+j); *(ai)j; *(&a00+3*i+j)。 24 【正确答案】 D 【试题解析】 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1。所以选项 D)等于关系表达式的结果为假,即等于 0。 25 【正确答案】 B 【试题解析】 编译时,编译系统不为局部变量分配 内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配

25、内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。 26 【正确答案】 C 【试题解析】 本题主要考查结构体数组。 a2.age为结构体 a2的 age成员,即160 a3.name为指向结构体 a3的 name成员的第一个元素的指针,即指向 “Z”,(a3.name+2)将指针后移两位指向第三个元素 “A”, *(a3).name+2)是取指针所指向地址的内容。 27 【正确答案】 D 【试题解析】 变量 b的初值等于 2,所以表达式 b 2表示 b的值二进制左移两位,即扩大 4倍,所以变

26、量 b的等于 8。然后与 a的值 1进行异或运算,得 9。 28 【正确答案】 D 【试题解析】 当用 scanf函数从键盘愉入数据时,每行数据的末尾按下回车键(Enter键 )之前,可以任意修改。但按下回车键 putchar(c1)(Enter键 )之后, scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入 123 CR时,变量 c1、 c2、 c3的值分别为 1、 2、 3,当输入 45678 CR时,变量 c5、 c6的值 4和 5。所以用输出函数 putchar(c1)输出 1, putchar(c2)输出 2,printf(“%c%cn,c5,c6)输出 45。所以

27、选项 D)为正确答案。 29 【正确答案】 B 【试题解析】 本题主要考查结构指针: p=&st,访问结构体的成员,可以通过结构变量访问,即 st.1,也可以用等价的指针形式,即 (*p).i和 p- i。 30 【正确答案】 B 【试题解析】 本题涉及字 符串最基本的两个概念: 字符串的长度是指字符串中字符的个数,但不包括字符串结束符; 以反斜杠 “”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内, “”连同后面的字符为一个长度。 31 【正确答案】 B 【试题解析】 在 C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将

28、字符转换为对应的 ASC II码值再参与整数运算。字符 1对应的 ASC II码值是 49,字符 0对应的 ASC II码值是 48,字符 0是字符串结束标识符 NULL,其对应的 ASC II码值是 0。 32 【正确答案】 C 【试题解析】 因为在函数 fun(int x)中,如果参数 x等于 0或 1时,返回值 3。否则 p=x-fun(x-2)这是一个递归函数,所以在主函数调用 fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)=7-5=2“,所以最后的输出结果为 2。 33 【正确答案】 A 【试题解

29、析】 本题考查函数的递归调用。在函数递归调用时, fun(5):a=5-fun(3)- fun3=a=3-fun(1)- fun(1):a-3,反推回去 fun(3):a=3-3=0- fun(5):a=5-0=5,最后的计算结果为 5。 34 【正确答案】 C 【试题解析】 本题考查函数调用时的参数传递。函数 point的参数为字符指针,当执行函数 point时,刚开始指针 p指向 “a”,经过 +3操作后,指针 p指向 “f”所以最后的输出结果是 f。 35 【正确答案】 A 【试题解析】 本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符 (*指针变量名 )()。其中, “类型

30、标识符 ”为函数返回值的类型; “指针 ”指向函数的入口地址。 36 【正确答案】 A 【试题解析】 转义字符 n表示换行, 表示反斜杠,函数 strlen()是计算字符串的长度,不包括文件结束标志 (0),函数 sizeof()统计字符串所占的字节数。 37 【正确答案】 D 【试题解析】 本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。 38 【正确答案】 D 【试题解析】 本题主要考查算术运算的优先级。顺序如下;*=、 %、 sizeof的优先级依次递增。 39 【正确答案】 B 【试题解析】 本题考查对文件的操作。文件打开后才可以对文件进行操作

31、,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。 40 【正确答案】 D 【试题解析】 改变文件位置指针函数 fseek()的功能是: 改变文件的位置指针; 辅助实现文件的顺序读写; 辅助实现文件的随机读写。 41 【正确答案】 输出 【试题解析】 软件测试用例是为了有效发现软件缺陷而编写的包含测试 目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。 42 【正确答案】 19 【试题解析】 在任意一棵二叉

32、树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。 43 【正确答案】 存储结构 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构 中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。 44 【正确答案】 关系 【试题解析】 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名;表中的一行称为一个元组,相当于记录值。 45 【正确答案】 概念设计阶段 【试题解析】 数据库设计分

33、为以下 6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。 46 【正确答案】 N 【试题解析】 函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符 “A”的 ASCII码值上加上一个常数,使之变成另一个 ASCII码值,从而输出字符。 47 【正确答案】 1, 0 【试题解析】 与运算两边的语句必须同时为真的,结果才为真。当执行完if(+a 0)&!(b- 0)时, a, b的值已经发生了变化。 48 【正确答案】 31 【试题解析】 在函数调用时,形参值的改变,不会改变实参值。 49 【正确答案】 BCD CD D 【

34、试题解析】 本题考查指向字符串的指针的运算方法。指针变量 p首先指向字符串中的第一个字符 A,执行 p s+1后, p指向字符串中的第二个字符 B,然后输出值 “BCD”并换行,依次执行循环语句。 50 【正确答案】 22 【试题解析】 在 main函数中,调用 reverse函数将 b数组中的前 8个成员进行互置,执行完毕后, b数组中的成员为 8, 7, 6, 5, 4, 3, 2, 1, 9, 10,然后再执行 for循环结构,将 b6, b7b9 的值相加,结果为 22。 51 【正确答案】 struct aa* lhead, *rchild; 【试题解析】 结构体对链表的定义。 52 【正确答案】 k n k+ 【试题解析】 本题要求将一个 for循环改成 while循环。首先要保证循环条件相同,在 for循环中,每次执行循环之后,循环控制变量 k都会加 1,而 while循环则没有,故需在循环体中增加改变 k数值的语句 “k+; ”。 53 【正确答案】 a0i bi0 【试题解析】 biN-1 a0i实现把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中, bi0 aN-1i实现将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组中的第 0列。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1