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

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

1、国家二级( C语言)机试模拟试卷 24 及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)栈是 “先进先出 “的线性表 ( B)队列是 “先进后出 “的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 2 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 3 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 4 下列排序方法中 ,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序

2、 ( C)直接插入排序 ( D)堆排序 5 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 6 下面叙述中错误的是 ( ) ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 “是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划 ,排除测试的随意性 7 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 ( )。 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦

3、合性提高内聚性有利于提高模块的独立性 ( C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 8 数据库应用系统中的核心问题是 ( )。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 9 有两个关系 R, S如下: 由关系 R通过运算得到关系 S,则所使 用的运算为 ( )。 ( A)选择 ( B)投影 ( C)插入 ( D)连接 10 将 E R图转换为关系模式时,实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 ( C)关系 ( D)域 11 以下叙述中错误的是 ( )。 ( A)使用三种

4、基本结构构成的程序只能解决简单问题 ( B)结构化程序由顺序、分支、循环三种基本结构组成 ( C) C语言是一种结构化程序设计语言 ( D)结构化程序设计提倡模块化的设计方法 12 以下四个程序中,完全正确的是 ( )。 ( A) #include stdio.h main(); /*/ programming /*/ printf(“programming! n“); ( B) #include stdio.h main() /* programming */ printf(“programming! n“); ( C) #include stdio.h main() /*/* progra

5、mming */*/ printf(“programming! n“); ( D) include stdio.h main() /* programming */ printf(“programming! n“); 13 C源程序中不能表示的数制是 ( )。 ( A)十六进制 ( B)八进制 ( C)十进制 ( D)二进制 14 以下选项中,能用作用户标识符的是 ( )。 ( A) 0 ( B) 8 8 ( C) void ( D) unsigned 15 若有定义语句: int x 10; ,则表达式 x x x的值为 ( )。 ( A) 0 ( B) -20 ( C) -10 ( D)

6、10 16 有以下程序: #include stdio.h main() int a 1, b 0; printf(“%d, “, b a b); printf(“%dn“, a 2*b); ( A) 1, 2 ( B) 1,0 ( C) 3,2 ( D) 0,0 17 有以下程序: #include stdio.h main() int a1, a2; char c1, c2; scanf(“%d%c%d%c“, j N; j+) rj=t0j, for(j=0, j N, j+) /*found*/ t0Nj一 1=tj【 1】 , for(j=0; j N, j+) tj0=tN一 1j

7、; /*found*/ for(j=N一 1 ; j =0; 【 2】 ) tN一 1N一 1一 j=tjN一 1; for(j=N一 1; j =0, j一 一 ) /*found*/ tjN一 1=r【 3】 ; main() int tN=21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33,10, i, j; printf (” nThe original array: n”), for(i=0; i N; i+) for(j=0; j N; j+) printf(“ 2d”, tij); printf(“ n”); fu

8、n(t); printf(“ nThe result is: n”), for(i=0, i N; i+) for(j=0; j N; j+) printf(“ 2d”, tij); printf(“ n”); 三、程序修改题 42 下列给定程序中,函数 fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include stdio h #include conio h void fun(char*

9、s) int i, j; for(i=0, j=0; si!=0; i+) if(si =0 si =9) /*found*/ Sj=Si; /*found*/ sj=“ 0”; void main() char item80; system(“CLS”), printf(“ nEnter a string: ”); gets(item); printf(“nnThe strLnq is: s n”, item), fun(item); printf(“nnThe string of changing is: Sn”, item); 四、程序设计题 43 编写函数 fun,其功能是 :将两个两

10、位数的正整数 a、 b合并成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 c数的个位和百位上, b数的十位和个位数依次放在 c数的千位和十位上。 例如,当 a=45, b=12时,调用该函数后, c=1524。 注意:部分源程序给出如下。数据文件 IN DAT中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h void fun(int a, int b, long*c) main() int a, b; long c; pzint

11、f(“Input: a, b: ”), scanf(“ d96 d”, a, b); fun(a, b, c); printf(“The result J s: lcl n”, c), 国家二级( C语言)机试模拟试卷 24 答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 栈是先进后出的线性表,所以 A)错误;队列是先进先出的线性表,所 以 B)错误;循环队列是线性结构的线性表,所以 C)错误。 2 【正确答案】 A 【试题解析】 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返

12、回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A)。 3 【正确答案】 C 【试题解析】 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子节点总是比度为 2的节点多一个,所以本题中是 5 1 6个。 4 【正确答案】 D 【试题解析】 冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较 n(n 1)/2次,而堆排序在最坏情况下需要比较的次数是 nlog2 5 【正确答案】 C 【试题解析】 编译软件、操作系统、汇编程序都属于系统软件,只有 C)教务管理系统才是应用软件。 6 【正确答案】 A 【试题解析】 软件测试的目的是为了发现错误

13、而执行程序的过程,并不涉及改正错误,所以选项 A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调 试通常称为 Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。 7 【正确答案】 B 【试题解析】 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立

14、性,所以 A)错误, B)正确。耦合性是模块间互相连接的紧密程 度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以 C)与 D)错误。 8 【正确答案】 A 【试题解析】 数据库应用系统中的核心问题是数据库的设计。 9 【正确答案】 B 【试题解析】 投影运算是指对于关系内的域指定可引入新的运算。本题中 S 是在原有关系 R的内部进行的,是由 R中原有的那些域的列所组成的关系。所以选择B。 10 【正确答案】 C 【试题解析】 从 E R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系, E R图中属性也可以转换成关系的属性。 11 【正确答案】 A 【试题解析】 使

15、用顺序,选择 (分支 ),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以 A)错误。 12 【正确答案】 B 【试题解析】 C语言中注释语句的注释方法是: /* 注释内容 */ 或 /注释一行。所以 A)与 C)错误, D)选项中预编译命令 include stdio.h前丢掉了 “#“号。所以选择 B。 13 【正确答案】 D 【试题解析】 在 C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择 D。 14 【正确答案】 A 【试题解析】 C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。 B

16、)中以数字 8开头,所以错误。 C)与 D)中用的是关键字 void与 unsigned,所以错误。 15 【正确答案】 C 【试题解析】 算术运算符的优先级高于 ,且的结合方向为自右向左,所以表达式 x x x可以表示成 x x (x x) 10 (10 10) 10,选择C。 16 【正确答案】 A 【试题解析】 首先打印 b a b 1 0 1的值 1,此时已给 b赋值为 1。然后打印 a 2*b=2*1=2的值 2。所以结果是 1,2. 17 【正确答案】 D 【试题解析】 在输入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。所以应按选项 D的顺序输入数据。

17、 18 【正确答案】 A 【试题解析】 选项 A是非法的表达式, C语言中没有 运算符。 19 【正确答案】 B 【试题解析】 本题中 a b 的条件不满足,所以不执行逗号表达式 a b, b c;的操作,而是执行 c a操作,即 c的值为 10。 20 【正确答案】 A 【试题解析】 default 语句在 switch 语句中可以省略,所以 B)错误; switch 语句中并非每个 case后都需要使用 break 语句,所以 C)错误; break 语句还可以用于for等循环结构中,所以 D)错误。 21 【正确答案】 A 【试题解析】 选项 A中 do后面的语句只执行了一次便结束了循环

18、; B)选项中条件 while(1)永远成立,所以是死循环; C)选项中 n 的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循环; D)选项中 for语句第二个表达式为空,所 以没有判别条件,进入死循环。 22 【正确答案】 C 【试题解析】 向 switch 语句块传送参数后,编译器会先寻找匹配的 case语句块,找到后就执行该语句块,遇到 break 跳出;如果没有匹配的语句块,则执行default语句块。 case与 default没有顺序之分。所以第一次循环 k的值为 1,执行c k, c的值为 1,再执行 case 2 后的语句 c, c的值为 2,遇到 br

19、eak 语句跳出循环;第二次循环 k 的值为 2,执行 case 2 后面的语句 c, c的值为 3,跳出循环。 23 【正确答案】 D 【试题解析】 调用 f(a, b)函数返回 3,调用 f(a, c)函数返回 6,所以外层调用f(f(a, b), f(a, c);即调用 f(3,6)函数返回 9。 24 【正确答案】 A 【试题解析】 在变量定义 double a, *p &a ;中, * 号是一个指针运算符,而非间址运算符,所以 A)错误。 25 【正确答案】 A 【试题解析】 因为 x, y都是 double型数据,所以输入时的格式字符应为 %lf,所以 B)与 C)错误。 D)选项

20、中 scanf(“%lf %lf“, x, y);应为 scanf(“%lf %lf“,&x, &y);。 26 【正确答案】 B 【试题解析】 B)选项中定义的数组为 2行 4列,而赋值时赋成了 3行所以出错。 27 【正确答案】 A 【试题解析】 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组 c中的元素的值并没有变化,选择A。 28 【正确答案】 A 【试题解析】 本题中输入的 3个数据 2,4,6分别赋值给了 x00, x10,x20。 x01仍为初始时的 0,所以

21、打印输出时的结果为 A)选项。 29 【正确答案】 A 【试题解析】 它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。 在百分号 (%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以 j的值为 55, y的值为 566.0,字符数组 name为 7777abc。 30 【正确答案】 A 【试题解析】 字符型指针变量可以用选项 A的赋值方法: char*s; s“Olympic“,选 项 C的写法: char*s, s “Olympic“;是错误的。字符数组可以在定义的时候初始化: char s “Olympic“; 或者 cha

22、r s “Olympic“,都是正确的。但是不可以在定义字符数组后,对数组名赋值。 (数组名是常量,代表数组首地址 )所以选项 B和选项 D都是错误的。对于本例,选项 B、 D)中字符数组 s的大小至少为 8,才能存放下字符串。 (字符串的末尾都有结束标志 “0“)。 31 【正确答案】 A 【试题解析】 首先 char *s 接受一个字符型数组的首地址并将这个首 地址赋给另一个字符型指针 char*t , while(*t )不断循环直到 *t 为 0,再将 t 1 ,这时字符指针 t 指向字符串的最后一个字符,又因为 s 指向字符数组的首地址即字符串的首地址所以 return(t s) 便

23、是返回字符数组中字符串的长度。 32 【正确答案】 A 【试题解析】 因为小写字符 a, b, c的 ASCII的值分别为 97,98,99,而在do while循环语句中,每次对字符的 ASCII 的值取余数并输出,所以分别输出7,8,9。 33 【正确答案】 B 【试题解析】 首先 n fun(3),3被当作参数传递进去,这就进行了一次调用, 3被当做参数传进去后,程序会执行这句 else return fun(k 1) 1; 这就调用了第二次,而参数是 3 1也就是 2。 2被当做参数传进去后,程序会执行这句 else return fun(k 1) 1; 这就调用了第三次,而参数是 2

24、 1也就是 1。 1被当做参数传进去后,程序会执行这句 else if(k 1) return 1; 不再递归调用,所以最终结果为 3次。 34 【正确答案】 A 【试题解析】 题目 中静态局部变量 a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行 n a;时 a先与 n相加在再进行自增。 n 的值为 4, a的值为 2,且 a变量执行完后空间没有释放。再执行 s s f(a)时 , s的值为 4,调用 f(a)函数时 n的返回值为 n 3 2 5,且此时 a的值为 3了。所以 s的值为 9。 35 【正确答案】 A 【试题解析】 A)选项中可以在声明变量的同

25、事为 data2赋值,但是 data2(2,6);应写作 data2 2,6。所以选择 A。 36 【正确答案】 C 【试题解析】 本题的子函数 f的功能是对结构体变量 s中第二个成员数组中所有的数据进行从小到大的冒泡排序,所以结果是 C)。 37 【正确答案】 A 【试题解析】 本题考查的是函数调用时的参数传递问题。程序在调用函数 f时,传给函数 f 的参数只是结构变量 c在栈中的一个拷贝,函数 f 所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量 c的值。 38 【正确答案】 A 【试题解析】 宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,所以 B)选项

26、中宏定义必须位于源程 序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,所以 C)选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间 (分配内存、保留现场、值传递、返回值 ),所以 D)选项错误。 39 【正确答案】 B 【试题解析】 b 为 2,二进制为 00000010,执行左移两位操作后为 00001000,然后与 a 00000001做异或操作结果为 00001001,即十进制的 9 40 【正确答案】 D 【试题解析】 程序首先将数组 a10中的元素 1、 2、 3分别写入了文件 d1.dat文件中,然后 又将 d1.dat文件中的数据 123,整体写入到了变量

27、 n的空间中,所以打印 n时输出的数据为 123。 二、程序填空题 41 【正确答案】 (1)0 (2)j- (3)j 【试题解析】 填空 1: NN矩阵,第一列元素表示为 t0Nj 一 1,第一行元素表示为 tj0,将第一列元索赋值给第一行元素,因此填入 0。 填空 2: for循环语句中,变量 j的变化范围为从 N一 1递减到 0,因此 j做自减1操作运算。 填空 3:最后将临时数组 r中的元素赋值给矩阵最后一列元素。 三、 程序修改题 42 【正确答案】 (1)sj+=si; (2)sj= 0; 【试题解析】 题目要求依次取出字符串中所有的数字字符,因此将元素 si存入sj后要使 j加

28、1,为下次存储做准备。 sj=“ 0”;是一个语法错误。 四、程序设计题 43 【正确答案】 void fun(int a, int b, long*c) * b 10获取 b的个位, a 10获取 a的十位, a 10获取 a的个位, b 10获取 b的十位 * *c=a 10+(b 10)*10+(a 10)* 100+(b 10)*1000; 【试题解析】 本题主要的问题是如何取出 a和 b 的个位数和十位数,取出后如何表示成 c中相应的位数。由于 a和 b都是只有两位的整数,所以分别对它们除以10可得到它们的十位数,分别用 10对它们求余可得到它们的个位数。得到后对应乘以 1000、 100、 10、 1即可得到 c的千位数、百位数、十位数和个位数。注意使用 c时要进行指针运算。

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

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

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