国家二级C语言机试(选择题)模拟试卷4_第1页
国家二级C语言机试(选择题)模拟试卷4_第2页
国家二级C语言机试(选择题)模拟试卷4_第3页
国家二级C语言机试(选择题)模拟试卷4_第4页
国家二级C语言机试(选择题)模拟试卷4_第5页
已阅读5页,还剩76页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言机试(选择题)模拟试

卷第1套

一、选择题(本题共36题,每题1.0分,共36分。)

1、数据库管理系统是

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中

数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之

上的系统软件v

2、负责数据库中查询操作的数据库语言是()。

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:C

知识点解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操

纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数

据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

3、数据库应用系统中的核心问题是()。

A、数据库设计

B、数据库系统设计

C、数据库维护

D、数据库管理员培训

标准答案:A

知识点解析:数据库应用系统中的核心问题是数据库的设计。

4、在数据管理技术发展的三个阶段中,数据共享最好的是()。

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、三个阶段相同

标准答案:C

知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段

和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在

各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。

5、下面描述中不属于数据库系统特点的是()。

A、数据共享

B、数据完整性

C、数据冗余度高

D、数据独立性高

标准答案:C

知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,故

C错误。

6、数据库设计中反映用户对数据要求的模式是()。

A、内模式

B、概念模式

C、外模式

D、设计模式

标准答案:C

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数

据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模

式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择

Co内模式乂称物理模式,它给出了数据库物理存储结构与物理存取方法。

7、数据库系统的三级模式不包括()。

A、概念模式

B、内模式

C、外模式

D、数据模式

标准答案:D

知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。

8、软件功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应

用软件的是()。

A、学生成绩管理系统

B、C语言编译程序

C、UNIX操作系统

D、数据库管理系统

标准答案:A

知识点解析:软件按功能分为:应用软件、系统软件、支撑软件。操作系统、编译

程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、C、D都

是系统软件,只有A是应用软件。

9、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有

多名职员。则实体部门和职员间的联系是()。

A、1:1联系

B、m:1联系

C.1:m联系

D、m:n联系

标准答案:C

知识点解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联

系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一

个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。

10、若实体A和B是一对多的联系,实体B和c是一对一的联系,则实体A和C

的联系是()。

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:A和B为一对多的联系,则对于A中的每一个实体,B中有多个实

体与之联系,而B与C为一对一联系,则对于B中的每一个实体,C中至多有一

个实体与之联系,则可奉出对于A中的每一个实体,C中有多个实体与之联系,

所以为一对多联系。

11、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。

A、一对一

B、一对多

C、多对一

D、多对多

标准答案:B

知识点解析:因为一间宿舍可以住多个学生,即多个学生住在一间宿舍中,但一个

学生只能住〜间宿舍,所以实体宿舍和学生之间是一对多的关系。

12、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工

作人员与实体计算机之间的联系是()。

A、一对一

B、一对多

C、多对多

D、多对一

17、在关系数据库中,用来表示实体间联系的是(),

A、属性

B、二维表

C、网状结构

D、树状结构

标准答案:B

知识点解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状

模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。

18、在关系模型中,每一个二维表称为一个()。

A、关系

B、属性

C、元组

D、主码(键)

标准答案:A

知识点解析:关系模型采用二维表来表示,即每个二维表称为一个关系。

19、在满足实体完整性约束的条件下()。

A、一个关系中应该有一个或多个候选关键字

B、一个关系中只能有一个候选关键字

C、一个关系中必须有多个候选关键字

D、一个关系中可以没有候选关键字4.3关系代数

标准答案:A

知识点解析:实体完整性约束要求关系的主键中属性值不能为空值,所以选择A。

A、并

B、自然连接

C、笛卡尔积

D、交

标准答案:D

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B错误。笛卡尔

积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C

错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组,

所以是交运算,选择D。

sT

由关系R

和s通过运算得到关系T,则所使用的运算为()。

A、笛卡尔积

B、交

C、并

D、自然连接

标准答案:D

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的

有序组可知R与S进行的是自然连接操作。

22、有两个关系R、S如下:I°I/L由关系R通过运算得到

关系S,则所使用的运算为()。

A、选择

B、投影

C^插入

D、连接

标准答案:B

知识点解析:投影运算是指对于关系内的域指定可引入新的运算。本题中S是在

原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择

Bo

23、有三个关系R、S和T如下:则关系T是由关系

R和S通过某种操作得到,该操作为()。

A、选择

B、投影

C、交

D、并

标准答案:D

知识点解析:在关系T中包含了关系R与S中的所有元组,所以进行的是并的运

算。

24、有三个关系R、S和T如下:

由关系R和S得到关系T的操作是()。

A、自然连接

B、差

C、交

D、并

标准答案:B

知识点解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以

进行的是差的运算。

ST

BCD

314

由关系R和S得到关系T的操作是()。

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量

必须是相同的属性组,并R在结果中把重复的属性列去掉,所以根据T中元组可

以判断R和S做的是自然连接操作。

26,有两个关系R和S如下:则由关系R得到关系

S的操作是()。

A^选择

B、投影

C、自然连接

D、并

标准答案:A

知识点解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的

部分,是通过选择之后的结果,因此选A。

RT

EABCD

2aLL314

LnE-125

27、有三个关系R、S和T如下:则

由关系R和S得到关系T的操作是()。

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的

结果,符合自然连接,选A。

28、有三个关系R、S和T如下:

由关系R和S得到关系T的操作是()。

A^选择

B、投影

C、交

D、并

标准答案:D

知识点解析:关系T中的元素是关系R和关系S中不同元素的总和,因此为并操

作。

29、有三个关系R、S和T如下:

关系R和S得到关系T的操作是()。

A、选择

B、差

C、交

D、并

标准答案:B

知识点解析:关系T是关系R的一部分,并且将关系R去掉了R和S相同的元

素,符合差操作。

R

ffl

30、有三个关系R、S和T如下:则由关系R和

S得到关系T的操作是()。

A、自然连接

B、交

C、除

D、并

标准答案:c

知识点解析:如果T=R/S,则T称为R除以S的商。在除运算中T的域由R中

那些不出现在S中的域所组成,对于T中的任一有序组,由它与关系S中每个有

序组所构成的有序组均出现在关系R中。所以本题选择C。

31、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多

个共有的()。

A^记录

B、行

C、属性

D、元组

标准答案;C

知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间

有公共域;②通过公共域的等值进行连接,故选C

32、下列关于数据库设计的叙述中,正确的是()。

A、在需求分析阶段建立数据字典

B、在概念设计阶段建立数据字典

C、在逻辑设计阶段建立数据字典

D、在物理设计阶段建立数据字典

标准答案:A

知识点解析:数据字典是在需求分析阶段建立的,并在数据库设计过程中不断修

改、充实和完善。

33、数据库设计过程不包括()。

A、概念设计

B、逻辑设计

C、物理设计

D、算法设计

标准答案:D

知识点解析:数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、

数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。

34、在数据库设计中,将E・R图转换成关系数据模型的过程属于()。

A、需求分析阶段

13、概念设计阶段

C、逻辑设计阶段

D、物理设计阶段

标准答案:C

知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库

中,即设计出表,所以属于逻辑设计阶段。

35、将E-R图转换为关系模式时,实体和联系都可以表示为()。

A、属性

B、键

C、关系

D、域

标准答案:C

知识点解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示

成关系,在E-R图中属性也可以转换成关系的属性。

36、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),

课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为

()o

A、课号,成绩

B、学号,成绩

C、学号,课号

D、学号,姓名,成绩

标准答案:c

知识点。析:学号是学生表s的主键,课号是课程表c的主键,所以选课表SC的

关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择

Co

家二级C语言机试(选择题)模拟试

卷第2套

一、选择题(本题共40题,每题1.0分,共40分。)

1、下列叙述中正确的是

A、算法的效率只与问题的规模有关,而与数据的存储结构无关

B、算法的时间复杂度是指执行算法所需要的计算工作量

C、数据的逻辑结构与存储结构是一一对应的

D、算法的时间复杂度与空间复杂度一定相关

标准答案:B

知识点解析:算法的效率与问题的规模和数据的存储结构都有关,入错误。算法的

时间复杂度,是指执行算法所需要的计算工作量,B正确。由于数据元素在计算机

存储空间中的位置关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不是

一一对应的,C错误。算法的时间复杂度和空间复杂度没有直接的联系,D错误。

2、下列叙述中正确的是

A、线性表链式存储结构的存储空间一般要少于顺序存储结构

B、线性表链式存储结构与顺序存储结构的存储空间都是连续的

C、线性表链式存储结构的存储空间可以是连续的,也可以是不连续的

D、以上说法均错误

标准答案:C

知识点解析:线性表的顺序存储结构具备如下两个基本特征:(1)线性表中的所

有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻

辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的结点,这组存储单

元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上

的。因此C正确。

3、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结

点在第1层)

A、3

B、6

C、8

D、12

标准答案:D

知识点解析:二叉树中,度为。的节点数等于度为2的节点数加1,即n2=n(M,

叶子节点即度为On0=l,则n2=0,总节点数为12=n0+nl+n2=l+nl+0,则度为1

的节点数=故深度为12,选D。

4.对长度为n的线性表作快速排序,在最坏情况下,比较次数为

A、n

B、n-1

C、n(n-l)

D、n(n-l)/2

标准答案:D

知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比

较(n-l)+(n-2)+...+l=n(n-l)/2,选D。

5、结构化程序设计中,下面对got。语句使用描述正确的是

A、禁止使用goto语句

B、使用goto语句程序效率高

C、应避免滥用goto语句

D、以上说法均错误

标准答案:C

知识点解析:结构化程序设计中,要注意尽量避免gol。语句的使用,故选C。

6、下面不属于软件测试实施步骤的是

A、集成测试

B、回归测试

C、确认测试

D、单元测试

标准答案:B

知识点解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。

7、下面不属于软件需求分析阶段主要工作的是

A、需求变更申请

B、需求分析

C、需求评审

D、需求获取

标准答案:A

知识点解析:需求分析阶段的工作可概括为4个方面:①需求获取。②需求分

析。③编写需求规格说明书。④需求审评。

8、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个

共有的

A、记录

B、行

C、属性

D、元组

标准答案:C

知识点解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间

有公共域;②通过公共域的等值进行连接,选C。

9、有三个关系R、S和T如下:区则由关系R和S得到关系T的操作是

A、选择

B、差

C、交

D、并

标准答案:B

知识点解析:关系T是关系R的一部分,并且是关系R去掉R和S相同的元素,

符合差操作。

10、有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司C(公

司号,公司名,地址,注册资本,法人代表,员工数),职员S(职员号,姓名,

性别,年龄,学历),工作w(公司号-,职员号,工资),则表W的键(码)为

A、公司号,职员号

B、职员号,工资

C、职员号

D、公司号,职员号,工资

标准答案:A

知识点解析:由于职员可以再多加公司兼职,表W的键(码)应为公司关系和职

员关系的主码,即公司号和职员号。

11、以下叙述中正确的是

A、每个后缀为.C的C语言源程序都可以单独进行编译

B、每个后缀为.C的C语言源程序都应该包含一个main函数

C、在C语言程序中,main函数必须放在其他函数的最前面

D、在C语言程序中,只有main函数才可单独进行编译

标准答案:A

知识点解析:一个普通的C函数可以单独作为一个C的程序文件存在被包含到其

他程序中,每个后缀为C的C语言源程序都可以单独进行编译,所以B,D错误,

main函数可以放在程序的开始,中间,最后,所以C错误。

12、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的

A、关键字可用作用户标识符,但失去原有含义

B、预定义标识符可用作用户标识符,但失去原有含义

C、在标识符中大写字母和小写字母被认为是相同的字符

D、用户标识符可以由字母和数字任意顺序组成

标准答案:B

知识点解析:关键字不可用作C语言的标识符,所以A错误,在标识符中大写字母

与小写字母作为不同字符处理,所以C错误?标识符由下划线,字母,数字组成,且

必须以下划线和字母开始,所以D错误。

13、以下选项中合法的常量是

A、999

B、2.7e

C、OXab

D、123E0.2

标准答案:C

知识点解析:A选项中含有非法的空格,所以错误,C语言中十六进制常量以Ox开

头,所以C正确?实型常量中e的前后必须均有数据,且其后必须为整数,所以B和D

错误。

14、C语言主要是借助以下哪种手段来实现程序模块化

A、定义函数

B、定义常量和外部变量

C、使用丰富的数据类型

D、使用三种基本结构语句

标准答案:A

知识点解析:C语言程序的模块化通过函数来体现,所以选择Ao

15、以下叙述中错误的是

A、数值型常量有正值和负值的区分

B、常量可以用一个符号名来代表

C、定义符号常量必须用类型名来设定常量的类型

D、常量是在程序运行过程中值不能被改变的量

标准答案:C

知识点谕析:数值型常量有整型常量,实型常量,不论是整型常量还是实型常量都有

正值和负值之分,所以A正确,在C语言的预编译处理中,可以用符号名代表一个常

量,定义时不必指定常量类型,所以C错误,B正确?常量的定义就是常量是在程序运

行过程中值不能被改变的量,所以D正确。

16、若有定义和语句:inta,b;scanf("%d,%d,",&a,&b);以下选项中的输入数据,不

能把值3赋给变量a、5赋给变量b的是

A、3,5,4

B、3,4,5

C、3,5,

D、3,5

标准答案:D

知识点解析:scanf()的格式控制中可以使用其他非空白字符,如本题中的逗号,但在

输入时必须输入这些字符,以保证匹配?所以在3和5之间必须输入逗号,不能有其他

符号,才能保证a和b的正确赋值?所以选择Do

17、C语言中char类型数据占字节数为

A、1

B、2

C、3

D、4

标准答案:A

知识点解析:每个字符变量被分配一个字节的内存空间。因此A选项正确。

18、下列关系表达式中,结果为“假”的是

A、3<=4

B、(3<4)==1

C、(3+4)>6

D、(3!=4)>2

标准答案:D

知识点解析:B选项中,关系表达式(3V4)==1即1==1,结果为真;C选项中,

(3+4)>6即7>6,结果为真;A选项中,3V=4结果为真。D选项中,(3!=4)>2即

1>2,结果为假。因此D选项正确。

19、若以下选项中的变量a,b,y均己正确定义并赋值,则语法正确的switch语句是

A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;)

B、switch(a+b)(easel:case3:y=a+b;break;caseO:case4:y=a-b;)

C>switch(a+9){casea:y=a-b;caseb:y=a+b;}

D、switcha*b{case10:y=a+b;default:y=a-b;)

标准答案:A

知识点解析:switch语句,其一般形式为:switch(表达式){case常量表达式1:语

句1;case常量表达式2:语句2;…case常量表达式n:语句n;default:语句n+1;)B

选项中,easel和case2有错误,;C选项中,casea和caseb不正确,case后面应

该跟常量表达式;D选项中,switcha*b,有误。因此A选项正确。

20N有以下程序#includemain(){inta=-2,b=0;while(a++&&++b);

printf("%d,%d\n';a,b);}程序运行后输出结果是

A、0,2

B、0,3

C、1,3

D、1,2

标准答案:D

知识点解析:本题重点考察while语句,变量a和b分别赋初值为-2和1,while语

句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。a++即a参

与运算后,a的值再自增1。++b即b自增1后再参与其它运算。当表达式的值为0

时,退出循环,最后输出a和b的值为1和2。因此D选项正确。

21、设有定义:intx=O、*p;紧接着的赋值语句正确的是

A、"NULL;

B、p=NULL;

C>p=x;

D、*p=x;

标准答案:B

知识点解析:题目中定义指针变量p,指针变量的赋值只能赋予地址,决不能瞰予

任何其它数据,否则将引起错误。不允许把一个数赋予指针变量,被赋值的指针变

量前不能再加”承说明符,因此B选项正确。

22、下列叙述中正确的是

A、空字符串不占用内存,其内存空间大小是0

B、两个连续的单引号(-)是合法的字符常量

C、可以对字符串进行关系运算

D、两个连续的双引号(心)是合法的字符串常量

标准答案:D

知识点解析:字符串常量是由一对双引号括起的字符序列。A选项描述不正确。B

选项描述的不够完善:字符常量占一个字节的内存空间。D选项正确:字符常量是

用单引号括起来的一个字符。C语言字符串比较不能直接用关系运算符进行正确比

较。可以用字符串比较函数strcmp来实现,C选项是错误的;字符串常量占的内

存字节数等于字符串中字节数加1。因此D选项正确。

23、有以卜程序^includemain(){chara='H';a=(a>=,A,&&aV=Z)?(a+32):

a;printfC'%c\n';a);)程序运行后的输出结果是

A、H

B、h

C、A

D、a

标准答案:B

知识点解析:条件运算符构成的选择结构的一般形式为:表达式1。表达式2。

表达式3。其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表

达式的值,否则以表达式2的值作为整个条件表达式的值。该题目中首先给字符

变量a赋值为,语句a=(a>=,A,&&aV=,Z>(a+32):a;即将大写字母变为小写字

母c因此R选项iF确c

24、有以卜程序#includeintf(intx);main(){inta,b=0;for(a=0;a<3;a+=l){b

+=f(A);putchar('A'+b);}}intf(intx)(returnx*x+l;}程序运行后输出结果是

A、ABE

B、BCD

C、BDI

D、BCF

标准答案:C

知识点解析:在函数main()中,第一次执行for循环时,b的值等于1,此时输出

字母B;第二次执行for循环时,b的值等于3,此时输出字母D;第三次执行for

循环时,b的值等于8,此时输出字母I。因此C选项正确。

25、设有定义:intx[2][3];则以下关于二维数组x的叙述错误的是

A、元素x[0]可看作是由3个整型元素组成的一维数组

B、数组x可以看作是由x|0]和x[1]两个元素组成的一维数组

C、可以用x[0]=0;的形式为数组所有元素赋初值0

D、x[0]和x[l]是数组名,分别代表一个地址常量

标准答案:C

知识点0析:x[0]可看作是由3个整型元素组成的一维数组,不可以用语句

x[0]=0;为数组所有元素赋初值0。因此C选项正确。

26、设p是指针变量,语句p=NULL;等价于

A、p='0';

B、p=";

C、p”;

D、p=0;

标准答案:D

知识点解析:p=NULL;等价p=0;因此D选项正确。

27、有以下程序#includemain(){inta[]={10,20,30,40),*p=a,i;for(i=0;i<=3;

i++){a|i]=*p;p++;)printf(n%d\nH,a|2|);}程序运行后的输出结果是

A、10

B、20

C、30

D、40

标准答案:C

知识点解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数

组a中的元素的值不变。因此C选项正确。

28、有以下程序#include#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<

N;i++){b[i]=a[i][0];for(j=l;j<N;j++)if(b[i]<a[i][j])b[i]=a[i][j];))main()

{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;

i++)printf("%d/;y[i]);printf("\n");}程序运行后的输出结果是

A、3,5,7

B、1,3,5,

C、2,4,8,

D、3,6,9,

标准答案:D

知识点解析:函数fun()的作用是求出二维数组叫[N]中每一行中的最大元素,所以

在main()函数中执行完「un(x,y)后,数组y中的元素为二维数组x[N]|N|每一行的最

大元素。因此D选项正确。

29、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)include

#includemain(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);

puts(slrcat(a,c+1));)程序运行后的输出结果是

A、al2xyz

B>bc2yz

C^a2yz

D、12yz

标准答案:C

知识点解析:本题考查字符串处理函数strcpy和strcat,执行完strcpy(a+1,b+2);

后,a变为a2,执行完strcat(a,c+1)后,a变为a2yz,所以答案为C选项。

30、以下选项中,没有编译错误的是

A、charstr3[]={'d','e','b','u','g',''0'};

B>charstr“5J="pass",str2l6J;str2=strl;

C、charname[10];name="china";

D^charstr4[];str4="helloworld";

标准答案:A

知识点解析:B选项中,不能直接将字符数组名直接赋值给另一个字符数组名。C

选项赋值错误,不能将一个字符串常量赋值给一个字符指针。D选项定义str4时需

要定义其长度。

31、有以下程序#includemain(){char*s="12134f,;intk=0,a=0;while(s[k+1])

{k++;if(k%2==0){a=a+(s[k]-U+1);continue;}a=a+(s[k]-O);}

printf(nk=%da=%d\n';k,a);)程序运行后的输出垢果是

A、k=5a=15

B、k=4a=12

C、k=6a=11

D、k=3a=14

标准答案:B

知识点解析:当k=0时,执行while一次,得到k=l,a为2;当k=l时,执行

while一次,得到k=2,a为4;当k=2时,执行while一次,得到k=3,a为7;当

k=3时,执行while一次,得到k=4,a为12;所以答案为B选项。

32、有以下程序#includcmain(){chara[5][10]={”onc","two","three",“four”,

“five”};intij;chart;for(i=0;i<2;i++)for(j=i+l:j<5;j++)if(a[i][0]>a[j][0])

{t=a[i][0];a[i][0]=a[j][0];a[j][O]=t;}puts(a[l]);)程序运行后的输出结果是

A、owo

B>fwo

C、two

D、fix

标准答案:B

知识点解析:考查二维数组兀索的引用。当i为0时,代码处理结果为第一个字符

串的第一个字符与第四个字符串的第一个字符调换,当i为1时,代码处理结果为

第而个字符串的第一个字符与第五个字符串的第一个字符调换,所以a[l]为fwo。

33、有以卜程序#includeinta=l,b=2;voidfun1(inta,intb){printf("%d%dM,a,

b);)voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf("%d%d\n",a,b);}程

序运行后的输出结果是

A、5612

B、3456

C、1256

D、5634

标准答案:D

知识点解析:funl函数中的a、b为局部变量,fun2函数中的a、b为全局变量。执

行funl函数后输出5,6执行完fun2后a变为3,b变为4,所以结果为3,4D选项

正确。

34、有以卜程序#includevoidfunc(intn){staticintnum=1;num+=n;printf(M%d”,

num);}main(){func(3);func(4);printf("\nM);}程序运行后的输出是

A、45

B、48

C、35

D、34

标准答案:B

知识点解析:本题中num为静态局部变量,执行fun⑶后,输出4,执行fun(4)后

输出8,所以选项B正确。

35、有以下程序#include#includevoidfun(int*pl,int*p2,int*s)

{s=(int*)calloc(1,sizeof(int));*s=*p1+*p2;free(s);}main(){inta[2]={1,2},

b[2]={40,50),*q=a;fun(a,b,q);printf(H%d\n,',*q);}程序运行后的输出结果是

A、42

B、41

C、1

D、0

标准答案:C

知识点解析:本题考查卫数组名作为函数参数,执行fun函数后,s的值并没有发

生变化,仍然是指向a,所以输出结果为1,选项C正确。

36、有以卜程序#includestructSTU{charname|9];charsex;intscore|2|;};void

RstructSTUa[]){structSTUb={"Zhao",'m',85,90};a[l]=b;}main(){struct

STUc[2]={{“Qian”,中,95,92},{“Sun”98,99}};Re);printf(M%s,%c,%d,%d,",

c[0].name,c[0].sex,c[0].score[0],c[0].score[l]);printf("%s,%c,%d,%d\n",c[l].name,

c[l].sex,c[l].score[0],c[l].score[l]);)程序运行后输出结果是

A、Qian,f,95,92,Sun,m,98,99

Qian,f,95,92,Zhao,m,85,90

C、Zhao,m,85,90,Sun,m.98,99

D、Zhao,m,85,90,Qian,£95,92

标准答案:B

知识点解析:本题考查卫数组名作为函数参数,执行f函数后,结构体数组c的第

二个元素被改写,c[l].name为Zhao,选项B正确。

37、以下叙述中错误的是

A、用typedef可以说明一种新的类型名

B、typcdcf的作用是用一个新的标识符来代表已存在的类型名

C、可以用typedef说明的新类型名来定义变量

D、typedef说明的新类型名必须使用大写字母,否则会出编译错误

标准答案:D

知识点解析:本题考查lypedef的使用方法,typedef对已存在的类型使用一个新的

名字,新类型可以使用小写,所以D选项错误。

38、以下叙述中错误的是

A、只要类型相同,结构体变量之间可以整体赋值

B、函数的返回值类型不能是结构体类型,只能是简单类型

C、可以通过指针变量来访问结构体变量的任何成员

D、函数可以返回指向结构体变量的指针

标准答案:B

知识点解析:本题考查结构体相关知识,函数返回值可以是结构体,所以B选项

错误。

39、若有定义语句intb=2;则表达式(b<<2)/(3||b)的值是

A、0

B、2

C、4

D、8

标准答案:D

知识点解析:本题考查位运算<<、/,以及逻辑运算符||。卜<2为8,33世为1,所

以结果为8,所以D选项正确。

40、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,345,6};fp=

fopen("d2.dat","w+H);for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for

(i=0;i<6;i++)fscanf(fp,"%d",&a|5-i]);fclose(fp);for(i=0;i<6;i++)

printf(a[i]);}程序运行后输出结果是

A^1,2,3,4,5,6,

B、6,5,4,321,

C、4,5,6,1,2,3,

D、1,2,3321,

标准答案:B

知识点解析:本题考查文件操作函数,fprinlf和rewind函数,rewind函数将文件

内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组.a的

六个数写入d2文件中,然后又将a数组从后往前覆盖到d2中的内容,所以结果为

6,5,4,3,2,1,选项B正确。

国家二级C语言机试(选择题)模拟试

卷第3套

一、选择题(本题共28题,每题1.0分,共28分。)

1、若有以下定义:intx[10],*pt=x:则对x数组元素的正确引用是()。

A、pt+3

B、*&x[10]

C、*(pt+10)

D、*(x+3)

标准答案:D

知识点解析:没有A选项的引用形式.*与&放在一起作用抵消,所以B选项错误

*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为

*(pt+9)o因此D选项正确。

2、若有以下程序:includemain(){inti,s=0,t[]={l,2,3,4,5,6,7,8,

9);for(i=0;i<9;i+=2)s+=*(t+i);printf(,'%d\nM,s);}则程序执行后的输出

结果是()。

A、20

B、25

C、45

D、36

标准答案:B

知识点解析:统计1〜9中的奇数和,此题考查指向数组的指针。C语言规定数组

名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个

元素。程序运行的结果是1+3+5+7+9=25o

3、若有以下程序:#includevoidfun(int*s»intnlintn2){intj,t;i=nl;

j=n2;while(i

A、4321098765

B、5678901234

C、0987654321

D、0987651234

标准答案:B

知识点解析:该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,

0,3);的功能是将一维数组中的第1个元素和第4个元素互换,第2个元素和第3

个元素互换;fun(a,4,9);的功能是将•维数组中的第5个元素和第10个元素互

换,第6个元素和第9个元素互换,第7个元素和第8个元素互换;fun(a,0,

9);的功能是将将一维数组中的第1个元素和第10个元素互换,第2个元素和第9

个元素互换……依次类布。因此B选项正确。

4、若有以下程序:#includemain(){ints[12]={L2,3,4,4,3,2,41,k

2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=l;i<5;i++)printf("%

d,,c[ij);pnnttC\n"):)则程序的运行结果是()。

A、2344

B、4332

C、1234

D、1123

标准答案:B

知识点解析:在for(i=0;i<12;i++)c[s[i]]++;语句中,数组元素s[i]的值作为数

组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2o因此B

选项正确。

5、若有以下程序:#includevoidfun(inta|],intn)(intt,i,j;for(i=l;ia|j])

{t=a[i];a[i]=a[j];a[j]=t;}}main(){inte[10]:{10,9,8,7,6,5,4,3,2,

1),i;fun(c,10);for(i=0;i<10:i++)printf("%d,\e[i]);printf("\n");}则

程序的输出结果是()。

A、1,10,3,8,5,6,7,4,9,2,

B、10,9,8,7,6,5,4,3,2,1,

C、2,9,4,7,6,5,8,3,10,1,

D、10,1,8,3,6,5,4,7,2,9,

标准答案:D

知识点解析:本题主要考查for的嵌套循环。该题首先对一维数组进行初始化,

c[0]到c[9]依次赋值为10到1:fun(c,10);语句调用fun函数,fun函数的功能是

将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输

出。因此D选项正确。

6、若有以下程序:#includemain(){intc[6]={10,20,30,40,50,60),*P,

*s;P=c:s=&c[5]:printf("%d\n",s-P);}则程序运行后的输出结果是()。

A、5

B、50

C、6

D、60

标准答案:A

知识点解析:本题主要考查数组和指针。首先初始化一维数组c[6],语句p=c;指

将c[0]元素的地址赋给指针变量p,语句s=&c[5];指将c[5]元素的地址赋给指针

变量s。程序最后输出s-p,即结果为5。因此A选项正确。

7、若有以下程序:#includemain(){inta[3]={0}»i,j»k=2;for(i=0;i<k;

i++)for(j=0;j<k;j++)a[j]=a[i]+l;printf("%d\a[l]);}则程序运行后的输

出结果是()。

A、0

B、2

C、1

D、3

标准答案:D

知识点解析:该题首先初始化一维数组a[3]所有元素都为0;执行嵌套循环for语

句,当i=0、j=0时,a[0]=a[0]+l=l;当i=0、j=l时,a[l]=a[0]+l=2;当i=l、j=0

时,a[0]=a[l]+l=3;当i=l、j=l时,a[l]=a[l]+l=3;因此D选项正确。

8、有以下程序:#includemain(){inta[5]={2,4,6,8,10),*P,**k;P=a;

k=&p;printfC'^d",*(p++));printfC%d\n",**k);}程序运行后的输出结果

是().

A、46

B、44

C、22

D、24

标准答案:D

知识点解析:本题主要考查指针。首先通过p=a使p指向数组的第I个元素,所以

输出2;在输出2以后,由于p++,即p就指向数组的第2个元素,**k就是取出p

所指向元素的值,而p指向的是数组的第2个元素,即输出4。因此D选项正确。

9、以下叙述中正确的是()。

A、一条语句只能定义一个数组

B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单

C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

D、在引用数组元素时,下标表达式可以使用浮点数

标准答案:B

知识点解析:A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语

句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,也可以

是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因

此B选项正确。

10、以下叙述中正确的是()。

A、数组下标的下限是1

B、数组下标的下限由数组中第一个非零元素的位置决定

C、数组下标的下限由数组中第一个被赋值元素的位置决定

D、charcl,c2,*c3,c4[40];是合法的变量定义语句

标准答案:D

知识点解析:C语言规定,数组下标值的下限一律为0,对于一维数组a[max](max

是一个编译时可知的值)来说,它的第一个和最后一个元素分别是a[0]和a[max-

l]o所以,数组下标值的下限与数组中元素的位置无关,故A、B、c选项错误。

11、有以下程序:#include#defineN4voidfun(inta[][N],intb[]){inti;

tor(i=0;i

A、1,0,7,0,

B、1,2,3,4,

C、1,4,5,9,

D、3,4,8,10,

标准答案:A

知识点解析:该程序首先在定义变量时,对二维数组x[|[N]进行赋值操作;调用函

数fun,函数firn的功能是将二维数组中的a[0][0]、a[l][lj.a⑵⑵和a[数3]赋值给

一维数组。最后将输)1{一维数组1.0、7,0,o

12、有以下程序:#includeintfun(int(*s)|4],int11,intk){intm,i;

m=s[0][k];for(i=l;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;)main(){int

a[4][4]={{l,2,3,4),{11,12,13,14},{21,22,23,24),(31,32,33,

34)};printfC^d\nH,fun(a,4,0));}程序的运行结果是()。

A、4

B、34

C、31

D、32

标准答案:C

知识点解析:本题重点考查二维数组名作为实参进行参数传递。在主函数中调用了

fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有

三种形式,这里采用第一种形式,也就是行指针,这样在fun函数对进行操

作实际就是对主函数中的进行操作,再分析fun甬数的作用,其是求二维数

组第0列中最大的那个元素。因此C选项正确。

13、有以下程序:includemain(){inta[4][4]={{1,4,3,2},{8,6,5,7),

{3,7,2,5),{4,8,6,1});inti,j,k,t;for(i=0;i<4;i++)fbr(j=O;

j<3;j++)for(k=j+l;k<4:k++)if(a[j][i]>a[k][i]){t=a[j][i];aij][i]=a[k][i];

M

a[k][i]=t:}/*按列排序*/for(i=0;iV4;i++)printf(%d,",a[i][i]);}程序运

行后的输出结果是()。

A、1,6,2,1,

B、8,7,3,1♦

C、4,7,5,2,

D、1,6,5,7,

标准答案:D

知识点解析:首先对二维数组进行赋值操作,a[0][0],a[O][l],...»a[3][2],

a[3][3]的值为1,4,6,lo通过for语句和if语句,对二维数组各列元素进行

由小到大的排序操作,程序最后通过for语句输出二维数组对角线上的元素。因此

D选项正确。

14、有以下程序:includemain(){inti,t[][3]:{9,8,7,6,5,4,3,2,1);

for(i=0;i<3;i++)printfC'%d",t[2-i][i]);}程序执行后的输出结果是()。

A、357

B、753

C、369

D、751

标准答案:A

知识点解析:二维数组川[3]实际上指t[3][3]={{9,8,7},{6,5,41,(3,2,

1}},通过循环语句for语句可以得到i=0,t⑵⑼=3;i・Li=2,

t⑼⑵=7;i=3时循环结束,即t⑵⑼=3,t⑼⑵=7。因此A选项正确。

15,有以下程序:includemain(){intaE4][4]:({b4,3,2),{8,6,5,7),

{3,7,2,5},{4,8,6,1)),i>k,t;for(i=0;i<3;i++)for(k=i+l;k<4;

k++)if(a[i][i]

A、1,1,2,6,

B、6,2,1,1,

C、6,4,3,2,

D、2,3,4,6,

标准答案:C

知识点解析:首先对二维数组进行赋值操作,a[0]⑼,a|0||l],a[3][2],

a「3U3]的值为1,4,…,6,lo通过for嵌套循环语句和if条件语句,对二维数组

对角线元索进行由大到小的排序操作,程序最后通过for语句输出二维数组第1行

的4个元素。因此C选项正确。

16、若有定义语句:chars[10]="1234567\0\0,r:则strlen(s)的值是()。

A、7

B、8

C、9

D、10

标准答案:A

知识点解析:strlen。函数的功能是计算字符串长度时,遇到结束标识为止,且长度

不包括结束标识。本题中,从第一一个字符开始,遇到第一个结束标识''0'为

止,注意、0,不占字符串长度,所以字符串长度为7。因此A选项正确。

17、有以下程序:includeincludemain(){charP[20]={,a\'b',V,d},

q[]=',abc",r[]="abcde";strcat(P,r);strcpy(P+strlen(q),q);printf(H%d\n",

strlen(P));}程序运行后的输出结果是()。

A、11

B、9

C、6

D、7

标准答案:C

知识点解析:strcpy:字符串复制函数;strlcn:求字符串长度函数(注意:不包含字

符串结束标记字符'\0');sircat:字符串连接函数。执行完语句sWcal(p,r);后,

p数组中存储的元素为a,b,c,d,a,b,c,d,e;执行语句strcpy(p+strlen(q),

q);得到的结果是将q所指向的字符串复制至p+8Ecn(q)开始的存储位置,因为

slrlen的值为3,即p+3开始存储q中的元素。所以执行完slrcpy(p+strlen(q),4)语

句后,字符数组p[20]的存储元素为a,b,c,a,b,c;所以stHen(p)的结果为6。

因此C选项正确。

18、有以下程序(strcat函数用以连接两个字符串):#include#includemain(){char

a[20]=,,ABCD\0EFG\0n,b[]="UKn;strcat(a,b);printf("%s\n",a);}程序

运行后的输出结果是()c

A、UK

B、ABCDE\OFG\OUK

C、ABCDIJK

D、EFGIJK

标准答案:C

知识点解析:字符数组a中包含两个、(T,遇到第一个、(T时就表示字符串a结

束。字符串处理函数strcal(字符数组a,字符数组B)的功能是连接两个字符数组中

的字符串,把字符串b连接到a的后面,结果放在字符数组a中。连接时将字符串

a后的〜(T取消,只在新串最后保留一个、0屋本题相当于将“ABcD”和“IJK”连

接。因此C选项正确。

19、有以下程序段:charname[20];intnum:scanf("name=%snum=/^d",

name,&num);当执行上述程序段,并从键盘输入:name二Lilinum=1001v回车,

后,name的值为()。

A、name=Libnum=l001

B、name=Lili

C、Lilinum=

D、Lili

标准答案:D

知识点解析:在输入格式控制"name=%snum=%dl,中,普通字符"name=num="在

输入时要原样输入,而格式控制符“%s”和“%d”对应各自的输入项,将输入的数据

赋给相应的输入项。本题中输入“name=Lilinum=1001v回车〉”后,将字符串“Uli赋

给字符数组name,整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论