参考答案
一、选择题:
1、 B 考点:算法的基本概念,包括时间复杂度和空间复杂度两个方面(参见教材第二分册第二页 算法的复杂度介绍)
2、D考点:模块划分的原则,牢记一点:模块内要高内聚,模块间要低耦合(参见教材第二分册36页 算法的复杂度介绍)
3、A 考点:软件测试的目标,牢记一点:软件测试的目的就是为了发现程序中的错误(参见教材第二分册41页 软件测试的介绍)
4、C 考点:面向对象程序设计的特征,牢记一点:对象的特征有以下几点:分类性,封装性,多态性,继承性,模块性(参见教材第二分册23页 对象基本特点的介绍)
5、D考点:队列基本特点,牢记:队列是先进先出的数据结构,栈是先进后出的数据结构,它们都是特殊的线性表(参见教材第二分册9页 队列的介绍)
6、C 考点:树的遍历。掌握:二叉树的三种遍历方式。(参见教材第二分册14页 二叉树的遍历)解析:前序遍历是先访问根结点,再访问左子树,再访问右子树,对于左子树和右子树仍旧按照前序访问方式遍历。所以先访问根结点A,再对左子树前序访问,依次是B D Y E ,然后访问A的右子树,依次是C F X Z。所以遍历顺序:A B D Y E C F X Z
7、A 考点:二叉树的性质,牢记:在任意一颗二叉树中,度为0的结点总比度为2的结点多一个(参见教材第二分册12页 二叉树的基本性质)
8、B 考点:关系运算,了解掌握:并运算会增加元组个数,投影运算会减少表中属性个数,笛卡尔积既会增加属性个数,又会增加元组个数(参见教材第二分册64页 关系模拟的基本运算)
9、C 考点:E—R图的相关概念 掌握:E-R模型的图示法,主要是什么类型是什么图形表示(参见教材第二分册58页 E—R模型的图示法)
10、A 考点:数据库的基本特点 掌握以下几点: 数据库技术的根本目标:解决数据的共享问题 数据库设计:在已有数据库管理系统的基础上建立数据库
数据库系统需要操作系统的支持
数据的物理结构与逻辑有高度独立性,结构不必一致(参见教材第二分册53页 数据库系统的基本特点)
11、C 考点:算法的概念 牢记:算法的特点,有穷性、确定性、可行性、拥有足够的情报(参见教材第二分册第一页 算法基本概念)
12、D 考点:C语言的深入讨论 牢记:C语言的源程序要变成可执行文件,需要经过编译和链接两个步骤:
.c文件(源文件) 编译?.obj(目标文件)l链接? .exe文件(可执行文件) (参见教材第一分册110页 C语言的深入讨论)
13、B 考点:标识符的命名规则(参见教材第一分册第三页 标识符)
14、C 牢记:C语言是一门功能强大的结构化程序设计语言,含有三种结构:顺序,选择,循环(参见教材第一分册18页 )
15、A考点:main函数的概念 牢记:main函数既是程序唯一入口,也是唯一出口(参见教材第一分册55页 函数)
16、D 考点:使用scanf进行交叉赋值的情况(参加教材第一分册51页 例题)
17、题目中缺表达式,跳过
18、A 考点:自加自减运算符 牢记:++(--)在前,表达式的值为变量初值加(减)1;++(--)在后,表达式的值为变量初值. B C D三个选项中,表达式的值都为k的初值加1.为1,A中表达式的
值为0(参加教材第一分册15页 自加与自减运算符)
19、B 考点:printf函数的格式控制(参加教材第一分册20页 printf格式控制说明 教材教材第一分册10页 例1.9)
20、C 考点:分号是C语言结束的标志,每条语句必须以;结束,C选项X -- 后面缺了一个分号;(参加教材 第一分册18页 语句)
21、D 考点:C语言中的算术运算,单X为大于1的奇数时,X%2的值为1,所以选项D的值为0,选项A和选项C的值为1,选项B的值不定。牢记:求余运算的运算对象只能是整型数(参见教材第二分册12页 算术表达式)
22、C 考点:break语句和continue语句的用法及区别 牢记:1.break语句既可以出现在switch语句中,也可以出现在循环体中,而continue语句只能出现在循环体中2.break语句跳出整个循环,而continue语句只是结束本轮循环(参见教材第一分册45页 break语句和continue语句)
23、A 考点: switch语句。牢记两点:1 switch括号里表达式的值,类型必须为整型或字符型 2 case后的值,必须是整型或字符型常量。(参见教材第一分册33页 switch表达式)
24、B 考点:二重嵌套循环 注意:每一次外轮循环结束,都执行printf(“\\n”),输出一个换行符,所以最后的答案为B 牢记:外层循环每进行一轮,内层循环要一直循环到结束(参见教材第一分册44--45页 循环结构的嵌套)
25、A 考点:字符常量的合法表示。牢记:字符常量要么是一对单引号括起来的一个普通字符,要么是一对单引号括起来的转义字符。B选项中出现了非法的八进制字符‘8’,C和D选项都是用双引号括起的字符,应该用单引号(参见教材第一分册48页 关于字符常量的几点说明)
26、A 考点:函数的返回值。牢记:函数的返回值类型必须与函数首部中返回值的类型一致(参见
教材第一分册56页 函数的返回值的四点说明)
27、D 考点:字符的ASCII码值。字符数据都是以整型量进行处理的,因此字符型数据可以参与任何整数运算。牢记:1 四个字符的ASCII码必须要记得 ‘A’:65 ,‘a’:97,‘0’:48,
NULL:0。其他字符的ASCII码值以此类推,例如‘B’的ASCII码就是66 。2 小写字符的ASCII码比大写字符多32。 A选项c=(c-A)&+?a? 中,由于大小写字母的差值不会超过26,所以A选项也就等价于c=(c-A+‘a ? ,A,B,C选项都满足大小写字母相差32的特征。(参见教材第一分册49页 字符变量和对字符数据的运算)
28、B 考点:自加运算符和字符串在内存中的存储形式。牢记(参见教材第一分册56页 函数的返回值的四点说明)
29、D考点:指针变量的定义和赋值,A,B,C选项赋值运算符左边和右边的数据类型都是不一致的。A 左边指针 右边整型 B 左边指针,右边浮点C 左边浮点,右边地址值
30、A 考点:正确的使用指针。指针定义的时候需要使用取址符&,表示定义的是指针变量。在定义之后,可以直接使用。B选项*p=&n; 应改为p=&n; C选项scanf(“%d”,&p) ;应改为scanf(“%d”,p) ,当要访问指针变量所指的存储的变量时,需要使用间接访问运算符*,所以D选项应改为printf(“%d\\n”,*p)。理解:指针在第一次定义时需要使用&符号,但是随后使用的时候就不能再加&符号
31、B 考点:函数的参数传递,函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。解析:函数f完成的功能是对数据进行排序,语句f(&a[2],5,0)的作用是对从a[2]开始的5个元素进行从大到小排序。注意:这里传递的是地址&a[2],所以排序操作可看作是直接对数组a操作,执行后的结果为5,4,7,6,3,2,1, 8,9,10。语句f(a,5,1)对数组a的前5个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1, 8,9,10。
32、B 考点: 考点:数组名是常量,表示的是
数组首元素的地址。当执行f(a)的时候,由于传递的是首地址,相当于直接对数组a进行操作,所以从数组a的第三个元素a[2]到元素a[5],每个元素值扩大两倍。(参见教材第三册46-47 页 相关习题)
33、D 考点:传值和传地址的区别。解析:1 通过typedef关键字,说明一种新的数据类型名A,在main函数中直接使用A定义了一个结构体变量a。2 调用f(a)函数,注意:这里a是进行传值操作,a本身的值没有发生变化 !(参见教材第一分册69页例7.4,这题考查了传值和传地址两种参数传递方式,十分经典,大家一定要能够理解掌握,近几年很多考题都是这题的变形衍生)。
34、A 考点:多重循环和二维数组的结合。二维数组a[4][4]可以转为下面的表现形式:
1,4,3,2 1 4 2 1
8,6,5,7 排序后: 3 6 3 2 3,7,2,5 4 7 5 5 4,8,6,1 8 8 6 7 经过三重循环,每列上的元素都按从小到
大的顺序排列,循环执行后,数组a的表现形式如右
图
所
示
,
当
执
行
最
后
for(i=0;i<4;i++)printf(“%d,”,a[i][j])时要注意,这个时候j=3 所以输出最后一列的值,即1 ,2,5,7
35、B 考点:二维数组和多重循环相结合。牢记:遇到二维数组,先将其转换为下面的形式(可称之为矩阵):
1, 4, 3 ,2 6 4 3 2 8, 6, 5, 7 8 2 5 7 3, 7, 2, 5 3 7 1 5 4 ,8, 6, 1 4 8 6 1
解析:题目中的二重循环,就是将上面的这个二维矩阵沿对角线方向(自左上向右下的斜线)进行从大到小的排序,排序结果如右示,所以第一行元素a[0][i]输出结果为6 4 3 2。
36、B 和32题是相同题型(参加32题解析,注意:指针p没有进行自加操作,每次自加的是p所指向的存储单元)
37、C 考点:常用的字符串操作函数要掌握。
要求记住下面几个函数的用法: 1 strcpy 字符串拷贝函数
2 strlen 求字符串长度函数(注意:不包含字符串结束标记字符‘\\0’)
3 sizeof 求数组长度或者数据类型占用的字节数 4 strcat 字符串连接函数(具体用法参见教材第一分册141-142页 字符函数和字符串函数)
解析:sizeof(p)计算得到的结果是数组p的大小,由于在定义的时候,已经指定了字符数组p的大小为20,所以sizeof(p)的运算结果为20,strcpy(p+strlen(q),r) 得到的结果是将r所指向的字符串拷贝至p+strlen(q)开始的存储位置,因为strlen的值为3,即p+3开始存储r中的元素。所以执行完strcpy(p+strlen(q),r)语句后,字符数组p[20]的存储元素为a,b,c,a,b,c,d,e.执行strcat(p,q);后,p数组中存储的元素为a,b,c,a,b,c,d,e,a,b,c 所以strlen(p)的结果就为11. 注意:要掌握strlen函数和sizeof函数的区别!
38、B 与题37类型一致,参照37题解析。
39、C 考点:二维字符数组存放字符串数组及常用字符串处理函数。掌握:二维字符数组在存放字符串数组时,行数表示可以存放的字符串个数,列数表示每个字符串数组能存储的最多元素个数。(包含字符串结束符‘\\0‘).解析:执行完 语句f(p,5)后,字符串按字符顺序排列,由“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd” 变
为”aabdfg”,”abbd”, “abc”, ”cd”,”dcdbe”,所以 sizeof(p[0])也既是sizeof(”aabdfg”),即为6
40、A 考点:函数的递归调用。掌握:递归调用的含义和具体用法。解析:n=7时,
41、D考点:main函数的参数含义及使用。牢记: 1、main函数有两个参数:整型argc,和字符串指针argv
2、argc表示程序运行时会输入的字符串个数,argv是字符串指针,指向每个字符串。
解析:本题程序运行时输入了tt 12 345 678, 所以argc=4,argv的指示图如下: argv[0] ------> tt argv[1]------> 12 argv[2]------> 345
argv[3]------> 678
注意:*argv[i]所代表的是第i行的第一个字符, 例如:*argv[0]表示的就是字符‘1’。(参见教材第三分册65页 例1例2)
42、B 考点:全局变量,局部变量及静态变量。掌握:1 三种变量的作用范围 2 三种变量的生存周期 (参加教材第一分册102页 例12.9)注意:静态变量是近些年的热点考题,要注意它的运用(参加教材第一分册104页 例12.11)
43、D 考点:宏定义的展开。解析:根据宏的定义 ,K=HDY(a+c,b+d);展开后变为a+c/b+d ,带入数值后,即为1+3/2+4 ,结果为6(3/2计算的结果为1)。注意:宏定义展开后,一定要注意运算顺序。这题容易错误计算为(1+3)/(2+4),结果为0,不要人为添加小括号,这是错误的!(参见教材第一分册101页 例12.8)
44、A 考点:指针变量的简单操作。解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字符‘u’,则pc+5指向的是字符向后移动5位,指向字符‘z’,所以输出的*(pc+5)的值即为‘z’。
45、A 考点:函数传值和传地址。解析:函数f实现的功能是冒泡排序算法,要能够看懂。(参加教材第一分册73页 例8.6)
46、A 考点:函数的传址。解析:结构体s包含一个数组a和整型数据n两部分。进行函数f(s.a, s.n);调用时,数组名a作为实参进行传递,数组名是地址常量,表示数组首元素地址,本质上是个传址操作。所以函数的操作会影响到数组元素的值。
47、C 考点:typedef关键字的使用。牢记:使用typedef关键字并没有引入新的数据类型!(参加教材第一分册109页 定义用户类型)
48、B 考点:位运算。牢记:1开始位运算之前,要将运算对象转换位2进制表现形式 2 熟悉六种位运算的运算准则(包括 & | ~ << >> ^)。 解析: a | b d&c 00000010 00000110
00000100 ? d=6 00000101 -- > 4 -------------- ------------------------ 00000110 00000100
49、D 考点:熟悉文件操作函数。牢记:关于文件操作的几个基本函数要能了解功能和用法。包括fprintf,fscanf,fread,fwrite,fopen,fseek,rewind等(参见教材第一分册142页 附录---输入输出函数
)。
解
析
:
注
意
语
句
fprintf(fp,”%d%d\\n”,a[0],a[1],a[2])中只有两个%d格式控制符,所以只读入了数据a[0],a[1],数据a[2]没有被读入。紧接着读入换行符‘\\n’。所以使用fscanf从文件中读取的第一个数据是12。(相关例题参加教材第一分册 132页 例14.6)
50、A 题型同题49。牢记:关于文件操作的函数必须要记下来,包括函数形式和函数功能。解析:fseek(fp,sizeof(int)*3,SEEK_SET)语句将文件指针定位在数据4,从而语句fread(a,sizeof(int),3,fp)从数据4开始,依次读入三个数据存入数组a的前三个元素中,既数组a的值为:4 5 6 4 5 6
二、填空题:
1、63 考点:二叉树的性质。要求二叉树的四个性质都能背诵记忆(参见教材第二分册12页 二叉树的基本性质)。解析:满二叉树的第k层上有2k-1个结点。度为k的满二叉树一共有2k-1个结点。由二叉树的性质可知:除去第k层上的结点,其他所有的结点都是度为2的结点,所以度为2的结点数为2k-1-2k-1 既 27-1-27-1=63。
2、黑盒 考点:软件测试。背诵:按照软件是否需要执行,软件测试分为静态测试和动态测试;按照功能,分为白盒测试和黑盒测试。(参加教材第二册43页 软件测试方法)
3、数据库管理系统 背诵:数据库管理系统是数据库的核心。(参加教材第二册50页 数据库管理系统)
4、开发 背诵:软件生命周期可分为软件定义,软件开发和软件运行维护3个阶段(参见教材第二册 27页 软件生命周期 )
5、数据字典
6、14 考点:逗号表达式的值。牢记:逗号表达式的值是最后一个表达式的值。所以a=(3*5,a+4);执行后,a的值就是a+4的值,即为14(参见教材第一册16页 逗号运算符和逗号表达式)
7、0 考点:getchar()函数及while循环判断。输入1后,ch的值为1,==式判断为假 没有执行循环。注意:=运算符的优先级要低于==运算符,但是ch=getchar()有括号,所以先执行前面的赋值运算。
8、m=4 k=4 i=5 k=5 考点:全局变量,局部变量的作用域以及函数传值和自加运算。解析:本题是值传递,m的值为i++的值,为4 执行fun函数后,k++的值也为4。执行后k的值是5。同理,i的值在进行i++传值后,页变为5。
9、#& 考点:break语句在switch语句中的使用。掌握:没有break语句,执行完case匹配后的语句,会接着执行,直到要到break语句或者switch匹配结束。
10、9 考点:字符常量和转义字符。牢记:转义字符都是由字符‘\\’引导的。9个字符分别是:‘I’,‘B’,‘M’,‘\\n’,‘0’,‘1’,‘2’,‘\\1’‘\\\\’。
11、1 考点:逻辑运算符的运算规则。牢记:逻辑运算符&&的第一个操作对象如果为假,则不会对第二个操作对象进行计算。所以本题中!ch的计算结果为假,所以不会再去计算i++,i仍然是初值1。(参见教材第一册 26页 逻辑表达式及其值 例3.1)
12、5 4 考点:sizeof函数和strlen函数的区别。牢记:在计算字符串长度时,sizeof是统计‘\\0’字符的,而strlen是不统计‘\\0’的。
13、0 考点:二维数组的定义。(参加教材第一册75 页 二维数组的初始化 )
14、x[i-1]
15、*pmax=*px(或*pmax=x)
16、10 考点:函数的递归调用。
17、40 理解:指针s1和s2是指向同一块内存单元,所以执行*s2=20之后,事实上*s1也为20,所以*s1+*s2=40
18、struct DATA d={2006,10,1}; 注意:结构体变量定义时,不能丢掉前面的关键字 struct
19、fw=fopen(“readme.txt”, \ 考点:fopen函数的用法(参见教材第一册127页 打开文件)
相关推荐: