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

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

1、国家二级( C语言)机试历年真题试卷汇编 9及答案与解析 一、选择题 1 面向对象方法中,实现对象的数据和操作结合于统一体中的是 ( )。 ( A)结合 ( B)封装 ( C)隐藏 ( D)抽象 2 在进行逻辑设计时,将 ER图中实体之间联系转换为关系数据库的 ( )。 ( A)关系 ( B)元组 ( C)属性 ( D)属性的值域 3 线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有 ( )。 ( A)节省存储空间 ( B)插入与删除运算效率高 ( C)便于查找 ( D)排 序时减少元素的比较次数 4 深度为 7的完全二叉树中共有 125个节点,则该完全二叉树中的叶子节点数为( )

2、。 ( A) 62 ( B) 63 ( C) 64 ( D) 65 5 下列叙述中正确的是 ( )。 ( A)所谓有序表是指在顺序存储空间内连续存放的元素序列 ( B)有序表只能顺序存储在连续的存储空间内 ( C)有序表可以用链接存储方式存储在不连续的存储空间内 ( D)任何存储方式的有序表均能采用二分法进行查找 6 设二叉树如下: 则后序序列为 ( )。 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 7 计算机软件包括 ( )。 ( A)算法和数据 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 8 下面

3、描述中不属于软件需求分析阶段任务的是 ( )。 ( A)撰写软件需求规格说明书 ( B)软件的总体结构设计 ( C)软件的需求分析 ( D)软件的需求评审 9 当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的( )。 ( A)逻辑独立性 ( B)物理独立性 ( C)应用独 立性 ( D)空间独立性 10 有 3个关系 R、 S和 T如下: 则由关系R和 S得到关系 T的操作是 ( )。 ( A)并 ( B)投影 ( C)交 ( D)选择 11 以下叙述正确的是 ( )。 ( A) C编译程序把文件后缀为 c的源程序文件编译成文件后缀为 obj的二进制文件 ( B) C编译程序

4、把文件后缀为 c的源程序文件编译成文件后缀为 exe的可执行文件 ( C) C编译程序把文件后缀为 obj的二进制文件编译成文件后缀为 exe的可执行文件 ( D)链接程序把文件后缀为 c的源程序文件链接成文件后 缀为 exe的可执行文件 12 以下叙述正确的是 ( )。 ( A)循环结构、选择结构、顺序结构都是结构化程序的基本结构 ( B)计算机可以直接执行 C语言程序,不需要做任何转换 ( C)过于复杂的算法不能使用 NS流程图描述 ( D)只有不超过 20步操作步骤的算法才是简单算法 13 有如下程序: #include main() int x=072; printf(“X= d n“

5、, x+1); 程序运行后的输出结果是 ( )。 ( A) x=115 ( B) x=73 ( C) x=59 ( D) x=72 14 下面叙述正确的是 ( )。 ( A)任何复杂任务都可以分解成简单子任务 ( B) C语言程序的所有函数只能处于同一个源文件 ( C)包含全部三种基本结构的程序才是结构化程序 ( D) C语言程序可以定义多个不同内容的 main()函数 15 以下叙述正确的是 ( )。 ( A) C程序总是以 main()作为程序执行的起始行 ( B) main()函数若不带参数,其后面的一对圆括号可省略 ( C)函数体内的定 义语句和可执行语句允许任意穿插出现 ( D) C

6、语言中的语句之间必须用分号作为分隔符 16 有以下程序: #include main() char c; for(; (c=getchar()!=#; )putchar(+c); 执行时如输入为: abcdefg#,则输出结果是 ( )。 ( A) abodefg ( B) bcdefgh$ ( C) bcdefgh$ ( D) bcdefgh 17 有以下程序: #include main() int a=1, b=0; for(; a main() int x=013; if(x=012)printf(“True“); printf(“False n“); 程序运行后的输出结果是 ( )。

7、 ( A) True ( B) TrueFalse ( C) False ( D) TrueFalseTrue 19 为了避免在嵌套的 ifelse语句中产生二义性, C语言规定与 else子句配对是( )。 ( A)与其在同一行上的 if子句 ( B)在其之后最近的不带 else的 if子句 ( C)与其缩排位置相同的 if子句 ( D)在其之前最 近的不带 else的同层 if子句 20 有以下程序: include main() int i, a; for(i=0; i void fun(int a, int n) int i=0; for(i=0; i #define N 4 void

8、 fun(int aN) int i; for(i=0; i int convert(int*data) return(*data)+; main() int data=56; convert(&data); printf(“ d, “, data); data=convert(&data); printf(“ d, n“, data); 程序运行后的输出结果是 ( )。 ( A) 56, 57, ( B) 57, 58, ( C) 57, 57, ( D) 55, 57, 24 设有如下程序段: int a1=0; int b=9; char c3=“A“, “B“; char d=“12“

9、; 以下叙述正确的是 ( )。 ( A) a, b的定义合法, c, d的定义不合法 ( B) a, b, c, d的定义都是合法的 ( C) a, b, C的定义是合法的, d的定义不合法 ( D)只有 a的定义是合法的 25 设有定义: int x=2, *p=&x; float y=3 0; char z=c;,则立即进行以下运算有安全隐患的是 ( )。 ( A) p+; ( B) x+; ( C) y+; ( D) z+; 26 有以下程序: #include double fun(double a) double x; x=a一 (int)a; return x; main() do

10、uble a=3 1415; printf(“ f n“, fun(a); 程序的运行结果是 ( )。 ( A) 3 000000 ( B) 3 141500 ( C) 0 141500 ( D) 0 000000 27 有以下程序: #include #include char*a=“you“; char*b=“Welcome you to Beijing!“; main() char*P; p=b; while(*p!=*a)p+; p+=strlen(a)+1; printf(“ s n“, P); 程序运行后的输出结果是 ( )。 ( A) Beijing! ( B) you to B

11、eijing! ( C) Welcome you to Beijing! ( D) to Beijing! 28 有如下程序: #include #include main() printf(“ d n“, strlen(“0 t nA011 1“); 程序运行后的输出结果是 ( )。 ( A) 8 ( B) 9 ( C) 7 ( D) 10 29 有如下程序: #include int sum(int data) static int init=1; return init+=data; main() int i; for(i=1; i main() char s1=“programe“,

12、s2=“Language“; char*p1=s1, *p2=s2; int k; for(k=0; k #include typedef struct stu char name10; char gender; int score; STU; void f(STU * c) strcpy(c一 name, “Qian“); c一 gender=f; c一 score=350; main() STU a=“Zhao“, m, 290, b; b=a; f(&b); printf(“ s, c, d, “, a name, a gender, a score); printf(“ s, c, d

13、 n“, b name, b gender, b score); 程序运行后的输出结果是 ( )。 ( A) Zhao, m, 290, Qian, f, 350 ( B) Zhao, m, 290, Qian, m, 290 ( C) Zhao, m, 290, Zhao, m, 290 ( D) Zhao, m, 290, Qian, m, 350 33 下面关于编译预处理的命令行,正确的是 ( )。 ( A) #define PAI 3 14 ( B) #Define Eps 0 00001 ( C) #DEFINE FALSE 0 ( D) #define int INT 34 有以下

14、程序: #include #define D(x)2*x+3 main() int i=1, j=2; printf(“ d n“, D(i+j); 程序运行后的输出结果是 ( )。 ( A) 7 ( B) 6 ( C) 9 ( D) 2 35 有以下程序: #include #include struct S char name10; ; void change(struct S*data, int value) strcpy(data一 name, “#“); value=6; main() struct S input; int Bum=3; strcpy(input name, “OK

15、“); change(&input, num); printf(“ s, d n“, input name, num); 程序运行后的输出结果是 ( )。 ( A) OK, 6 ( B) #, 6 ( C) OK, 3 ( D) #, 3 36 有如下定义: struct st char name12; int age; char sex; std10, *p=std; 以下语句错误的是 ( )。 ( A) scanf(“ d“, p一 age); ( B) scanf(“ s“, std0 name); ( C) scanf(“ d“, std1 age); ( D) scanf(“ c“,

16、 (p一 sex); 37 有以下程序: #include #include void fun(int*, *s, int x23) *s=*(x1+1); main() int a23=1, 2, 3, 4, 5, 6, *p; p=(int*)malloc(sizeof(int); fun( p, a); printf(“ d n“, *p); 程序的运行结果是 ( )。 ( A) 6 ( B) 2 ( C) 5 ( D) 3 38 有如下定义: struct st int a; float b; X10; FILE*fp; 若文件已正确打开,且数组 x的 10个元素均已赋值,以下将数组元

17、素写到文件中的语句错误的是 ( )。 ( A) for(i=0; i int disp(char*str) while(*str)putchar(*str+); putchar(#); return*str; main() printf(“ d n“, disp(“C#123“); 程序运行后的输出结果是 ( )。 ( A) C#123#0 ( B) C#1230 ( C) C#0 ( D) C#123# 0 40 有以下程序: #include main() int x33=2, 4, 6, i, *q=&x00; for(i=0; i #include #define N 20 void

18、fun(int*a) int i, x, n=0; x=rand() 20; *found* while(n #include #include typedef struct aa int data; struct aa*next; NODE; int fun(NODE*h) int sum=0; NODE*p; p=h一 next; *found* while(p一 nextl if(p一 data 2=0) sum+=P一 data; *found* p=h一 next: return suln; NODE * creatlink(int n) NODE*h, *p, *s; int i;

19、 h=p=(NODE*)malloc(sizeof(NODE); for(i=1; idata=rand() 16; s一 next=p一 next; p一 next: s; p=p一 next: p一 next=NULL; return h; outlink(NODE*h) NODE*p; p=h一 next; printf(“ n n The LIST: n n HEAD“); while(p) printf(“一 d“, p一 data); p=p一 next: printf(“ n“); void main() NODE*head; int sum; system(“CLS“); he

20、ad=creatlink(10); outlink(head); sum=fun(head); printf(“ nSUM= d“, sum); 四、程序设计题 43 请编写一个函数 fun,它的功能是:将 ss所指字符串中所有下标为奇数位置的字母转换为大写 (若该位置上不是字母,则不转换 )。 例如,若输入 “abc4Efg”,则应输出 “aBc4EFg”。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include #include #include #include void

21、fun(char*ss) void main() FILE * wf; char tt81, s81=“abc4Efg“; system(“CLS“); printf(“ nPlease enter an string within 80 characters: n“); gets(tt); printf(“ n nMter changing, the string n s“, tt); fun(tt); printf(“ nbecomes n s n“, tt); * wf=fopen(“out dat“, “w“); fun(s); fprintf(wf, “ s“, s); fclose

22、(wf); * 国家二级( C语言)机试历年真题试卷汇编 9答案与解析 一、选择题 1 【正确答案】 B 【试题解析 】 对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式,故 B选项正确。 2 【正确答案】 A 【试题解析】 ER模型和关系模式的对照表如下。由表中可以看出,联系转换为关系数据库的关系,故 A选项正确。 3 【正确答案】 B 【试题解析】 顺序表和链表的优缺点比较如下表所示。由表中可以看出链式存储插入与删除运算效率高,故 B选项正确。 4 【正确答案】 B 【试题解析】 在树结构中,

23、定义一 棵树的根节点所在的层次为 1,其他节点所在的层次等于它的父节点所在的层次加 l,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的若干节点。深度为 6的满二叉树,节点个数为 26一 1=63,则第 7层共有 12563=62个叶子节点,分别挂在第 6层的左边 62个节点上,加上第 6层的最后 1个叶子节点,该完全二叉树共有 63个叶子节点,故 B选项正确。 5 【正确答案】 C 【试题解析】 “有序 ”是特指元素按顺序排列但允许相邻元素相等, A选项错误。有序表可以顺序 存储也可以链式存储, B选项错。能使用二分法查找的线性表必须

24、满足两个条件:用顺序存储结构;线性表是有序表, D选项错误。故 C选项正确。例如:有序链表。 6 【正确答案】 C 【试题解析】 二叉树遍历可以分为 3种:前序遍历 (访问根节点在访问左子树和访问右子树之前 )、中序遍历 (访问根节点在访问左子树和访问右子树两者之间 )、后序遍历 (访问根节点在访问左子树和访问右子树之后 )。本题中前序遍历为ABDEGCFH,中序遍历为 DBGEAFHC,后序遍历为 DGEBHF、 CA,故 C选项正确。 7 【正确答案】 D 【试题解析】 计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故 D

25、选项正确。 8 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。故 B选项正确。 9 【正确答案】 A 【试题解析】 数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会 导致相应的应用程序的改变。故 A选项正确。 10 【正确答案】 A 【试题解析】 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影:从关系模式中指定若干个

26、属性组成新的关系, T相较于 R没有缺少属性,故 B选项错误。选择:从关系中找出满足给定条件的元组的操作称为选择, T相较于 R增加了元组,故 D选项错误。交: Rns结果是既属于 R又属于 S的记录组成的集合, T中元组多于 R与 S,故 C选项错误。并: R S是将 S中的记录追加到 R后面, 与题目中结果相符,故 A选项正确。 11 【正确答案】 A 【试题解析】 c编译程序把文件后缀为 c的源程序文件编译成文件后缀为 obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序 exe,故排除 B、 C、 D选项,答案选A选项。 12

27、 【正确答案】 A 【试题解析】 计算机只能识别机器语言, C语言是高级语言,计算机无法直接执行,排除 B选项; Ns流程图是复杂流程算法的描述手段,因此 C选项错误;算法的复杂与简单,由算法的思想和时空复 杂度决定的,不能用操作步骤数来衡量, D选项错误;循环结构、选择结构、顺序结构都是结构化程序的基本结构,答案为 A选项。 13 【正确答案】 C 【试题解析】 x定义为 072,表示 x为一个八进制数, d代表十进制整数输出, x需要转化成十进制为 58,在输出时, x+1=59,再输出,答案为 C选项,另外输出时不能忘记 “ ”。 14 【正确答案】 A 【试题解析】 C语言程序的函数可

28、以处于不同的源文件, B选项错误;包含一种基本结构的程序就是结构化程序, C选项错误; C语言只可以定义一个 main()函数 , D选项错误,答案为 A选项。 15 【正确答案】 A 【试题解析】 main()函数后面的括号告诉编译器这是一个函数,不可以省略,排除 B选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除 C选项; C语言中的某些语句可以不用分号,例如 if语句,宏定义,故 D选项错误;答案为 A选项。 16 【正确答案】 D 【试题解析】 题目中 for语句含义是,每次将函数 getchar()的输入值赋给变量c,如果不等于 #,

29、则执行 putchar(+c),即将当 前变量 c值的 ASCII码 +1后,再输出改变后的变量 c的值。当变量 c的值等于 #,则终止循环,所以输出应该是 bedefgh,答案为 D选项。 17 【正确答案】 A 【试题解析】 题干中 for循环内有 break和 continue语句,且均放在 b+=a语句前面,无论 if条件是否满足, b+=a都不会被执行,因此 b值始终为 0,答案为 A选项。 18 【正确答案】 B 【试题解析】 if(x=012)此处是赋值语句 “=”,注意赋值操作符 “=”与相等操作符“=”的区别,因此答案为 B选项。 19 【正确答案】 D 【试题解析】 注意

30、if与 else的配对关系。原则是 if总是与它上面最近的、未配对的 else配对,因此答案为 D选项。 20 【正确答案】 A 【试题解析】 当 i=10时循环继续执行, i值赋值给变量 a。赋值完成后执行i=i+1,此时 i=11,判定是否满足条件 iage是结构指针访问结构成员的方式,如果为结构体内变量进行赋值,应该对指针地址指向的单元 进行赋值,因此在 p一 age前面应该加入取地址符, A选项语句错误,答案为 A选项。 37 【正确答案】 C 【试题解析】 malloc(size)函数作用是在内存的动态存储区分配一个长度为 size的连续空间,函数的返回值是新分配的存储区的首地址,将

31、该地址赋值给 p指针,然后取 p指针的地址,调用 fun函数。 fun函数中对指向指针的指针 s指向的内存单元赋值,其中 x1表示二维数组 x的第二行的行地址, x1+1表示二维数组 x的第二行第二列的地址,所以 fun函数的功能是将二维数组 x的第二行第二列的值,即 x11赋值给 *s, *s为 p,所以 *s代表 *p, x11与 a11等价,因此答案为 C选项。 38 【正确答案】 A 【试题解析】 fwrite()函数用法是 fwrite(void*buffer, int size, int n, FILE *fp),其中 buffer为要输出的数据的首地址。 A选项中,因为 n=1,

32、即每次写入 1个结构体数据, x是数组的首地址,因此,每次写入的数据都是数组的首个结构体元素,没有将整个数组写入文件中去,因此答案为 A选项。 39 【正确答案】 A 【 试题解析】 disp()函数中,存在 while循环,当指针指向地址单元存储的字符不等于空字符 0,输出此字符,否则退出循环,输出 #。在主函数中调用 disp()函数时,字符串 “C#123”先全部输出,当指针指向字符串最后空字符时,退出循环,输出 #,并且再将 0返回输出。由于 disp()函数返回类型为 int,所以返回 0的 ASCII码 0,因此,答案为 A选项。 40 【正确答案】 A 【试题解析】 题中把数组首元素地址赋值给指针变量 q,在 for循环体内,当i=0时,满足 if语句,把 指针 q指向的单元值加 1,等于 3赋给 x01,接着输出q指针指向单元的值 2; i=i+1后再次进入循环体,此时 i不等于 0,指针 q地址加1,指向 x01,此时 *q=3,因此最后函数输出的分别是 2, 3,故答案为 A选项。 二、程序填空题 41 【正确答案】 (1)N或 20 (2)break (3)n

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

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

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