1、国家二级( C语言)机试模拟试卷 51 及答案与解析 一、选择题 1 程序流程图中带有箭头的线段表示的是 ( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 结构化程序设计的基本原则不包括 ( )。 ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 3 软件设计中模块划分应遵循的准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A) 可行性分析报告 ( B)软件需求规格说明书 ( C)概要设计说明书 ( D)集成测试计划 5 算法
2、的有穷性是指 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 6 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n 1)/2的排序方法是 ( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 下列关于栈的叙述正确的是 ( )。 ( A)栈按 “先进先出 “组 织数据 ( B)栈按 “先进后出 “组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 在数据库设计中,将 E R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段
3、( B)概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 有三个关系 R、 S和 T如下:由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 10 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ),选 课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 11 以下叙述中错误的是 ( )。 ( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二
4、进制的机器指令 ( B) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( C)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 ( D) C语言源程序经编译后生成后缀为 .obj的目标程序 12 以下选项中 ,合法的一组 C语言数值常量是 ( )。 ( A) 12. 0Xa23 4.5e0 ( B) 028 .5e 3 0xf ( C) .177 4e1.5 0abc ( D) 0x8A 10,000 3.e5 13 以下选项中不合法的标识符是 ( )。 ( A) j+) /*found*/ 【 2】 =tij+tji; /*found*
5、/ 【 3】 =0; main() int i, j, tN=21, 12, 13, 24, 25, 16 ,47,38,29,11, 32,54,42, 21,33, 10; printf(“ nThe original array: n”), for(i=0; i N; i+) for(j=0; j N; j+) printf(“ 2d”, tij); printf(“ n”), fun(t); printf(“ nThe result is: n”), for(i=0; i N; i+) for(j=0; j N; j+) printf(“ 2d”, tij); printf(“ n”)
6、; 三、程序修改题 42 下列给定程序中函数 fun的功能是:将 K整型数中各位上为奇数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s中的数为 87653142时, t中的数为 7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include stdio h include conio h void fun(long s, long*t) int d: long sl=1; /*found*/ t=0; while(s 0) d=s
7、10; /*found*/ if(d 2=0) *t=d*s1+*t; sl*=10; S =10; void main() long s, t; system(”CLS”); printf(“ nPlease enter s: ”); scanf(“ ld”, s); fun(s, t); printf(“The result is: ld n”, t); 四、程序设计题 43 请编写函数 fun,其功能是:将 M行 N列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数组中数据的个数存放在形参 n所指的存储单元中。 例如,若二维数组中的数据为 33 33 33 33 44 44 44
8、 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include Stdio h void fun(int(*S)10, int*b, int* n, int mm, int nn) main() int w1010=(33, 33, 33, 33, 44, 44, 44, 44, 55, 55, 55, 55, i,j, int a100=0, n=0; printf(“Th
9、e matrix: n”); for(i=0; i 3; i+) for(j=0 ;j 4; j+) printf(“ 3d”, Wij); printf(“n”); fun(w, a, n, 3, 4); printf(“The A array: n”), for(i=0, i n; i+) printf(“ 3d”, ai); 国家二级( C语言)机试模拟试卷 51 答案与解析 一、选择题 1 【正确 答案】 C 【试题解析】 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C。 2 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:
10、自顶向下、逐步求精、模块化、限制使用 goto语句,所以选择 A。 3 【正确答案】 B 【试题解析】 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 4 【正确答案】 B 【试题解析】 A)错误,可行性分析阶段产生可行性分析报告。 C)错误,概要设计说明书是总体设计阶段产生的文档。 D)错误,集成测试计划是在概要设计阶段编写的文档。 B)正确,需求规格说明书是后续工作如设计、编码等需要的重
11、要参考文档。 5 【正确答案】 A 【试题解析】 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。 6 【正确答案】 D 【试题解析】 除 了堆排序算法的比较次数是 O( nlog2n),其他的都是 n(n1)/2。 7 【正确答案】 B 【试题解析】 栈是按 “先进后出 “的原则组织数据的,数据的插入和删除都在栈顶进行操作。 8 【正确答案】 C 【试题解析】 E R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 9 【正确答案】 D 【试题解析】 自然连接是一种特殊的等值连接,它要求两个
12、关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 B)错误。 笛卡尔积是用 R集合中元素为第一元素, S 集合中元素为第二元素构成的有序对,所以 C)错误。根据关系 T 可以很明显的看出是从关系 R与关系 S 中取得相同的关系组所以取得是交运算,选择 D。 10 【正确答案】 C 【试题解析】 学号是学生表 S 的主键,课号是课程表 C的主键,所以选课表 SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C。 11 【正确答案】 A 【试题解析】 C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以 A)错误。由 C语言构成的指
13、令序列称 C源程序 , C源程序经过 C语言编译程序编译之后生成一个后缀为 .OBJ的二进制文件 (称为目标文件 );最后要由 “连接程序 “把此 .OBJ文件与 C语言提供的各种库函数连接起来生成一个后缀为 .EXE的可执行文件。 12 【正确答案】 A 【试题解析】 C语言中八进制整型常量的开头是数字 0,十六进制整型常量的开头数字是 0x。 C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以 “e“或 “E“后跟一个整数来表示以 10为底数的幂数,且规定字母 e或 E 之前必须要有数字,且 e或 E后面的指数 必须为整数。 B)选项中 028错
14、误,八进制中没有数字 8。 C)选项中 4e1.5中 e后面的指数不是整数。 D)选项中 3.e5小数点后面缺少数字。 13 【正确答案】 A 【试题解析】 C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为 C语言中区分大小写,所以 B)选项中的 “FOR“可以作为标识符来用。 A)选项中含有非法字符 *n=*n+1; *通过指针返回元素个数 * 【试题解析】 题目要求实现将二维数组元素存入一维数组,需使用 for循环语句来控制二维数组元素的下标,同时使用指针变量配合操作。 可以用两个循环来处理问题,由于是按列的顺 序取出,所以第 1个循环用于控制列下标,第 2个循环用于控制行下标。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1