[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编12及答案与解析.doc

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

1、国家二级( C语言)机试历年真题试卷汇编 12及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)每一个节点有两个指针域的链表一定是非线性结构 ( B)所有节点的指针域都为非空的链表一定是非线性结构 ( C)循环链表是循环队列的链式存储结构 ( D)线性结构的存储节点也可以有多个指针 2 使用白盒测试方法时,设计测试用例应根据 ( )。 ( A)程序的内部逻辑 ( B)程序的复杂结构 ( C)程序的功能 ( D)使用说明书 3 在医院,每个医生只属于某一个诊疗科,医生同一天 可为多位患者看病,而一名患者可在多个科室治疗,则实体医生和患者之间的联系是 ( )。 ( A)多对多 (

2、 B)多对一 ( C)一对多 ( D)一对一 4 设序列长度为 n,在最坏情况下,时间复杂度为 O(log2n)的算法是 ( )。 ( A)二分法查找 ( B)顺序查找 ( C)分块查找 ( D)哈希查找 5 设数据集合为 D=1, 3, 5, 7, 9, D上的关系为 R,下列数据结构 B=(D, R)中为非线性结构的是 ( )。 ( A) R=(5, 1), (7, 9), (1, 7), (9, 3) ( B) R=(9, 7), (1, 3), (7, 1), (3, 5) ( C) R=(1, 9), (9, 7), (7, 5), (5, 3) ( D) R=(1, 3), (3,

3、 5), (5, 9) 6 深度为 7的二叉树共有 127个节点,则下列说法中错误的是 ( )。 ( A)该二叉树有一个度为 1的节点 ( B)该二叉树是满二叉树 ( C)该二叉树是完全二叉树 ( D)该二叉树有 64个叶子节点 7 二叉树的中序序列为 BDCA,后序序列为 DCBA,则前序序列为 ( )。 ( A) DCBA ( B) BDCA ( C) ABCD ( D) BADC 8 下面能作为软件需求分析工具的是 ( )。 ( A) PAD图 ( B)程序流程图 ( C)甘特图 ( D)数据流程图 (DFD图 ) 9 下面不属于对象主要特征的是 ( )。 ( A)唯一性 ( B)多态性

4、 ( C)可复用性 ( D)封装性 10 关系 R经过运算 A=B C4 D3(R)的结果为 ( )。 ( A) (c, c, 11, 4) ( B) (e, e, 6, 1) ( C) (a, a, 2, 4) ( D) (a, a, 2, 4)和 (e, e, 6, 1) 11 C语言整数不包括 ( )。 ( A)带小数点的整数 ( B)正整数 ( C)负整数 ( D)无符号整数 12 设 a, b, c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是( )。 ( A) a=1 (b=c=2); ( B) a=(b=3)*c; ( C) a=b=c 10; ( D) a=2=(b=9

5、)=1; 13 以下选项中,合法的实数是 ( )。 ( A) 1 5E2 ( B) E1 1 ( C) 2 10E ( D) 1 9E1 4 14 关于程序设计基本概念,以下叙述错误的是 ( )。 ( A)计算机 可以直接执行由任意高级语言编写的程序 ( B)高级语言都有与之对应的编译程序或解释程序 ( C)用任何一种计算机高级语言都可以把算法转换为程序 ( D)结构化算法可以解决任何复杂的问题 15 以下不能用于实型数据的运算符是 ( )。 ( A) ( B) ( C) * ( D) + 16 C语言中,最基本的数据类型包括 ( )。 ( A)整型、实型、逻辑型 ( B)整型、字符型、数组

6、( C)整型、实型、字符型 ( D)整型、实型、结构体 17 若有定义: int a=0, b=0, c=0, d=0;,有 C语言表达式 (a+&b+)?c+:d+,以下关于其执行顺序的叙述正确是 ( )。 ( A)先执行 a+,表达式 a+的值为 0,短路,得 a+,执行它 ( B)先执行 a+,表达式 a+的值为 0;再执行 b+,表达式 b+的值为 0,由此可确定 (a+ b+)值为 0,因此执行 d+ ( C)先执行 a+,表达式 a+的值为 1;再执行 b+,表达式 b+的值为 1,由此可确定 (a+4 b+)值为 1,因此执行 C+ ( D)先执行 b+,表达式 b+的值为 1;

7、再执行 a+,表达式 a+的值为 1,由此可确定 (a+ b+)值为 1,因此执行 c+ 18 有以下程序: #include main() char ch=B: while(ch main() int i, k; int array42=1, 0, 0, 2, 9, 3; for(i=0; i main() char b310, C; int i; for(i=0; i 则输出结果是 ( )。 ( A) Peachflower is pink ( B) Peachfloweris pink ( C) Peaehflowerispink ( D) Peach flower is pink 24

8、 有以下程序: #include main() char w20, aE510: “abcdef“, “ghijk1“, “mnopq“, “rstuv“, “wxyz“; int i, j; for(i=0; i #include main() char name9=“c#line“; char* str=name; pIinlf(“ d, d, d, d n“, sizeof(name), strlen(name), sizeof(str),strlen(str); 程序运行后的输出结果是 ( )。 ( A) 9, 7, 4, 7 ( B) 8, 6, 9, 6 ( C) 8, 6, 3,

9、 6 ( D) 10, 8, 5, 8 26 有以下程序: #include main() int password; char*p, old_str10=“wind“; scanf(“ d“, password); p=old_str; while(*p) printf(“# c“, *p+password); p+; printf(“ n“); 程序运行时,从键盘输入 2,输出结果是 ( )。 ( A) #y#k#p#f ( B) #wi#nd# ( C) xj#oe ( D) #2222# 27 若有定义: char*ps=“aa“, “bb“, “cc“, “dd“;,则以下叙述正确的

10、是 ( )。 ( A) ps0是字符串 “aa“ ( B) *ps0是字符串 “aa“的首地址 ( C) ps0是字符串 “aa“的首地址 ( D) *ps0是字符串 “aa“ 28 若有定义: char*ps=“aa“, “bb“, “cc“, “dd“;,则以下叙述正确的是 ( )。 ( A) *psi0是字符 a ( B) *ps0是字符串 “aa“ ( C) ps0是 字符 a ( D) ps是字符串 “aa“ 29 以下合法的转义字符是 ( )。 ( A) 0X41 ( B) 0x41 ( C) X41 ( D) x41 30 在源程序的开始处加上 ”#include”进行文件引用的

11、原因,以下叙述正确的是 ( )。 ( A) stdio h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用 printf、 scanf等函数 ( B)将 stdio h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行 ( C)将 stdio h中标准输入输出函数的源程序插入到引用处,以便进行编译链接 ( D)将 stdio h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接 31 设有定义: int a10=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p=a, i;,若0i9,则对 a数组元素的引用错误的是 ( )。 ( A) a1

12、0 ( B) *( ai) ( C) pi ( D) apa 32 有以下程序: #include main() int c, d; C=(131) 1; d=(131)1; printf(“ d, d n“, c, d); 程序运行后的输出结果是 ( )。 ( A) 6, 1 ( B) 1, 1 ( C) 7, 1 ( D) 7, 2 33 有以下程序: #include #include struct S char name10; ; main() struct S s1, s2; strcpy(s1 name, “XXX“); strcpy(s2 Flame, “=“); s1=s2;

13、printf(“ s n“, s1 name); 程序运行后的输出结果是 ( )。 ( A): ( B) XXX ( C) =XX ( D) X= 34 有以下程序: #include main() int i, array6=1, 5, 0, 4; for(i=0; i #include void fun(int*s, int x23) *s=*(x1+1); main() int a23=1, 2, 3, 4, 5, 6, *p; P=(int*)mailoc(sizeof(int); fun( p, a); printf(“ d n“, *p); 程序的运行结果是 ( )。 ( A) 5

14、 ( B) 2 ( C) 6 ( D) 3 36 有如下定义: struct int num; char name10; struct int y; int m; int d; birth; s, *ps=&s; 以下对内嵌结构体成员的引用形式错误的是 ( )。 ( A) ps一 birth y ( B) s birth y ( C) ps birth y ( D) (*ps) birth y 37 有以下程序: #include main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6, k; fp=fopen(“data dat“, “2+“); fprintf

15、(fp, “ d n“, a0); for(i=1; i typedef struct int num; char name10; PERSON; *found* void fun(PERSON【 1】 *found* 【 2】 temp; if(sta0 numstd1 num) temp=std0; std0=std1; std1=temp; if(std0 numstd2 num) temp=std0; std0=staE2; sta2=temp; if(std1 numstd2 1lum) temp=std1; std1=std2; stci2=temp; main() PERSON

16、std=5, “Zhanghu”, 2, “WangLi”, 6, “LinNin”; int i; *found* fun 【 3】; printf(“The result is“: ); for(i=0; i #include void fun(char str10, int m, char*pt) *found* Int k, q, i; for(k=0; k #include #include #define N 5 void fun(int aN) void main() int aNN, i, j; system(”CLS”); printf(“*The array* n“); f

17、or(i=0; i是指程序可以在该文件中找到 printf、 scanf等函数,因此答案为 A选项。 31 【正确答案】 A 【试题解析】 长度为 n的数组其各个元素的下标应该是从 0到 n1,因此,长度为 10的数组 a,第 10个元素为 a9,而不是 a10,故答案为 A选项。 32 【正确答案】 C 【试题解析】 表达式 c=(131)中, 是右移符号,数字 13换算成二进制后右移 1位,再和 1进行按位或运算,结果为 7;表达式 d=(131)1中,首先判断 13是否大于 1,此时条件成立返回 1后,再和 1进行或运 算,结果为 1,因此答案为C选项。 33 【正确答案】 A 【试题解

18、析】 主函数首先为结构体定义两个变量 s1、 s2,分别使用字符串拷贝函数 strcpy()为 s1和 s2的成员 name赋值,再将 s2中的成员信息赋值给 s1,因此输出为 “=”,答案为 A选项。 34 【正确答案】 D 【试题解析】 ”表示与运算,主函数首先定义一个数组 array6,初始化前 4个元素的值,其余默认值为 0。在 for循环中,为数组 array中每一个元素换算成二进制数后和二进制整数 “100”进行按位与运算,再将结果 进行输出,因此答案为D选项。 35 【正确答案】 A 【试题解析】 malloc(size)函数作用是在内存的动态存储区分配一个长度为 size的连续

19、空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给 p指针,然后取 p指针的地址,调用 fun函数。 fun函数中对指向指针的指针 s指向的内存单元赋值,其中 x1表示二维数组 x的第二行的行地址, x1+1表示二维数组 x的第二行第二列的地址,所以 fun函数的功能是将二维数组 x的第二行第二列的值,即 x11赋值给: *s, *s为 p,所以 *s代表 *p, x11与 a11等价,因此答案为 A选项。 36 【正确答案】 C 【试题解析】 使用结构体指针对结构体成员进行访问时,形式为结构指针名一 结构成员名,或者 (木结构指针名 )结构成员名,题目中 ps为结构体指针,因此判断

20、A选项引用形式错误,答案为 C选项。 37 【正确答案】 A 【试题解析】 本题首先定义文件指针变量 fp和一个数组 a,再打开一个文件“data dat”,随后先给文件写入数据 a0,由于 rewind函数是将文件指针从当前位置重新指向文件开始位置,所以 for循环依次将数组 a中的数据写入文件开始位置,退出循环后,文件中的数据顺序为: 654321,重新使指针指向文件开始位置,将此时 fp指向的数据 (即文件中第一个数据 6)写入变量 k中,关闭文件,输出k值,故答案为 A选项。 38 【正确答案】 A 【试题解析】 B、 C、 D选项都表示对 1到 10进行累加后赋给 s,而 A选项中含

21、break语句,循环体只执行一次,结束整个循环过程,因此答案为 A选项。 39 【正确答案】 D 【试题解析】 +放在变量前面时,表示将变量 +1,再参与其他操作, a+b+时,由于 a值是 0,直接判定与运算结果为 0,忽视 b+的值,因此 b值不发生改变,答案为 D选项。 40 【正确答案】 A 【试题解析】 常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义, C语言也不允许这样做,编译会出错, B选项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的, C语言不允许这样

22、做,编译会出错, C选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给 指针类型的指针变量, D选项错误。故答案为 A选项。 二、程序填空题 41 【正确答案】 (1)std (2)PERSON(3)std 【试题解析】 填空 1:定义形参变量引用数组 std,此时形参可以定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。 填空 2:程序使用变量 temp交换结构体数组元素的值,因而 temp应定义为PERSON型。 填空 3:程序通过函数 fun对数组 std进行操作,因此函数的实参应为 std

23、。 三、程序修改题 42 【正确答案】 (1)int k, q, i; (2)pti=strki; 【试题解析】 (1)关键字书写错误,定义整型变量的关键字应使用 int,而非 Int。 (2)数组元素表示错误,表示二维数组元素,应使用方括号将行坐标和列坐标分别括起来,即 strk, i应改为: strki。 四、程序设计题 43 【正确答案】 void fun(int aN) int i, j; if(a=NULL)retum; f10r(i=0; iN; i+) for(j: 0; j=i; j+) aij=0; *将数组左下半三角元素中的值全部置成 0* 【试题解析】 对于 NN二维数组,如何表示其左下半三角元素,可以通过以下语句实现。 for(i=0; in; i+) for(j=0; j=i; j+) 外层循环用来控制矩阵的行下标,内层循环控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以 j的范围是 0 i。

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

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

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