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

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

1、国家二级( C语言)笔试模拟试卷 270 及答案与解析 1 下列选项中,不是一个算法的基本特征的是 ( )。 ( A)完整性 ( B)可行性 ( C)有穷性 ( D)拥有足够的情报 2 下列叙述中正确的是 ( )。 ( A)在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息 ( B)在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节 ( C)在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 ( D)在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序 设计方法 3 为了使模块尽可能独立 ,要求 ( A)模块的内聚程度要尽量高 ,且各模块间的耦合程

2、度要尽量强 ( B)模块的内聚程度要尽量高 ,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低 ,且各模块间的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低 ,且各模块间的耦合程度要尽量强 4 下列叙述中正确的是 ( )。 ( A)软件测试应该由程序开发者来完成 ( B)程序经调试后一般不需要再测试 ( C)软件维护只包括对程序代码的维护 ( D)以上三种说法都不对 5 视图设计一般有三种设计 次序,下列不属于视图设计的是 ( )。 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 6 以下不属于面向对象的基本特点的是 ( )。 ( A)分类性 ( B)多态

3、性 ( C)继承性 ( D)封装性 7 数据的完整性是指数据的正确性、有效性和 _。 ( A)可维护性 ( B)独立性 ( C)安全性 ( D)相容性 8 栈和队列的共同特点是 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 9 数据库的 故障恢复一般是由 ( ) ( A)数据流图完成的 ( B)数据字典完成的 ( C) DBA完成的 ( D) PAD图完成的 10 用树形结构来表示实体之间联系的模型称为 ( )。 ( A)关系模型 ( B)层次模型 ( C)网状模型 ( D)数据模型 11 有关 return语句说法不正确的是 ( )。

4、( A)系统默认的返回值类型为整型,故当函数的返回值为 int型时,在函数定义时,返回值的类型说明可以省略。 ( B)当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。 ( C)当函数没有返 回值时,函数的返回值类型可以说明为 void型,它表示 “无类型 ”或 “空类型 ”。 ( D)函数的返回值类型必须与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。 12 数据库的故障恢复一般是由 ( )来执行恢复。 ( A)电脑用户 ( B)数据库恢复机制 ( C)数

5、据库管理员 ( D)系统普通用户 13 以下 4个选项中 ,不能看作一条语句的是 ( A) ; ( B) a=5,b=2.5,c=3.6; ( C) if(a main0 int y=9; for( ; y0;y-) if(y%3=0) printf(“%d“,-y); 程序的运行结果是 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 25 设 x、 y和 z是 int型变量,且 x=4, y=6, z=8,则下列表达式中值为 0的是( )。 ( A) x int i; for(i=0;sl1i!=0i+) if(s1i=s2iputchar(i) ( B) pu

6、ts(s1i,i) ( C) printf(“%c%dn“,s2i,i) ( D) printf(“%c“,s1i);printf(“%dn“,i) 27 有下列程序: main() int i,j; for(i 1;i 4;i+) for(j i;j 4;j+) printf(“%d*%d %d“,i,j,i*j); printf(“n“); 程序运行后的输出结果是 ( )。 ( A) 1*1 1 1*2 2 1*3 3 2*1 2 2*2 4 3*1 3 ( B) 1*1 1 1*2 2 1*3 3 2*2 4 2*3 6 3*3 9 ( C) 1*1 1 1*2 2 2*2 4 1*3

7、3 2*3 6 3*3 9 ( D) 1*1 1 2*1 2 2*2 4 3*1 3 3*2 6 3*3 9 28 以下程序的输出结果是 #include int fun(int n,int *s) int f1,f2; if(n=0|n=1) *s=1; else fun(n-1, fun(n-2, *s=f1+f2; void main() int x; fun(6, printf(“n%d“,x); ( A) 7 ( B) 13 ( C) 9 ( D) 10 29 若程序中已包含头文件 stdio.h,以下选项能正确运用指针变量的程序段是( )。 ( A) int *i=NULL; sc

8、anf(“%d“,i); ( B) float *f=NULL; *f=10.5; ( C) char t=m,*c; *c= ( D) long *L; L=0; 30 不合法的 main函数命令行参数表示形式是 ( A) main(inta,char *c) ( B) mmn(int arc,char *arv) ( C) main(int argc, char *argv) ( D) majn(int argv, char *atgc) 31 下面对 C语言的描述中,正确的是 ( A)函数一定有返回值,否则无法使用函数 ( B) C语言函数既可以嵌套定义又可以递归调用 ( C)在 C语言

9、中,调用函数时,只能 将实参的值传递给形参 ( D) C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 32 设有以下定义: struck sk int a; float b; data; int *p; 若要使p指向 data中的 a域,正确的赋值语句是 ( )。 ( A) p= c= b= 程序在执行了 c=b=语句后,表达式: *c的值是 ( A)变量 a的地址 ( B)变量 b中的值 ( C)变量 a中的值 ( D)变量 b的地址 40 有以下程序的输出结果是 ( ) void f(int v , int w) int t; t=v;v=w;w=t; main( ) int

10、x=1,y=3,z=2; if(x y) f(x,y); else if(y z) f(y,z); else f(x,z); printf(“%d,%d,%dn”,x,y,z); ( A) 1,2,3 ( B) 3,1,2 ( C) 1,3,2 ( D) 2,3,1 41 下列语句组中,正确的是 ( A) ; s Olympic; ( B) char s 7; s Olympic; ( C) ; s Olympic; ( D) char s 7; s Olympic; 42 下列软件系统结构图 的宽度为【 】。 43 在最坏情况下,冒泡排序的时 间复杂度为【 】。 44 十六进制数 100转换

11、成十进制数为【 】。 45 在线性表的多种存储结构中,最简单的方法是【 】 46 在链表的运算过程中,能够使空表与非空表的运算统一的结构是 _。 47 以下程序的输出结果是 _。 #include void swap(int*a, int*b) int*t; t=a; a=b; b=t; main() int i=3,j=5, *p= 53 若有以下程序: main() int a44=l,2,-3,-4,0,-12,-13,14,-21,23,0,-24, -31,32,-33,0; int i,j,s=0; for( i=0; i 4; i+ ) for( j=0; j 4; j+ ) i

12、f (aij 0) continue; if (aij=0) break; s+=ai j; printf(“%dn“,s); 执行后输出的结果是【 】。 54 下列程序的输出结果是 _。 #include stdio.h int t(int x,int y,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int a=1,b=8,c=7,d=9; t(a,b,c,d); printf(“%d %dn“,c,d); 55 下面程序的功能是将字符串 a下标值为偶数的元素由小到大排序,其他元素不变,请填空。 #include stdio h main()

13、char a “labchmfye“, t: int 1, j; for(i 0; i 7; i+ 2) for(j=i+2; j 9;【 】 ) if(【 】 ) t ai; ai aj; aj t; j+; puts(a) ; printf(“n“); 56 下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法 ) #include stdio.h #include string.h main() char *str=“ABCDabcd“,temp; int n,i; n=strlen(str); while(n- 1) for(i=0;i n;

14、i+) if(stri stri+1) temp=【 】 ; stri=stri+1; 【 】 =temp; printf(【 】 ); 国家二级( C语言)笔试模拟试卷 270 答案与解析 1 【正确答案】 A 【试题解析】 作为一个算法,一般应该具有下列 4个特征: 可行性,即考虑到实际的条件能够达到一个满意的结果; 确定性,算法中的第一个步骤都必须是有明确定义的; 有穷性,一个算法必须在有限的时间内做完; 拥有足够的情报。 2 【正确答案】 C 【试题解析】 在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。

15、在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。 3 【正确答案】 B 【试题解析】 模块的独立程度可以由两个定性标准度量 :耦合性和内聚性。耦合性是衡量不同模块彼此间互相依赖 (连接 )的紧密程度 ;内聚性是衡量一个模块内部各个元素彼此 结合的紧密程度。一般来说 ,要求模块之间的耦合尽可能地低 ,而内聚性尽可能地高。 4 【正确答案】 D 【试题解析】 程序调试的任务是诊断和改正程序中的错误,调试主要在开发阶段;而软件测试贯穿整个软件生命期,目的是尽可能多地发现软件中的错误,为了达到更好的测试效果,应该由独立的第三方来构造测试;软件的运行和维护是指将已交付的

16、软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。 5 【正确答案】 B 【试题解析】 视图设计一般有三种设计次序,它们分别是自顶向下 、自底向上和由内向外,可以单独使用也可混合使用。 6 【正确答案】 A 【试题解析】 封装性、继承性、多态性是面向对象的三大特点。 7 【正确答案】 D 【试题解析】 数据模型的完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。 8 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和

17、删除。二者的区别是:栈只允许在表的一端进行插入或删除操 作,是一种“后进先出 ”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”的线性表。 9 【正确答案】 C 10 【正确答案】 B 【试题解析】 在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型 )是树中的结点,而树中各结点之间的连线表示它们之间的关系。 11 【正确答案】 D 【试题解析】 函数的返回值类型一般与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return 语句中表达式的值转换为函数的返回值类

18、型。 12 【正确答案】 C 【试题解析】 数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。 13 【正确答案】 D 【试题解析】 选项 D)为两条语句。 14 【正确答案】 C 【试题解析】 C语言规定 ,标志符由字母、数字或下划线组成 ,它的第一个字符必须是字母或下划线。 15 【正确答案】 D 【试题解析】 在题中, i的值为 3,由于 “case 3:”后面没有 break 语句,所以继续向下执行 “case 4:”后面的语句,由于 “case 4:”后面的语句为 break 强行退出 switch语句,所以,本题没有任何输出。 16 【正确答案】 A 17

19、 【正确答案】 D 【试题解析】 在 C语言中没有逻辑类型,逻辑类型用整型来表示, C语言中没有集合类型。 18 【正确答案】 C 【试题解析】 C语言中的自反赋值运算符。 “m-=n”相当于 “m=m-n”,两个相等的数相减,其值为 0。 19 【正确答案】 B 【试题解析】 C语言中允许使用一种特殊形式的字符常量,就是以一个 “”开头的字符 序列,这样的字符称为 “转义字符 ”。常用的转义字符有: n,换行; t,水平制表; b,退格; r,回车。 20 【正确答案】 A 【试题解析】 题目中没有给 q 分配存储单元,只是简单的给它赋了一个值,所以程序的运行结果是 6 11 NULL po

20、inter assignment,也就是运行后报错。 21 【正确答案】 B 【试题解析】 本题考查 printf函数的格式。 “%08”格式符中的 “0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加 “0”; “8”表示指定数据的输出宽度为 8位 。 22 【正确答案】 A 【试题解析】 通过 p1= 对指针变量赋。值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元,不能使用,否则将造成意外错误;而指针变量赋 0值后,则可以使用, 只是它不指向具体的变量而已。选项 C)中的 *c=&t;错误,因为 &t是地址,而 *c是值。选项 D)是让指针 L 指向字符

21、串的末尾,即字符串的结束符。 30 【正确答案】 C 【试题解析】 main()函数可以带有参数,并且参数只能有两个,第一个参数类型为整型,用来记下命令行的参数个数,第二个参数为一个字符型指针数组,或字符型二级指针变量 (指向一个数组,数组元素又是一个一级字符指针 ),其各个元素用来记下从命令行各参数字符串的首地址故本题只有 C选项不符合要求。所以, 4个选项中 C为所选。 31 【正 确答案】 C 【试题解析】 函数不一定有返回值 (void 类型 ), C语言规定,在一个函数的内部不能再定义函数,函数可以递归调用,一个 C程序允许由多个文件组成, C语言支持函数的外部调用,不一定有调用关系

22、的所有函数都放在同一个源程序文件中。选项 A)函数不一定有返回值,选项 B)函数不可以嵌套定义,选项 D)函数可以外部调用。 32 【正确答案】 C 【试题解析】 p 定义为指针变量。选项 A中对结构体分量 a的引用错误,应为data.a。选项 B 中 data.a是取分量的值,它是一个整型数据,而 p 的值应为地址 ,所以不能将 data.a赋值给 p。 &为取地址符,取分量 data.a 的地址赋值给 p,是正确的赋值语句。 *是间接访问运算符,选项 D中的浯句是将分量 data.a的值赋值给 p所指存储单元, *p 相当于一个变量,而不能实现使 p 指向 data中的 a域。 33 【正

23、确答案】 A 【试题解析】 因为函数 sub()只是简单地返回两个参数的乘积,所以表达式sub(int)sub(k+j, j), k+i)展开后就是: (int)(k+j) *j)*(k+i)=(3+2)*2)*(3+1)=10*4=40。所以程序运行后的 输出结果是 40,应该选择A。 34 【正确答案】 C 【试题解析】 指针变量 p 先是指向变量 a,后指向变量 b,但二级指针变量始终指向指针变量 p。 35 【正确答案】 A 【试题解析】 整型指针变量 p 指向整型变量 x,显然是先定义 x,后定义 p。定义 p 时,必须在指针变量名前加 *(否则, p只是不同整型变量 ),取变量 x

24、的地址,要用取地址符 &。 36 【正确答案】 C 【试题解析】 用单引号括起来的一个字符称为字符常量,而选项 B和选项 D中用的是双引号,而用双引号括起来的字符为字符串常量。因为 在 c语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以 C语言使字符型数据和整型数据之间可以通用。而选项 A中,给字符型变量赋值时只能赋一个字符,而 9, 7作为字符时为两个字符且必须分别用单引号括起来。 37 【正确答案】 B 38 【正确答案】 C 【试题解析】 计算机语言分为低级语言、汇编语言和高级语言, C语言属于高级语言,但并不是说 C语

25、言比其他语言高级,所以选项 A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进 制数才能执行,选项 B 错误; C语言出现在 1972年到 1973年间,并不是出现最晚的语言,所以选项 D也是错误的。 39 【正确答案】 C 【试题解析】 *c即 *(*c), *c的值为 b, *b的值为 a,故 *(*c)的值为 a,即 *c的值为 a。 40 【正确答案】 C 【试题解析】 在本题中, main 函数中的 x, y, z在 f 函数调用前后不会发生值的变化。 41 【正确答案】 A 42 【正确答案】 3 【试题解析】 在程序结构图的有关术语中 ,宽度的概念是 :整体控制

26、跨度 ,即各层中所含 的模块数的最大值 ,由图可得此软件系统结构图的宽度为 3。 43 【正确答案】 【试题解析】 冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为 n,则在最坏的情况下,冒泡排序需要经过 遍的从前往后的扫描和 遍的从后往前的扫描,需要的比较次数为 。 44 【正确答案】 256 45 【正确答案】 顺序存储 46 【正确答案】 循环链表 【试题解析】 在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。 47 【正确答案】 3 5 【试题解析】 本题考查函数中形参和实参的传递。在 C语言函

27、数中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap 函数的功能是实现两个数的交换,但由于没有返回值,故最终的输出结果为3 5。 48 【正确答案】 abcdelkjihgf 【试题解析】 本题先给字符型数组 s的 12个元素赋值 a到 1的 12 个字母,函数sub(shar*a,int t1, int t2)的功能是将数组 a的从第 t1+1个元素到 t2+1个元素进行逆置,在主函数 中调用 sub(s, 5, SIZE-1)函数,是将数组 s的第 6个元素到第 12个元素进行逆置,其他元素位置不变。 48 【试题解析】 颠倒一个字符串中的字符,就是首

28、尾对应的元素两两交换。简单地可用两个游标变量 i和 j, i是前端元素的下标, j是后端元素的下标,交换以这两个变量值为下标的元素 stri和 strj。开始时, i的值为 0, j的值为字符串末元素的下标 (字符串长度减 1)。每次交换后, i增 1, j减 1。继续交换的条件是 stri位于 strj的前面,即 i j字符串末元素的下标是它的长度减 1,所以在第 二个空框处应填入 -1。程序为了交换 stri和 strj,使用了变量 k,该变量应在程序的变量定义部分中 起定义,所以在第 个空 49 【正确答案】 封装 【试题解析】 封装性是指从外面看只能看到对象的外部特征,而不知道也无需知

29、道数据的具体结构以及实现操作的算法。所以在面向对象方法中,信息隐蔽是通过对象的封装性来实现的。 50 【正确答案】 3。 【试题解析】 当执行完 c=(a-=(b-5)电可写成 c=a-a-(b-5), a的值为 6, c为 6,而当执行完 c=(a 11)+(b=3)后, b 为 3, c为 9,故填 3。 51 【正确答案】 8。 【试题解析】 本程序定义了 3个指针变量 p1、 p2、 p,并且将 p1、 p2指向 a、b,则 *p1=a=2, *p2=b=4,所以表达式 *p1*(*p2)的值是 8。在赋值语句的左边是*(p=&c),即指针 p指向了变量 c,因而 *(p)代表了 c的

30、存储单元。赋值语句“*(p=&c)=*p1*(p2)”是把整数 8赋给了变量 c。 52 【正确答案】 13 【试题解析】 函数 fun 是一个递归函数。执行 fun(3); ,x=3, x/2=1 0,又调用f(1),此时 , x=1,x/2=0,不满足继续递归调用的条件,输出 1,返回到 fun(3)中,输出 3。所以本题的输出结果为 13。 53 【正确答案】 58 【试题解析】 本题中处理二维数组元素用了两重循环,外循环变量 i表示数组的行,内层循环变量 j表示数组的列。在第二重循环中首先判断数组元素的值是否小于 0,若是则处理该行的下一个元素;若不是则判断 a刚的值是否等于 0,若等

31、于 0则退出内层循环开始处理下一行;其他情况下,把 aij的值加到变量 s中。所以本程序段的功能是把每行值为 0的元素前面的所有大于 0的元素值加 到变量 s中。 54 【正确答案】 7 9 【试题解析】 因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数, c、 d 的值并没有发生变化还是原来的值。 55 【正确答案】 j+ aj aj 56 【正确答案】 stri stri+1 “%s“,str 【试题解析】 本题要求将字符串 str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下 个字符,则通过中间变量 temp 将字符两两交换,所以第一空应 填: stri,第二空应填: stri+1。最终打印输出得到的字符串 str,所以第三空应填: “%s“,str。

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

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

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