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

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

1、国家二级( C语言)机试模拟试卷 9及答案与解析 一、选择题 1 算法的有穷性是指( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 2 设栈的顺序存储空间为 S(0:49),栈底指针 bottom=49,栈顶指针 top=30(指向栈顶元素)。则栈中的元素个数为( )。 ( A) 30 ( B) 29 ( C) 20 ( D) 19 3 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n 1)/2的排序方 法是( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D

2、)堆排序 4 结构化程序设计的基本原则不包括( )。 ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 5 在面向对象方法中,不属于 “对象 “基本特点的是( )。 ( A)一致性 ( B)分类性 ( C)多态性 ( D)标识唯一性 6 程序流程图中带有箭头的线段表示的是( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 7 下面不属于软件测试实施步骤的是( )。 ( A)集 成测试 ( B)回归测试 ( C)确认测试 ( D)单元测试 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于( )。 ( A)需求分析阶段 ( B)概念设计阶段

3、( 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语言源程序总是由一个或多个函数组成 ( B)用户自己定义的函数只能调用库函数

4、( C)不同函数的形式参数不能使用相同名称的标识符 ( D)在 C语言的函数内部,可以定义局部嵌套函数 12 以下叙述中错误的是( )。 ( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ( B) C程序经过编译、链接步骤之后才能形成 一个真正可执行的二进制机器指令文件 ( C)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 ( D)语言源程序经编译后生成后缀为 .obj的目标程序 13 以下选项中,合法的一组 C语言数值常量是( )。 ( A) 12. 0Xa23 4.5e0 ( B) 028 .5e-3 -0xf ( C) .17

5、7 4e1.5 0abc ( D) 0x8A 10,000 3.e5 14 设有两行定义语句: int scanf; float case; 则以下叙述正确的是( )。 ( A)第 2行 语句不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)两行定义语句都不合法 15 以下能正确表述算式 sin(2r+30)的 C语言表达式是( )。 ( A) sin(2*3.14*r+3.14*30/180.0) ( B) sin(2*r+ 30 ) ( C) sin(2*3.14*r+ 30 ) ( D) sin(2*3.14*r+30*3.14/360.0) 16 以下叙述中正确的

6、是( )。 ( A)整型常量和实型常量都是数值型常量 ( B)常量的类型不能从字面形式上区分,需 要根据类型名来决定 ( C)预定义的标识符是 C语言关键字的一种,不能另作它用 ( D)只能在函数体内定义变量,其他地方不允许定义变量 17 有以下程序 #include main() char a,b,c,d; scanf(“%c%c“, c=getchar(); d=getchar(); printf(“%c%c%c%cn“,a,b,c,d); 当执行程序时,按下列方式输入数据(从第 1列开始, 代表回车,注意:回车也是一个字符) 12 34 则输出结果是( )。 ( A) 12 3 ( B)

7、 12 ( C) 1234 ( D) 12 18 有以下程序段 #include int j; float y; char name50; scanf(“%2d%f%s“, 当执行上述程序段,从键盘上输入 55566 7777abc 后, y的值为( )。 ( A) 566.0 ( B) 55566.0 ( C) 7777.0 ( D) 566777.0 19 若有定义 int x,y; 并已正确给变量赋值 ,则以下选项中与表达式 (x-y)?(x+) : (y+)中的条件表达式 (x-y) 等价的是( )。 ( A) (x-y0) ( B) (x-y0) ( D) (x-y=0) 20 有以

8、下程序 #include main() int x=1, y=0; if (!x) y+; else if (x=0) if (x) y+=2; else y+=3; printf(“%dn“, y); 程序运行后的输出结果是( )。 ( A) 0 ( B) 2 ( C) 1 ( D) 3 21 以下程序段中的变量已正确定义 for( i=0; i int f ( int m ) static int n=0; n+=m; return n; main() int n=0; printf ( “%d,“, f(+n) ); printf ( “%dn“, f(n+) ); 程序运行后的输出结果

9、是( )。 ( A) 1,2 ( B) 1,1 ( C) 2,3 ( D) 3,3 30 有以下程序 #include int m1(int x,int y) return x必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 37 若要使用 C数学库中的 sin函数,需要在源程序的头部加上 #include 关于引用数学库,以下叙述正确的是( )。 ( A)通过引用 math.h文件,说明 sin函数的参数个数和类型,以及函数返回值类型 ( B)将数学库中 sin函数链接到编译生成的可执行文件中,以便能正确运行 ( C)将数学库中 sin函数的源程序插入到引用处,

10、以便进行编译链接 ( D)实际上,不引用 math.h文件也能正确调用 sin函数 38 有以下程序段 int *p; p= _ malloc( sizeof( int ); 若要求使 p指向一个 int 型的动态存 储单元,在横线处应填入的是( )。 ( A) (int *) ( B) int ( C) int * ( D) ( *int ) 39 下面结构体的定义语句中,错误的是( )。 ( A) struct ord int x;int y;int z; struct ord a; ( B) struct ord int x;int y;int z; struct ord a; ( C)

11、 struct ord int x;int y;int z; a; ( D) struct int x;int y;int z; a; 40 有以下程序 #include typedef struct int b, p; A; void f(A c) /* 注意: c是结构变量名 */ int j; c.b += 1; c.p+=2; main() int i; A a=1,2; f(a); printf(“%d,%dn“, a.b, a.p); 程序运行后的输出结果是( )。 ( A) 1,2 ( B) 2,4 ( C) 1,4 ( D) 2,3 二、程序填空题 41 下列给定 程序中,函数

12、 fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参 n所指的存储单元中。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #define N 8 typedef struct list int data; struct list *next; SUIST; SLIST*creatlist(int*a); void outlist(SLIST*); void fun(SLIST*h, int*n) SLIST*p; /*found*/ 【 1】

13、=0; p=h-next; while(p) (*n)+; /*found*/ p=p-【 2】; main() SLIST*head; int aN=12, 87,45, 32, 91, 16,20, 48, num; head=creatlist(a); outlist(head); /*found*/ fun(【 3】, case为关键字,不能作为用户标识符,故而答案选 A 15 【正确答案】 A 【试题解析】 考查算术表达式的写法, C中没有 ,需要用数值 3.14代替, C中sin函数的参数为弧度,角度 30转成弧度应为 3.14*30/180。故而选 A 16 【正确答案】 A 【

14、试题解析】 数值型常量包括整型常量、实型常量和字符常量,选项 A)正确;变量的类型通过类型名区分,常量则是通过字面形式区分,如 3为整型常量, 3.14为实型常量, h即为符号常量,选项 B)错 误; C语言标识符包括关键字、预定义标识符、用户标识符三种,预定义标识符和关键字不同,虽然可以作为用户标识符使用,但是不建议另作他用,选项 C)错误;变量有全局变量和局部变量之分,局部变量在函数体内定义,全局变量可以在函数体外定义,选项 D)错误;答案选 A)。 17 【正确答案】 A 【试题解析】 考查字符数据的输入输出。 getchar()函数只能接受单个字符,数字和回车也会按照字符处理,输入多于

15、一个字符时,只接受第一个字符。本程序输入结束之后, a=1, b=2, c= , d=3。则输 出的结果为 A)。 18 【正确答案】 A 【试题解析】 函数 scanf()输入字符串时默认空格为间隔符,格式控制符若为“%2d“表示控制输入语句的宽度为 2,程序中输入为 55566 7777abc时,只把 55赋予变量 x,而把 566赋予变量 y, 7777abc赋予变量 name,所以答案选 A)。 19 【正确答案】 A 【试题解析】 考查条件表达式。条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取 “表达式 2“的值作为整

16、个条件表达式的值;若为 “假 “,取 “表达式 3“的值作为整个条件表达式的值。本程序中要选能判定 (x-y)为 “真 “的语句,即 x! =y,或者 (x-y 0),选 A 20 【正确答案】 A 【试题解析】 在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行, y值没有发生改变,答案选 A)。 21 【正确答案】 A 【试题解析】 考查循环嵌套。循环嵌套执行次数为 外层循环次数 *内层循环次数。但是本题中循环次数与输出结果没有关系,两层循环之后只是执行了一个空语句 ;,然后输出一个 * 。故而答案选 A)。 22 【正确答案】 A 【试题解析】 已经证明,由顺序、分支、循环这

17、三种基本结构组成的算法可以解决任何复杂的问题。选项 A)叙述有误。 23 【正确答案】 A 【试题解析】 goto语句会导致程序结构混乱,所以结构化程序中限制使用 goto语句,选项 B)错;一个结构化的程序可以依据该程序要实现的功能选用顺序、分支、循环这三种基本结构中的某几种或者全部使用,不是必须都用上,选项C)错;已经证明,由这三种基本结构组成的算法可以解决任何复杂的问题,选项D)错;程序的模块化是指把程序要解决的总目标 分解为若干目标,再进一步分解为具体的小目标,每个小目标即为一个模块,而函数是 C语言的基本模块,实现某一模块的具体功能。答案选 A)。 24 【正确答案】 A 【试题解析

18、】 同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,答案 A)正确。在使用逗号运算符的情况下,一条语句可以定义多个数组,选项 B)错。方括号中可以为整型变量或者常量表达式,选项 C)错。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数,选项D)错。答案选 A)。 25 【正确答案】 A 【试题解析】 A)正确, char c1, c2, *c3, c440表示定义了两个字符变量c1、 c2,一个字符指针 c3,一个字符数组 c4。数组的下限永远为 0,选项 B)、C)、 D)错,答案选 A)。 26 【正确答案】 A 【试题解析】 二维数组的第一维数据表示行数

19、,第二维数据表示列数,所以x23中的数据应为两行三列,和定义内容不符,选项 A)错误,答案选 A)。 27 【正确答案】 A 【试题解析】 模块化采用的是自顶向下、逐步细化的设计方法来把复杂的问题分解成许多独立并且可以独立访问的模块, 所以选项 A)的描述错误,答案选A)。 28 【正确答案】 A 【试题解析】 调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参数列表一致才能保证调用的正确性, A)正确。 C语言对大小写敏感,选项 B)错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下划线组成并且第一个字符不能为数字,选项 C)错。一个函数每次只能使用一个retur

20、n语句,但是该函数体中可以有多个返回点,也就是有多条 return语句,每次只从其中一点返回,选项 D)错。答案选 A)。 29 【正确答案】 A 【试题解析】 静态变量是在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,其初始化只进行一次。函数 f()的功能是用 n累加所有调用该函数时传入的 m的值,所以第一次调用函数 f(+n),传入的参数为 1,返回的值为 1;第二次调用函数 f(n+),传入的参数仍为 1,返回时 n在原先的基础上继续累加1,返回值为 2,所以输出结果为选项 A)。 30 【正确答案】 A 【试题解析】 函数 m1()返回两个参数中较小的数值,函数 m2()

21、返回两个参数中较大的数值,函数 fun()返回两个参数之和,所以fun(m1(x,y),m2(y,z)=fun(m1(2,3),m2(3,1)=fun(2,3)=5,答案选 A)。 31 【正确答案】 A 【试题解析】 在 C程序中, main函数的位置可以任意,而且不管 main函数位置怎么变化,程序都会以 main函数作为入口,选项 B)错误;每个 C程序(而不是每个 C程序文件)必须有且只能有一个 main函数,选项 D)错误; main函数不能被调用,选项 C)错误;函数的定义不能放在另一个函数体内,但是声明可以,所以答案选 A)。 32 【正确答案】 A 【试题解析】 在指针运算中,

22、 “*“为取值运算符, “表示把空指针赋给指针变量 p,而若要 p指向变量 x的地址需使用“p= “的形式,所以答案选 A)。 33 【正确答案】 A 【试题解析】 考查指针变量。指针变量的定义形式为: 类型名 *指针变量名,表示指向某一个变量的指针,如果定义形式为:类型名 *指针变量名,则表示指向某一个指针变量的指针,所以 A)正确。指针变量本身存储的是其指向的变量的地址值,不需要使用求地址运算符( 是将空指针赋给指针变量,表示该指针变量当前未指向任何变量,语句 p=0;本身不正确,两者不等,故选项 C)、 D)错。答案选 A)。 34 【正确答案】 A 【试题解析】 不可以把一个 int型

23、数据直接赋值给一个指针变量,只能用取地址运算符 “&“把该整型变量的地址赋值给该指针变量,选项 A)错误;函数类型若为指针类型则可以返回地址值,选项 B)正确;函数传参过程中,是把实参的数据复制一份传给形参,所以改变形参的值不会对实参造成影响,选项 C)正确;NULL的定义包含在头文件 stdio.h中,所以选项 D)正确; 所以答案选 A)。 35 【正确答案】 A 【试题解析】 考查指针变量的初始化。只能把对应类型的变量的地址赋值给指针,选项 B)错误;定义指针时要加上 “*“标明该变量为一个指针变量,选项 C)错误;不能把一个整数直接赋值给指针变量,选项 D)错误;所以答案选 A)。 3

24、6 【正确答案】 A 【试题解析】 C语言中,凡是以 “#“开头的都被称为编译预处理行,选项 A)正确;预处理行可以放在 C源程序的任何位置,习惯放在起始位置,选项 B)错误;语句 “#include “必须放在使用文件 stdio.h中相关方法的语句之前,但是不一定非要放在 C程序开头,选项 C)错误;预处理包括宏定义、文件包含和条件编译等,选项 D)错误;答案选 A)。 37 【正确答案】 A 【试题解析】 考查文件包含处理。文件包含命令的功能是把指定的文件添加到预处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了程序要调用的函数的声明。由此,选项 B)、 C)、 D)表

25、述错误。答案选 A)。 38 【正确答案】 A 【试题解析】 语句 “malloc( sizeof( int )“为动态分配了一块内存 ,因为 p为 int型指针,所以需要使用强制转换将该内存地址转换成 int*类型后再指给 p,填入的内容为 (int *),答案选 A)。 39 【正确答案】 A 【试题解析】 分号代表该结构体定义语句的结束,选项 A)的结构体没有定义完全就用该结构体另外定义变量,用法有误,所以答案选 A)。 40 【正确答案】 A 【试题解析】 考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数 f(a)对 a中的数据没有影响,输出结

26、果为1,2,答案选 A)。 二、程序填空题 41 【正确答案】 (1)*n (2)next (3)head 【试题解析】 填空 1: n所指的存储单元存放结点的个数,对其赋初值为 0。 填空 2: while循环用于遍历链表,循环一次,指针指向链表的下一个结点。 填空 3:调用函数的实际参数与形参一致,即 fun(head, &num);。 三、程序修改题 42 【正确答案】 (1)while(fabs(t)=num) (2)t=s n; 【试题解析】 (1)while语句用来累计计算 PI的值,根据题意最后一项的绝对值小于给定 参数循环终止,因此应当是 while(fabs(t)=num)。 (2)每一项的值存放在变量 t中,每一项均为 1或一 1除以一个数,所以应使用除法运算符。 四、程序设计题 43 【正确答案】 void fun(char*a ,char t) int i, j=0; for(i=0; istrlen(s); i+) if(!(i 2)=0 &(si 2) tj+=si; tj=0; 【试题解析】 使用循环遍历字 符串,将下标和 ASCII码值满足要求的元素赋给新的字符串。

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

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

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