第二套模拟试题参考答案及解析_第1页
第二套模拟试题参考答案及解析_第2页
第二套模拟试题参考答案及解析_第3页
第二套模拟试题参考答案及解析_第4页
第二套模拟试题参考答案及解析_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二套模拟试题参考答案及解析1. 根据二叉树的性质:二叉树第i(i1)层上至多有2i-1个结点。得到第5层的结点数最多是16。 本题答案为B。2. 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象,类,消息,继承等概念。 本题答案为D。3. 根据数据结构中各数据元素之间前后间关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。 如果一个非空的数据结构满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。 所以线性表、栈与队列、线

2、性链表都是线性结构,而二叉树是非线性结构。 本题答案是A。4. 程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。 本题答案为B。5. 在关系数据库中,用二维表来表示实体之间联系。 本题答案为D。6. 关系是由若干个不同的元组所组成,因此关系可视为元组的集合,将E-R图转换到关系模式时,实体与联系都可以表示成关系。 本题答案为B。7. 作为一个算法,一般应具有以下几个基本特征。 1、可行性 2、确定性 3、有穷性 4、拥有足够的情报 本题答案为C。8. 总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定

3、软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。 本题答案为C。9. 由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这个错误。所以程序调试的目的就是诊断和改正程序中的错误。 本题答案为B。10. 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。 本题答案为C。11.

4、算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;此外,一个算法还具有下列五个重要特性: (1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成; (2)确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性,并且,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出; (3)可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的; (4)输入:一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合; (5)输出:一个算法有一

5、个或多个的输出,这些输出是同输入有着某些特定关系的量。 故本题答案为B。12. 用Turbo C运行C程序的步骤先将Turbo C装入磁盘。1、调用Turbo C程序;2、编辑源文件。根据需要修改输入或修改源程序;3、编译源程序,编译时先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序。4、执行程序。 故本题答案为B。13. 实数在C语言中又称浮点数。实数有两种表示形式: 1、十进制数形式。它由数字和小数点组成(注意必须有小数点)。0.123、.123、123.0、123.、0.0都是十进制数形式。 2、指数形式。如123e3或123E3都代表123*103。

6、但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3、2.1e3.5、.e3、e等都不是合法的指数形式。 故本题答案为C。14. C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。 中的-max不符合要求,-既不是字母、数字,也不是下划线; 中的3COM第一个字符为数字,不合法; 中的int和C语言的关键字重名,不合法。 故本题答案为A。15. 正确的赋值语句中的左值不能为常量或表达式,右值不能为变量或表达式。 选项A中右值为表达式,明显是错误的; 选项B中,左值为表达式,明显是不对的。 选项D中,表达式x4=1+2=3,是先执行赋值表达式1

7、+2=3,这本身就是错误的,1+2不是变量,不能赋值。 故本题答案为C。16. +是自增运算符,作用是使变量的值增加1,选项D中的d不是变量,而是一个标识符,它代表常量2,常量是不允许进行自增运算的。 故本题答案为D。17. 两个整数相除结果为整数,如5/3的结果为1,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是double型,因为所有实数都按double型进行运算。根据运算符优先级,先计算括号内的,故选项B中(1/2)=0,整个表达式的值为0。 故本题答案为B。18. y=012表示将八进制数12赋给变量y。d格式符,用来输出十进制整数。%md,m为指定的输出字段的宽度。如果

8、数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。本题是将八进制数12也输出为十进制数,八进制数12转换为十进制数为10,所以输出结果为102,10。 故本题答案为C。19. if语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。 在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。选项D中没有将两个操作语句括起来,不能看作一条语句。 故本题答案为D。20. scanf函数可以用来输入任何类型的多个数据。 scanf函数的一般形式为: scanf(格式控制,地址列表) “格式控制

9、”是用双引号括起来的字符串,也称“转换控制字符串”,“地址列表”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。 指针变量中只能存放地址(指针),&:取地址运算符。例如:&a为变量a的地址,*p为指针变量p所指向的变量。 综上所述,可以作为地址列表中的有pa和&a。 故本题答案为A。21. 条件表达式的一般形式为:表达式1?表达式2:表达式3 1、条件运算符的执行顺序为:先求解表达式1,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就是整个条件表达式的值。 2、条件运算符优先于赋值运算符。 3、条件运算符的结合方

10、向为“自右至左”。 综上所述,本题是先比较a,b,如果ab成立则执行(bc?1:0),如果bc成立则结果为1,其它情况则为0。也就是说只有ab与bc同时成立时k值才能为1。 故本题答案为A。22. switch语句的一般形式如下:switch(表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; . . . case 常量表达式n:语句n; default :语句n+1; switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行。case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表

11、达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。如果想在执行一个case分支后,使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。本题中没有使用break终止switch语句的执行,本题当k为0时,执行完case 0后将继续执行case 1。 故本题答案为C。23. 当x=0,y=5,z=3时,z-0&+x5成立,执行y=y-1;此时,y=5-1=4,z=z-1=2,x=x+1=1。执行后条件仍然成立,继续执行y=y-1,此时y=y-1=3,z=1,x=2,以此类推,直至条件不成立。当z为0时条件不成立,执行后z为-1。 故本题答

12、案为B。24. 通过for(i=1;iz为真,所以执行f(y,z)。 在函数调用开始时,y的值传送给v,z的值传送给w,执行完f函数后,v和w的值是互换了,但main函数中的y和z并未互换。也就是说由于“单向传送”的“值传递”方式,形参值的改变无法传给实参。 故本题答案为C。30. int *p中p为指向整型数据的指针变量,*p为指针变量p所指向的变量。指针变量中只能存放地址(指针),本题中p存放的是a3的地址,即p指向数组4,5,6,7,8,9,10,b=p5=9。 故本题答案为D。31. C语言中可以用字符串常量来使字符数组初始化。char a=abcdefg中,不是用单个字符作为初值,而

13、用一个字符串(注意字符串的两端是用双引号而不是单引号括起来的)作为初值。数组a的长度是8,而不是7,因为字符串常量的最后由系统加上一个0。 在对全部数组元素赋初值时,可以不指定数组长度,系统会据数组元素自动定义。若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为10,就必须写成b10=abcdefg;只初始化前7个元素,后3个元素为0(0)。 故本题答案为C。32. swap1函数传递的是变量的地址,可以实现两个数的交换,而swap2函数中是传递的值,执行完swap2后,c0,c1的值是互换了,但main函数中的b0和b1并未互换。也就是说由于“单向传送”的“

14、值传递”方式,形参值的改变无法传给实参。 故本题答案为B。33. 当i=2时,将实参aa2的地址传递给形参,此时a0=a1=aa3=4,即aa2=4; 当i=1时,将实参aa1的地址传递给形参,此时a0=a1=aa2=4,即aa1=4; 当i=0时,将实参aa0的地址传递给形参,此时a0=a1=aa1=4,即aa0=4; 当i=-1时,不满足条件i=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7,8,9,所以aa0=4。 故本题答案为A。34. j=0时,i=0,不满足i2,继续往下执行s+=b00=1; j=1时,i=1,不满足i2,继续往下执行s=s+b11=1+2=3

15、; j=2时,i=2,不满足i2,继续往下执行s=s+b22=3+9=12; j=3时,i=3,满足i2,执行i=3-j;此时j=3,i=0,继续往下执行s=s+b03=12+4=16; j=4时不满足条件,跳出循环。所以最后s值为16。 故本题答案为D。35. gets(字符数组); 从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起始地址。函数调用如 gets(str); 故本题答案为B。36. char *p10定义指针数组p,它由10个指向字符型数据的指针元素组成。并对前5个数组元素进行了初始化。 p4=cd,strlen(str)是统计字符串str中字符的个数

16、(不包括终止符0),即cd的长度。 故本题答案为A。37. 在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。本题中的int a=5;只在int a=5;s+=f(&a);内有效。 在函数之外定义的变量称为外部变量,外部变量是全局变量。全局变量可以为本文件中其它函数所共用。它的有效范围为:从定义变量的位置开始到本源文件结束。本题的开头int a=2;即为全局变量,实际上起作用的也就是这个。 故本题答案为C。38. 对带参的宏定义是这样展开置换的:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左

17、到右进行置换。如果串中包含宏中的形参,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留。这样就成了置换的字符串。 本题中,展开后为i=4+4*4+4/2+2*2+2=4+16+2+4+2=28。 故本题答案为A。39. 除了可以直接使用C提供的标准类型名(如int、char、float、double、long等)和自己定义的结构体、共用体、指针、枚举类型外,还可以用typedef定义新的类型名来代替已有的类型名。如果在一个程序中,一个整型变量用来计数,可以: typedef int COUNT; COUNT i,j; 即将变量i,j

18、定义为COUNT类型,而COUNT等价于int,因此i,j是整型。但在程序中将i、j定为COUNT类型,可以使人更一目了然地知道它们是用于计数的。 可以定义结构体类型: typedef struct int month; int day; int year; DATE; 定义新类型名DATE,它代表上面定义的一个结构体类型。这时就可以用DATE定义变量: DATE birthday;(不要写成struct DATE birthday;) DATE *p;(p为指向此结构体类型数据的指针) 综上所述,结合本题可知,T是所定义的新的类型名,它代表上面定义的一个结构体类型。这时就可以用T定义变量。

19、故本题答案为B。40. f2函数传递的是变量的地址,可以实现数据的交换,而f1函数中是传递的值,执行完f1后,c的值是变了,但main函数中的a的值并未变化。也就是说由于“单向传送”的“值传递”方式,形参值的改变无法传给实参。 故本题答案为A。41. “按位与”运算符(&) 参加运算的两个运算量,如果两个相应的位都为1,则该位的结果值为1,否则为0。 “按位或”运算符(|) 两个相应位中只要有一个为1,该位的结果为1。 4转换为二进制数为0100 3转换为二进制数为0011 4|3=0111即7,4&3=0000,即0。 故本题答案为A。42. 本题是找出打印*号的条件,从图中我们可以找到规律

20、,第一行一个*,第二行3个,第三行5个,也就是每行中*的个数恰好是行数的2倍减一个,由此不难得出,横线处应当填入2*i-1。 故本题答案为B。43. sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。 故本题答案为C。44. C语言中不能给数组整体赋初值,所以选项C是不正确的。 故本题答案为C。45. 本题的考查点是指针数组作main函数的形参。 C语言规定,main()函数可以带有两个参数,第一个参数为一个整型变量,它表示执行文件在执行时带的参数的个数,第二个参数为一个字符型指针数组,其中第一个数组元素指向程序名,第

21、二个数组元素指向命令行中的第1个参数,以后依此类推。 结合本题,不难看出本题是求第1,3个参数的长度之和。即4+2=6。 故本题答案为D。46. f函数的的功能是通过递归调用实现数组中左右部分相应位置数据的交换。即数组中第一个元素与最后一个调换位置,第二个与倒第二个调换位置,以此类推。 故本题答案为A。47. 本题实际上是按成员变量Score的值进行由小到大的排序,程序执行后p5中各元素分别为:Penghua,20045,537,SunDan,20044,550,LiSiGuo,20042,580,WangYin,20043,680,YangSan,20041,703。所以p1-Score=5

22、50,s1.Score=580。 故本题答案为C。48. 题目中因为q-next=r,所以q-next-num即为r-num,为3,p-num=1,所以sum=3+1=4。 故本题答案为B。49. fprintf函数、fscanf函数与printf函数、scanf函数作用相仿,都是格式化读写函数。只有一点不同:fprintf和fcanf函数的读写对象不是终端而是磁盘文件。一般调用方式为: fprintf(文件指针,格式字符串,输出表列); fscanf(文件指针,格式字符串,输入表列);本题中需要注意的是,从磁盘文件上读入数据时,格式字符串为%d%d,而输出到文件d1.dat上的是数据123,

23、在读入数据时将123默认为一个数字,即k为123,n默认为0。 故本题答案为B。50. fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节,调用此函数后指针指向a0,fread(&b,sizeof(int),1,fp)是从文件中读取sizeof(int)字节的数据到变量b中,也就是从文件中读取数据3到变量b中。 故本题答案为D。51. 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。标准答案为:实体52.

24、与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。也就是说,结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起来,才能解决好某个具体且有清楚定义的问题。标准答案为:结构化设计53. 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再

25、开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。标准答案为:完善性54. 常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。标准答案为:相邻55. 两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(11)的联系、一对多(1N)或多对一(N1)的联系和多对多(NN)的联系。标准答案为:一对多或 1对多 或 一对n 或 1:N 或 1:n 或 1:n 或 1:N 或 一对m

26、或 1:M 或 1:m 或 1:m 或 1:N56. printf函数的一般格式为 printf(格式控制,输出表列) 格式控制是用双引号括起来的字符串,也称转换控制字符串。 1、d格式符,用来输出十进制整数。 2、c格式符,用来输出一个字符。已知字符A的ASCII码值为65,则字符B的ASCII码值为66,所以本题输出结果为:B 66标准答案为:B 6657. printf函数的一般格式为 printf(格式控制,输出表列) 格式控制是用双引号括起来的字符串,也称转换控制字符串,它包括两种信息: 1、格式说明,由%和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格

27、式说明总是由%字符开始的。 2、普通字符,即需要原样输出的字符。结果要求输出为:n1=10n2=20所以格式控制中需含有n1=部分,又因为要求按两行输出,需含有回车符:n。标准答案为:n1=%dnn2=%d58. 本题实际上是计算5*4*3*2*1*0的值,结果为0。标准答案为:059. 因为n=0,所以!n为真,执行x-=1;即x=x-1,因为x=2,所以x=x-1=2-1=1; m=1,为真,执行x-=2;即x=x-2,由上得出x=1,所以x=x-2=1-2=-1;x=-1,为真,执行x-=3;即x=x-3,由上得出x=-1,所以x=x-3=-1-3=-4。标准答案为:-460. ch1与

28、ch2为字符型变量,输入12后,ch1为字符1,ch2为字符2,n1=ch1-0的作用是将字符转换为数值,即n1为整数1,同理,n2为1*10+2=12。所以程序执行后输出十进制整数12。标准答案为:1261. f函数中变量x传递的是变量的地址,可以实现值的变换,而变量y是传递的值,执行完f后,y的值是变了,但main函数中的y并未变化。也就是说由于单向传送的值传递方式,形参值的改变无法传给实参。标准答案为:8 462. 函数fun的功能是计算x的n次方,所以a的4次方的调用函数应当为fun(a,4),b的4次方的调用函数应当为fun(b,4),(a+b)的3次方的调用函数应当为fun(a+b

29、),3),所以,实现m=a4+b4-(a+b)3这一计算的函数调用语句为:fun(a,4)+fun(b,4)-fun(a+b),3);。标准答案为:fun(a,4)+fun(b,4)-fun(a+b),3) 或 fun(b,4)+fun(a,4)-fun(a+b),3);63. 要使sstrcpy()函数实现字符串复制,必须将t字符串中的每个字符逐个拷到s字符串中,所以可以使用*s=*t;s+;t+。或者可以写成*s+=*t+,本题只有一个空,可以填入*t+。标准答案为:*t+64. 函数*ss()的作用是使字符串指针往后移strlen(s)/2个位置。代入实参可得,调用函数*ss后,指针指向e,所以输出为efgh。标准答案为:efgh65. 本题考查的是递归调用。aa3=1,2,3,n=3,满足条件n1,执行a0+f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论