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

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

1、国家二级( C语言)机试模拟试卷 41及答案与解析 一、选择题 1 下列链表中,其逻辑结构属于非线性结构的是 ( A)二叉链表 ( B)循环链表 ( C)双向链表 ( D)带链的栈 2 设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过一系列入队与退队运算后, front=15, rear=15,则循环队列中的元素个数为 ( A) 15 ( B) 16 ( C) 20 ( D) 0或 35 3 下列关于栈的叙述中,正确的是 ( A)栈底元素一定是最后入栈的元素 ( B)栈顶元素 一定是最先入栈的元素 ( C)栈操作遵循先进后出的原则 ( D)以上说法均错误

2、 4 在关系数据库中,用来表示实体间联系的是 ( A)属性 ( B)二维表 ( C)网状结构 ( D)树状结构 5 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是 ( A) 1: 1联系 ( B) m: 1联系 ( C) 1: m联系 ( D) m: n联系 6 有三个关系 R和 S如下: 则由关系 R得到关系 S的操作是 ( A)选择 ( B)投影 ( C)自然连接 ( D)并 7 数据字典( DD) 所定义的对象都包含于 ( A)数据流图( DFD图 ) ( B)程序流程图 ( C)软件结构图 ( D)方框图 8 软件需求规格说明书

3、的作用不包括 ( A)软件验收的依据 ( B)用户与开发人员对软件要做什么的共同理解 ( C)软件设计的依据 ( D)软件可行性研究的依据 9 下面属于黑盒测试方法的是 ( A)语句覆盖 ( B)逻辑覆盖 ( C)边界值分析 ( D)路径覆盖 10 下面不属于软件设计阶段任务的是 ( A)软件总体设计 ( B)算法设计 ( C)制定软件确认测试计 划 ( D)数据库设计 11 以下叙述中正确的是 ( A) N S流程图只能描述简单的顺序结构的程序 ( B)程序的算法只能使用流程图来描述 ( C)结构化程序的三种基本结构是循环结构、选择结构、顺序结构 ( D)计算机可以直接处理 C语言程序,不必

4、进行任何转换 12 以下叙述中正确的是 ( A)书写源程序时,必须注意缩进格式,否则程序会有编译错误 ( B)程序的主函数名除 main外,也可以使用 Main或 _main ( C)程序可以包含多个主函数,但总是从第一个主函数处开始执行 ( D)在 C程序中,模块 化主要是通过函数来实现的 13 C语言中 double 类型数据占字节数为 ( A) 4 ( B) 8 ( C) 12 ( D) 16 14 以下叙述中正确的是 ( A)语言中的关键字不能作变量名,但可以作为函数名 ( B)标识符的长度不能任意长,最多只能包含 16个字符 ( C)标识符总是由字母、数字和下划线组成,且第一个字符不

5、得为数字 ( D)用户自定义的标识符必须 “见名知义 “,如果随意定义,则会出编译错误 15 以下叙述中正确的是 ( A)由 printf输出的数据都隐含左对齐 ( B) scanf和 printf是 C语言提供的输入和输出语句 ( C)赋值语句是一种执行语句,必须放在函数的可执行部分 ( D)由 printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的 16 以下叙述中正确的是 ( A)复合语句在语法上包含多条语句,其中不能定义局部变量 ( B)花括号对 只能用来表示函数的开头和结尾,不能用于其他目的 ( C)空语句就是指程序中的空行 ( D)当用 scanf从键盘输入数

6、据时,每行数据在没按下回车键( Enter键 ) 前,可以任意修改 17 以下叙述中正确的是 ( A) 在 C语言中,逻辑真值和假值分别对应 1和 0 ( B)关系运算符两边的运算对象可以是语言中任意合法的表达式 ( C)对于浮点变量 x和 y,表达式: x=y 是非法的,会出编译错误 ( D)分支结构是根据算术表达式的结果来判断流程走向的 18 以下叙述中正确的是 ( A)对于逻辑表达式: a+ | b+,设 a的值为 1,则求解表达式的值后, b的值会发生改变 ( B)对于逻辑表达式: a+ int * p2; int *p3;都是合法的定义指针变量的语句 ( B)指针变量只能通过求地址运

7、算符( 与 p=0;是等价的语句 ( D)语句 p=NULL;执行后,指针 p指向地址为 0的存储单元 25 以下叙述中正确的是 ( A)即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同 ( B)如果企图通过一 个空指针来访问一个存储单元,将会得到一个出错信息 ( C)设变量 p是一个指针变量,则语句 p=0;是非法的,应该使用 p=NULL; ( D)指针变量之间不能用关系运算符进行比较 26 以下叙述中正确的是 ( A)一条语句只能定义一个数组 ( B)每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 ( C)数组说明符的一对方括号中只能使用整

8、型常量,而不能使用表达式 ( D)在引用数组元素时,下标表达式可以使用浮点数 27 以下叙述中正确的是 ( A)数组下标的下限是 1 ( B)数组下 标的下限由数组中第一个非零元素的位置决定 ( C)数组下标的下限由数组中第一个被赋值元素的位置决定 ( D) char c1, c2, *c3, c440;是合法的变量定义语句 28 以下叙述中正确的是 ( A)语句 int a8 = 0; 是合法的 ( B)语句 int a = 0;是不合法的,遗漏了数组的大小 ( C)语句 char a2 = “A“, “B“; 是合法的,定义了一个包含两个字符的数组 ( D)语句 char a3; a =

9、“AB“; 是合法的,因为数组 有三个字符空间的容量,可以保存两个字符 29 下面选项中的程序段,没有编译错误的是 ( A) char* sp, s10; sp = “Hello“; ( B) char* sp, s10; s = “Hello“; ( C) char str110 = “computer“, str210; str2 = str1; ( D) char mark; mark = “PROGRAM“; 30 以下叙述中正确的是 ( A)字符串常量 “str1“的类型是 :字符串数据类型 ( B)有定义语句: char str1 = “str1“; ,数组 str1将包含 4个元

10、素 ( C)下面的语句用赋初值方式来定义字符串,其中 ,0是必须的 char str1 = s, t, r, 1, 0; ( D)字符数组的每个元素可存放一个字符,并且最后一个元素必须是 0字符 31 以下叙述中正确的是 ( A)字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 ( B) char ca35 = “A“, “BB“, “CCC“; 是不合语法的 ( C) char ca 5 = “A“, “BB“, “CCC“; 是不合语法的 ( D) char *ca3 = “A“, “BB“, “CCC“; 是不合语法的 32 以下叙述中正确的是 ( A)两个字符串可以用关系运

11、算符进行大小比较 ( B)函数调用 strlen(s);会返回字符串 s实际占用内存的大小(以字节为单位 ) ( C) C语言本身没有提供对字符串进行整体操作的运算符 ( D)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 33 以下叙述中正确的是 ( A)如果函数 带有参数,就不能调用自己 ( B)所有函数均不能接受函数名作为实参传入 ( C)函数体中的语句不能出现对自己的调用 ( D)函数名代表该函数的入口地址 34 以下叙述中正确的是 ( A)局部变量不能被说明为 static ( B)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 ( C)只有在函数内部定

12、义的变量才是局部变量 ( D)只要是用户定义的标识符,都有一个有效的作用域 35 下面选项中关于编译预处理的叙述正确的是 ( A)预处理命令行必须使用分号结尾 ( B)凡是以 #号开头的行,都被称 为编译预处理命令行 ( C)预处理命令行不能出现在程序的最后一行 ( D)预处理命令行的作用域是到最近的函数结束处 36 以下叙述中正确的是 ( A)使用 typedef说明新类型名时,其格式是: typedef 新类型名 原类型名 ; ( B)在程序中,允许用 typedef来说明一种新的类型名 ( C)使用 typedef 说明新类型名时,后面不能加分号 ( D)在使用 typedef改变原类型

13、的名称后,只能使用新的类型名 37 以下叙述中正确的是 ( A)结构体类型中各个成分的类型必须是一致的 ( B) 结构体类型中的成分只能是 C语言中预先定义的基本数据类型 ( C)在定义结构体类型时,编译程序就为它分配了内存空间 ( D)一个结构体类型可以由多个称为成员(或域 ) 的成分组成 38 以下叙述中正确的是 ( A)使用 typedef定义新类型名后,新类型名与原类型名实际上是等价的 ( B)结构体类型中的各个成分均不能是数组或指针 ( C)结构体类型的变量,不能在声明结构体类型组成时一起定义 ( D)元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 39 下面选项中

14、关于位运算的叙述正确的是 ( A)位运算的对象只能是整型或字符型数据 ( B)位运算符都需要两个操作数 ( C)左移运算的结果总是原操作数据 2倍 ( D)右移运算时,高位总是补 0 40 下面选项中关于 “文件指针 “概念的叙述正确的是 ( A)文件指针是程序中用 FILE定义的指针变量 ( B)文件指针就是文件位置指针,表示当前读写数据的位置 ( C)文件指针指向文件在计算机中的存储位置 ( D)把文件指针传给 fscanf函数,就可以向文本文件中写入任意的字符 二、程序填空题 41 下列给定程序中,函数 fun的功能是:在形参 s所指字符串中寻找与参数 c相同的字符,并在其后插入一个与之

15、相同的字符,若找不到相同的字符则不做任何处理。 例如,若 s所指字符串为 “baacda”, c中的字符为 a,执行后 s所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(char*s, char c) int i, j, n; /*found*/ for(i=0, Si!=【 1】 ; i+) if(Si=c) /*found*/ n=【 2】 ; while(si+1+n!= 0)n+, for(j

16、=i+n+1;j i; j一一 ) sj+1=sj; /*found*/ Sj+1=【 3】 ; i=i+1; main() char s80=“baacda”, c; printf(“ nThe string: S n”, S), printf(“ nInput a character: ”), Scanf(“ C”, C); fun(s, c), printf(“ nThe result is: S、 n”, S); 三、程序修改题 42 下列给定程序中函数 fun的功能是:计算并输出 high以内最大的 10个素数的和。 high的值由主函数传给 fun函数。 例如,若 high的值为

17、100,则函数的值为 732。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h #include math h int fun(int high) int sum=0, n=0, j, yes; /*found*/ while(high =2) (n 10) yes=1; for(j=2; j =high 2; j+) if(high%j=0) /*found*/ yes=0; break if(yes) sum+=high; n+: high一一

18、; return sum; main() printf(“ dn”, fun(100); 四、程序设计题 43 编写函数 fun,其功能是:计算 n门课程的平均分,结果作为函数值返回。 例如,若有 5门课程的成绩是: 90 5, 72, 80, 61 5, 55,则函数的值为71 80。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h float fun(float*a, int n) void main() float score30=(90 5, 72, 80, 61

19、 5, 55), aver, aver=fun(score, 5); printf (“nAverage score is: 5 2f n”, aver); 国家二级( C语言)机试模拟试卷 41答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针) ,也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方

20、式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为 A选项。 2 【正确答案】 D 【试题解析】 在循环队列中,用队尾指针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队时尾指针向前 追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为 D选项。 3 【正确答案】 C 【试题解析】 栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈

21、底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或 “后进先出 “表,所以选择C。 4 【正确答案】 B 【试题解析】 关系模型实体间的联系采用二维表来表示,简称表。选项 C为网状模型实体间的联系,选项 D为层次模型实体间的联系,选项 A属性刻画了实体 5 【正确答案】 C 【试题解析】 两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系( 1:1)、一对多联系( 1:m)、多对一联系( m:1)、多对多联系( m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系( 1:m),答案选 C。 6 【

22、正确答案】 A 【试题解析】 由关系 R到关系 S为一元运算,排除 C和 D。关系 S是关系 R的一部分,是通过选择之后的结果,因此选 A。 7 【正确答案】 A 【试题解析】 在数据流图中,对所有元素都进行了命名,所有名字的定义 集中起来就构成了数据字典。因此选 A,而 B, C, D都不符合。 8 【正确答案】 D 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。 便于用户、开发人员进行理解和交流, B正确; 反映出用户问题的结构,可以作为软件开发工作的基础和依据, C正确; 作为确认测试和验收的依据, A正确。

23、9 【正确答案】 C 【试题解析】 黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程 序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为 C。而 A、 B、 D均为白盒测试方法。 10 【正确答案】 C 【试题解析】 从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以 A、 B、 D正确, C为软件测试阶段的任务。 11 【正确答案】 C 【试题解析】 N-S流程图是可以描述循环结构,选择结构,顺序结构等多种结构的程序 ,所以 A选项错误,程序的算法可以用流程图,伪代码, N-S结构图等

24、方法表示 ,所以 B选项错误。计算机只能处理二进制表示的目 标程序 ,不能直接执行由 C语言编写的源程序 ,所以 D选项错误。 12 【正确答案】 D 【试题解析】 C语言的源程序中对缩进没有要求 ,所以 A选项错误, C语言中区分大小写 ,main函数不能写成 Main或 _main,所以 B选项错误,一个 C程序有且只有一个主函数 ,所以 C选项错误。 13 【正确答案】 B 【试题解析】 double型数据在内存中占 8个字节 ,float型数据占 4个字节 ,int型数据占 2个字节 ,char型数据占 1个字节,所以选择 B。 14 【正确答案】 C 【试题解析】 C语 言中的关键字

25、即不能做变量名也不能做用户函数名 ,所以 A错误,标识符的命名规则 ,即由下划线字母数字组成 ,且必须以下划线和字母开始 ,也不能和关键字一致,不同 C语言规定标识符的有效长度可能会不同 ,但没有限制最大长度 ,所以 B错误,用户定义的标识符只要满足标识符命名规则没有特殊要求 ,不必一定 “见名知义 “,所以 D错误。 15 【正确答案】 C 【试题解析】 scanf和 printf是 C语言提供的输入输出函数 ,所以 B错误,由printf输出的数据都隐含右对齐 ,所以 A错误, Printf输出数据所占的宽度由系统决定 ,所以 D错误。 16 【正确答案】 D 【试题解析】 复合语句可以包

26、含多条语句 ,在其中可以定义局部变量 ,所以 A错误。花括号对 不仅用来表示函数的开头和结尾 ,也可以用于表示复合语句 ,所以 B错误。 C语言中的语句必须以分号 “;“结束 ,所以空语句表示为 “;“,不是空行 ,所以 C错误。 17 【正确答案】 B 【试题解析】 A选项中,在 C语言中,逻辑真值对应非 0; C选项中,表达式:x=y 是合法的; D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此 B选项正确。 18 【正确答案】 C 【试题解析】 选项 A中,设 a的值为 1,根据逻辑短路原则,表达式 a+|b+中a+=1,不计算 b+的值,表达式结果为真; B

27、选项中根据逻辑短路原则,表达式a+执行后,指针 p并不是指向地址为 0的存储单元,而是具有一个确定的值 -“空 “。因此 A选项 正确。 25 【正确答案】 B 【试题解析】 A选项描述不正确,指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误; C选项中, p=NULL;和 p=0;是等价的; D选项中,指向同一数组的两指针变量进行关系运算可表示它们所值数组元素之间的关系。因此 B选项正确。 26 【正确答案】 B 【试题解析】 A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组; C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达

28、式; D选项中,在引用数组元素时,下 标表达式必须是整型的。因此 B选项正确。 27 【正确答案】 D 【试题解析】 数组下标的下限是 0。因此 D选项正确。 28 【正确答案】 A 【试题解析】 B选项中,如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数; C选项中, char a2 = “A“, “B“;不合法,应为 char a2 = A, B;; D选项中,用字符串方式赋值比用字符逐个赋值要多占 1个字节,在该选项中应为 3个字节。因此 A选项正确。 29 【正确答案】 A 【试题解析】 本 题考查字符数组的初始化以及指向字符串的指针, B选项不能直接将字符串赋值给数组名,

29、 C选项不能将两个字符数组直接互相赋值, D选项中不能这样定义 char mark,必须指定长度或者直接初始化。 30 【正确答案】 C 【试题解析】 本题考查字符数组的相关操作, B选项中数组 str1包含了 5个元素,其中有结尾符, A选项中 str1的类型不是字符串类型,字符数组的最后一个元素可以不是 0字符 31 【正确答案】 A 【试题解析】 本题考查字符串数组的相关知识,选项 B、 C、 D都是合语法的。 32 【正确答案】 C 【试题解析】 本题考查字符串处理函数 strlen、 strcat、 strcmp。 B选项中 strlen返回的是字符串 s实际占用内存大小加上结尾符,

30、 A选项中不能用关系运算符进行大小比较,可以使用 strcmp。 D选项当使用连接函数 strcat时,内存空间会减少一个字符位置。 33 【正确答案】 D 【试题解析】 本题考查函数调用相关知识, B选项中函数可以接受函数名作为实参传入,引用函数名也是指针, C、 A选项是错误的,因为递归函数就能调用自己。 34 【正确答案】 D 【试题解析】 本题考查局部变量和全局变量作用域, B选项中局部变量也有作用域, C选项中,函数内部定义的也可能是全局变量, A选项错误,因为可以定义个静态局部变量。 35 【正确答案】 B 【试题解析】 本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾

31、,所以 A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件 36 【正确答案】 B 【试题解析】 本题考查 typedef的使用方法, typedef对已存在的类型使用一个新的名字,选项 A总新类型名应该在原类型 名之后, C选项中后面要加分号, D选项中可以使用原类型名。 37 【正确答案】 D 【试题解析】 本题考查结构体类型,结构体类型中的成分可以是结构体,所以 B选项错误,定义结构体时编译程序并不会给它分配内存空间,所以 C选项错误,结构体中各个成分的类型可以是不一样的,所以 A选项错误。 38 【正确答案】 A 【试题解析】 本题考查 typedef的使用

32、方法, typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以 B选项错误,结构体类型的变量可以在声明结构体的时候一起 定义, C选项错误, D选项中可以一起定义。 39 【正确答案】 A 【试题解析】 本题考查位运算。按位取反只需要一个操作数,所以 B选项错误,左移一位是原操作数的 2倍,其他情况不是,比如左移两位就是原操作数的 4倍,所以 C选项错误,右移运算时,高位在某些情况下不是补 0。 40 【正确答案】 A 【试题解析】 在 C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位置指针

33、,所以 BC选项错误, D选项中不可以写入任意的字符。 二、程 序填空题 41 【正确答案】 (1)0 (2)0 (3)c 【试题解析】 填空 1: for语句循环条件是判断是否到达字符串结尾,即当前字符是否为 0。 填空 2: while语句用以确定字符串的长度,所以变量 n赋初值为 0。 填空 3:题目要求如果找到与参数 c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题同给出参数为 c。 三、程序修改题 42 【正确答案】 (1)while(high =2)&(n 10) (2)yes=0; break; 【试题解析】 while循环条件丢掉一个括号;另一处是很简

34、单的程序语法错误,没有加分号。 四、程序设计题 43 【正确答案】 float fun(float*a, int n) float av=0 0; int i; for(i=0; i n, i+) *求分数的总和 * av=av+ai, return(av n); *返回平均值 * 【试题解析】 本题较简单,只需用一个循环语句就可完成数组元素的求和,再将和除以课程数即可。需要注意的是本题 对指针的操作,当指针变量指向一个数组时,用该指针变量引用数组元素,引用方式与数组的引用方式相同。例如,本题中 a指向了 score,所以通过 a引用 score中的元素时可以用下标法,也可以用指针运算法, ai和 *(a+i)具有相同的作用。上标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为 0。例如,若有 int cc10,*p=cc+5;,即 p指向了 cc的第 5个元素,则 p0的作用与 cc5相同; p3的作用是取出从当前地址 (即 p所指地址 )开始往后的第 3个元素,它与 cc8相同; p一2的作用是取出从当前地址开始往前的第 2个元素,它与 cc3相同,但不提倡使用 “负 ”的下标。

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

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

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