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

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

1、国家二级( C语言)笔试模拟试卷 268 及答案与解析 1 下列叙述中正确的是 ( A)在面向对象的程序设计中,各个对象之间具有密切的联系 ( B)在面向对象的程序设计中,各个对象都是公用的 ( C)在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 ( D)上述三种说法都不对 2 结构化程序设计的核心和基础是 ( )。 ( A)结构化分析方法 ( B)结构化设计方法 ( C)结构化设计理论 ( D)结构化编程方法 3 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性 和 ( )。 ( A)可重用性差 ( B)安全性差 ( C)非持久性 ( D)冗余性 4 下列选项中不符

2、合良好程序设计风格的是 ( A)源程序要文档化 ( B)数据说明的次序要规范化 ( C)避免滥用 goto语句 ( D)模块设计要保证高耦合、高内聚 5 在软件开发中,下面的任务不属于设计阶段的是 ( )。 ( A)数据结构设计 ( B)给出系统模块结构 ( C)定义模块算法 ( D)定义需求并建立系统模块 6 概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是 ( A)把软 件划分成模块 ( B)确定模块之间的调用关系 ( C)确定各个模块的功能 ( D)设计每个模块的伪代码 7 模块本身的内聚是模块独立性的重要性度量因素之 。在 7类内聚中,具有最强内聚的 类是 _。 ( A)

3、顺序性内聚 ( B)过程性内聚 ( C)逻辑性内聚 ( D)功能性内聚 8 应用数据库的主要目的是 ( A)解决数据保密问题 ( B)解决数据完整性问题 ( C)解决数据共享问题 ( D)解决数据量大的问题 9 栈和队列的共同点是 _。 ( A)都是先进后出 ( B)都是先进 先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 10 己知一个有序线性表为 (13, 18, 24, 35, 47, 50, 62, 83, 96, 115, 134),当用二分法查找值为 90的元素时,查找成功的比较次数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 9 11 设有以下

4、函数: f(int a) int b=0; static int c=3; b+; c+; return(a+b+c); 如果在下面的程序中调用该函 数,则输出结果是 _。 main() int a=2, i; for(i=0; i 3; i+)printf(“% dn“, f(a); ( A) 7 8 9 ( B) 7 9 11 ( C) 7 10 13 ( D) 7 7 7 12 在数据库系统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是 ( )。 ( A)外模式 ( B)逻辑模式 ( C)概念模式 ( D)物理模式 13 以下程序的输出结果是 ( )。 main() in

5、t a=3; printf(“ d n“, (a+a-=a*a); ( A) -6 ( B) 12 ( C) 0 ( D) -12 14 以下数组定义中错误的是 ( A) int x3=0; ( B) int x23=l,2,3,4,5,6; ( C) int x3=l,2,3,4,5,6; ( D) int x23=l,2,3,4,5,6; 15 语句: printf(“%dn“,12的输出结果是 ( )。 ( A) 12 ( B) 8 ( C) 6 ( D) 12 16 下列函数调用中 , 不正确的是 _。 ( A) max(a,b); ( B) max(3,a+b); ( C) max(

6、3,5); ( D) int max(a,b); 17 已知 p为指针变量, a为数组名, i为整型变量,下列赋值语句中不正确的是 ( ) ( A) p *p=s t; t-; void main() int a=2, 3, 4, 5,k; int x; for(k=0; k 4; k+) fun (a, printf(“%d,“, x); ( A) 5,4,3,2 ( B) 2,3,4,5, ( C) 2,2,2,2, ( D) 5,5,5,5, 23 在下述程序中,判断 i j共执行的次数是 ( )。 main() int i=0,j=10,k=2,s=0; for(;) i+=k; if

7、(i j) printf(“%d“,s);break; s+=i; ( A) 4 ( B) 7 ( C) 5 ( D) 6 24 在位运算中,操作数每左移两位,其结果相当于 ( ) ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作 数除以 4 ( D)操作数乘以 4 25 下列程序的运行结果为 ( )。 #inelude main() struet date int year, month, day; today; printf(“ d n“, sizeof(struct date); ( A) 8 ( B) 6 ( C) 10 ( D) 12 26 以下不能将 s所指字符串正确复

8、制到 t所指存储空间的是 ( )。 ( A) while(*t=*s)t+; s+; ( B) for(i=0; ti=si; i+); ( C) do*t+: *s+; while(*s); ( D) for(i=0,j=0; ti+=sj+; ); 27 有以下程序 :#include stdio.h main( ) int a =0,b =0,c =0,d =0; if(a = 1) b=1;c=2; else d=3; pfintf( “%d,%d,%d ,%d n“ ,a,b,c,d); ( A) 0,1,2,0 ( B) 0,0,0,3 ( C) 1,1,2,0 ( D)编译有错

9、28 以下叙述中正确的是 ( )。 ( A)调用 pfintf函数时,必须要有输出项 ( B)使用 putchar函数时,必须在之前包含头文件 stdio.h ( C)在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出 ( D)调用 getchar函数读入字符时,可以从键盘上输入字符所对应的 ASCII码 29 有以下程序 :#include stdio.h main( ) char P = a,b,c ,q: “abc“; printf( “% d % d n“, sizeof(p), sizeof(q) );程序运行后的输出结果是 ( )。 ( A) 44 ( B) 33 ( C

10、) 34 ( D) 43 30 若有下面的程序片段 : int12=0,*p3,*pp,i; for(i=0;i3;i) pi= pp=p; 则对数组元素的错误引用是 ( A) pp01 ( B) a10 ( C) p31 ( D) *(*(p+2)+2) 31 下面程序段的输出为 #include “stdio.h“ main() printf(“%dn“,122); ( A) 0 ( B) 47 ( C) 48 ( D) 24 32 有定义: int x,y;若要通过 scanf(“%d,%d“, p=i9;i+)pi=i; for(i=0;i 3;i+)printf(“%d“,a1i);

11、 程序运行后的输出结果是 ( )。 ( A) 0 1 2 ( B) 1 2 3 ( C) 2 3 4 ( D) 3 4 5 35 以下程序的输出结果是 _。 main() char ch34=“123“,“456“,“78“,*p3;int i; for(i=0;i 3;i+) pi=chi; for(i=0;i3;i+) printf(“%s“,pi); ( A) 123456780 ( B) 123 456 780 ( C) 12345678 ( D) 147 36 有以下定义: #include stdio.h char a10,*b=a; 不能给数组 a输入字符串的语句是 ( )。 (

12、 A) gets(a) ( B) gets(a10) ( C) gets(i =5;i+) t=i+( ); s=s+t; printf(“s=%dn“,s); 48 以下程序的输出结果是【 】。 #include stdio.h main() int i; for(i-a; i f; i+,i+) printf(“%c“,i-a+A); printf(“n“); 49 设 int a=5, b=6,表达式 (+a=b-)?+a: -b的值是【 】。 50 以下程 序的输出结果是【 】。 main() int a=0; a+=(a=8); printf(“%dn“, a); 51 以下程序的输

13、出结果是 【 】 。 main() unsigned short a=65536; int b; printf(“%dn“, b=A) ; 52 设 y是 int型,请写出 y为奇数的关系表达式【 】。 53 下列程序中的数组 a包括 10个整数元素,分别将前项和后项之和存入数组 b,并按每行 4个元素输出数组 b。请填空。 #include stdio.h main() int a10,b10,i; for(i=0;i 10;i+) scanf(“%d“, for(i=0;i 9;i+) _; for(i=0;i 9;i+) if(i%4=0)printf(“n“); printf(“%3d

14、“,bi); 54 下列程序的输出结果是 _。 #include stdio.h main() int x=10,y=10,i; for(i=0; x 8; y=+i printf(“%d %d“, x-,y); 55 下列程序执行后输出的结果是【 】。 main() int arr10, i, k=0; for(i=0; i 10; i+)arri=i; for(i=1; i 4; i+) k+=arri+i; printf(“%dn“,k); 56 函数 delete(s,i,n)是作用是从字符串 s中删除从第 i个字符开始的 n个字符,请填空。 void delete(char s,in

15、t i, int n) int j,k,length=0; while(slength) 【 】 ; -i; j=i if( 【 】 ) k=i+n; if(i+n =length) while(k length) sj+=sk+; sj=0; 国家二级( C语言)笔试模拟试卷 268 答案与解析 1 【正确答案】 C 2 【正确答案】 C 【试题解析】 结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。 3 【正确答案】 D 【试题解析】 文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在 3个缺点

16、:数据冗余大、数据的不一致性、程序与数据的依赖性强。 4 【正确答案】 D 【试题解析】 程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。著名的 “清晰第一 ,效率第二 “的论点已成为当今主导的程序设计风格。形成良好的程序设计风格 ,主要注意和考虑下述一些因素 :源程序文档化、数据说明的次序规范化、避免滥用 goto语句等。除此之外 ,一般较优秀的软件设计尽量做到高内聚、低耦合 ,这样有 利于提高软件模块的独立性。 5 【正确答案】 D 【试题解析】 软件设计一般分为总体设计和详细设计两个阶段。总体设计的任务是确定软件的总体结构、子系统和模块的划分,确定模块间的接口和评价模块划分质量

17、,并进行数据分析;详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。 6 【正确答案】 D 【试题解析】 概要设计是数据库的总体设计,其目的就是要按照需求规格说明书把软件按照功能划分为多个模块,然后确定每个模块要实现的功能,最后确定模块之间的调用关系,而设计每个模块的伪代码则属 于详细设计。所以 D选项不属于概要设计。 7 【正确答案】 D 【试题解析】 内聚性是 个模块内部各元素间彼此结合的紧密程度的度量。内聚共有 7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 8 【正确答案】 C 【试题解析】 数据库中的数

18、据具有 “集成 ”与 “共享 ”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项 C)正确。 9 【正确答案】 C 【试题解析】 栈和队列 都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈是一种 “后进先出 ”的线性表;而队列是一种 “先进先出 ”的线性表。 10 【正确答案】 B 【试题解析】 根据二分法查找需要两次: 首先将 90与表中间的元素 50进行比较,由于 90大于 50,所以在线性表的后半部分查找。 第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查找成功。 11 【正确答案】 A

19、 【试题解析】 本题考查静态变量的问题。函数 f 中 c是静态变量存放在静态存储区,在程序的整个运行期间都不 释放占据的存储单元。函数 f 被调用 3次,调用过程如下。 第 1次调用; a=2、 b=0、 c=3,执行 b+和 c+后 b=1、 c=4,f(a)=a+b+c=2+1+4=7 第 2次调用: a=2、 b=0、 c=4执行 b+和 c+后 b=1、 c=5,f(a)=a+b+c=2+1+5=8 第 3次调用: a=2、 b=0、 c=5,执行 b+和 c+后 b=1、 c=6,f(a)=a+b+c=2+1+6=9 所以输出结果为选项 A。 12 【正确答案】 A 【试题解析】 外

20、模式也称子模式,它是数据库用户 (包括应用程序员和最终用户 )能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导出来的,是数据库用户的数据视图,是与某一应用有关的麴据的逻辑表示。一个概念模式可以有若干个外模式。 13 【正确答案】 D 【试题解析】 本题可以写成: a+a+(a-(a*a),所以 *的优先级最高,其次是 -=的, +的优先级最低,因此先求 a-=a*a=9,表达式变为 a+a+-=9, a即 a=a-9=-6,再次变为 a+(-6)=-12,故选择 D选项。 14 【正确答案】 B 【试题解析】 二维数组的 初始化有以下几种形式 : 分行进行初始化 ; 不分行的

21、初始化 ; 部分数组元素初始化 ; 省略第一维的定义 ,不省略第二维的定义。选项 B)等号右边分了 3行 ,大于等号左边数组的行数 2。 15 【正确答案】 B 【试题解析】 位运算 12指针法如 *(a+i)或 *(p+1)。其中 ,a是 数组名 ,p是指向数组的指针变量 ,其初值 p=a。再如 *(*(p+2)+2)是 a22的值 ,注意语句中指针型数组的书写格式 ,不能写成 “(*数组名 )长度 “,因为这是定义指向含有 “长度 “个元素的一维数组的指针变量。例如有定义语句 “int a,b,c,c,*p3=“,它定义了一个名为 p的指针型数组 ,其 3个元素 p0,p1,p2分别指向

22、f3个整型变量 a,b,c。 31 【正确答案】 C 【试题解析】 考查位运算的运算原理。 为左移运算符 ,运算符的左边是移位对象 ;右边是整型表达式 ,代表左移的位数 ,左移时 ,右端 (低位 )补 0;左端 (高位 )移出的部分舍弃。 32 【正确答案】 A 【试题解析】 格式输入函数的一般形式为: scanf(格式控制,地址表列 ) 在 “格式控制 ”字符串中,除格式说明以外的其他字符为按原样输入的字符,在输入数据时应按原样输入这些字符。所以输入时,两个数字之间的逗号是不可少的。 33 【正确答案】 A 【试题解析】 静态局部变量在整个程序运行期间,静态局部变量在内存的静态存储区中占据着

23、永久性的存储单元。由此可知静态局部 变量的生存期将一直延长到程序运行结束。故选项 A正确;而全局变量的只有一种静态存储类别,故全局变量说明为 stattc存储类,和没有说明为 static存储类其生存期都是一直延长到程序运行结束,故选项 B 不正确;未赋初值的 auto型变量的初值是随机的,未赋初值的 static型变量的初值是 0(故选项 C和选项 D不正确 )。所以; 4个选项中选项 A符合题意。 34 【正确答案】 D 【试题解析】 本题中定义的二维数组 a33中 9个元素在内存中的排列顺序是:a00, a01, a02, a10, a11, a12, a20, a21, a22。在主函

24、数中,首先定义了二维数组 a33,然后定义了 个指针 p 指向数组 a的第 1个元素 a00在第一个 for循环中,依数组 a在内存中的排列顺序为其元素赋从0 8九个值,然后用第二个 for循环依次输出 a10, a11, a12三个元素的值。所以, 4个选项中选项 D符合题意。 35 【正确答案】 C 【试题解析】 p 是指针数组,通过第 1个循环的赋值, p0、 p1、 p2分别指向二维数组 ch的第 1行、第 2行、第 3行,因此输出字符串 “12345678”。 36 【正确答案】 B 【试题解析】 函数 gets()的调用形式为 gets(str_adr); str_adr存放字符串

25、的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。 gets函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。本题中定义一个长度为 10的字符数组,和一个指针变量 b,并且通过赋值让它指向数组 a。选项 A、选项 B、选项 C和选项 D中只有选项 B 中 gets函数的参数 a0不能表示数组 a的首地 址,故选项 B不正确。所以, 4个选项中选项 B符合题意。 37 【正确答案】 B 【试题解析】 在 C语言中,调用函数时是将实参复制一份给形参,所以无论怎么改变形参的值,都不会影响到实参,即传值调用。即使形参是指针变量,也没有改变 C语言传值调用这个事实,实参指

26、针也还是复制了一份给形参指针,无论怎么改变形参指针的内容 (注意:不是形参指针所指向的内容 ),也不会影响实参指针的内容。但它们两个现在的值一样,即指向的是同一个内存地址,所以改变形参指针所指向的内容,也就改变了实参指针所指向的内容, C语言就是这样实现传址调用的。本题中 fun()函数的形参就是两个指针,但函数中没有任何语句改变这两个指针所指向的内容,只是交换了两个参数的内容,所以该函数不会对传递给它的实参以及实参所指向的内容造成任何影响,故 a, b初始化时为 3, 6,输出结果亦为 3和 6。应该选择 B。 38 【正确答案】 C 39 【正确答案】 C 【试题解析】 外部变量在编译时由

27、系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 40 【正确答案】 B 【试题解析】 本题考查函数调用的基本概念。调用函数时,实参的形式可以是 具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。 41 【正确答案】 A 【试题解析】 本题考查带参数的宏的定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用 w(12.84),输出 (int)(12.84)=12。 41 【试题解析】 矩形表示的是模块,箭头表示的是模块间的调用关系。用

28、带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表 示传递的是数据。 42 【正确答案】 可行性研究 【试题解析】 软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等 ,还可以将软件生命周期分为三个阶段 : 软件定义阶段 :可行性研究和需求分析 ; 软件开发阶段 :设计、实现和测试 ; 软件运行维护阶段 :交付使用和维护。 43 【正确答案】 可重用性 【试题解析】 继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。 44 【正确答案】 查询 【试题解析】 关系模型的 数据操纵即是建立在关系上的数据操纵,一股有查询

29、、增加、删除和修改四种操作。 数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。 数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。 数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。 数据修改是在一个关系中修改指定的元组和属性。 45 【正确答案】 网际协议 46 【正确答案】 数据操作 【试题解析】 数据模型就是现实世界的反映,数据模型所描述的内容有 3个部分,它们是数据结构、 数据操作与数据约束。 47 【正确答案】 t*10 【试题解析】 根据题意,当 i=1时, s=1, t=1;当 i=2时, s=1+12, t

30、=12=i+10;当 i=3时, s=1+12+123,t=123=i+120 由此不难发现当前 t的值等于当前 i的值加上上次 t值的 10倍。因此空白处应填 t*10。 48 【正确答案】 ACE 【试题解析】 题目中 for循环的循环变量 i从字符 a变到字符 e,但由于每次循环后都连续执行了两次 i+,所以 for循环将执行 3次,循环变量 i的值依次为a、 c、 e。循环体中是一条输出语句,按字符输出表达式 i-a+A。因为大小写字母的 ASCII码是连续的,例如 b+1=c、 W-1=V,而且小写字母的 ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此

31、可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的 i-a+A=i-(a-A),即让 i减去了此固定值,从而使整个表达式的值为 i所代表的小写字母的大写形式。故 本题的输出结果是 ACE。 49 【正确答案】 7 【试题解析】 此表达式为三目运算符, +a的值为 6, b -的值为 6,则整个表达式的值为 +a的值, +a的值为 7。请注意前缀 +, -和后缀 +, -的区别。 50 【正确答案】 16 【试题解析】 赋值表达式的值就是所赋值变量的值,本题中 a+=8相当于a=a+8,对表达式逐步

32、进行求解: a+=(a=8)此时, a的值由于赋值为 8,而不是 0。 a+=8 a=a+8 a=16 51 【正确答案】 0 【试题 解析】 对于一个 unsigned short 来说,它能取的最大值是 65535。这里给a赋值 65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它 (全零 )。所以 a的值实际为 0。 52 【正确答案】 y%2=1 【试题解析】 由关系运算符组成的表达式称为关系表达式。判断 2除 y的余数是否为 1,即可判断 y是否为奇数。 53 【正确答案】 bi=ai+ai+1 【试题解析】 将数组 a中元素 ai与 aj+1值相加后的值赋予数组

33、 b 中元素bi,即可实现将一个数组 的前项和后项之和存入另一数组。 54 【正确答案】 10 10 91 【试题解析】 for(表达式 1;表达式 2:表达式 3)语句的功能是:首先计算表达式 1的值,然后枪测表达式 2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式 3的值。然后再检测表达式 2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第 1次循环 x 8成立,输出 x=10, y 10后, x的值减 1, i=1,执行 y=+i操作, y的值变为 1:判断条件还成立,输出x=9, y 1,然后 x的值减 1,循环条件不成立,则退出循 环。 55 【正确答案】 12 【试题解析】 本题的第一个 for循环用于给数组 arr赋初值,第二个 for循环用于求和运算。由于第二个 for循环初始值为 1,而循环条件为 i 4,所以求的是arr1到 arr3及 i的和,所以输出结果为 12。 56 【正确答案】 length+ i length 【试题解析】 第一个循环极有可能是计算串的长度,在 i =length时字符才被删除,被删除的是从第 i个到第 i+n或最后一个间的所有字符。删除前,应判断 i=length。由于已经进行了 -i运 算,故实际应填入 i length。

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

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

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