二级C语言考试笔试解析3.docx
- 文档编号:29878740
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:28
- 大小:3.17MB
二级C语言考试笔试解析3.docx
《二级C语言考试笔试解析3.docx》由会员分享,可在线阅读,更多相关《二级C语言考试笔试解析3.docx(28页珍藏版)》请在冰豆网上搜索。
二级C语言考试笔试解析3
2012年3月24日计算机二级C语言考试笔试真题(图片版)
(1)【答案】A
【解析】为了充分利用存储空间,可以把顺序队列看成一个环状空间,即把顺序队列的头尾指针相连,这样的队列称之为循环队列。
它是对顺序队列的改进,故循环队列是队列的一种顺序存储结构
(2)【D】
【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结构,故选项A)、B)、C)均不对,答案为选项D)。
(3)【D】
【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)正确
(4)、【答案】A
【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述。
所以选项A)正确。
(5)【答案】D
【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。
在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。
所以在满足数据完整性约束的条件下,一个关系应该有一个或多个候选关键字,所以选项D)正确。
(6)【答案】C
【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。
记为T=R-S。
根据本题关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算
(7)【答案】B
【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。
可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。
软件生命周期的主要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。
软件生命周期不包括市场调研。
(8)【答案】C
【解析】需求分析是对待开发软件提出的需求进行分析并给出详细的定义。
主要工作是编写软件需求规格说明书及用户手册。
需求分析的任务是导出目标系统的逻辑模型,解决“做什么”的问题。
制定软件集成测试计划是软件设计阶段需要完成的任务
(9)【答案】A
【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
(10)【答案】D
【解析】软件设计包括概要设计和详细设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。
软件详细设计,程序流程图(PDF)和PAD(问题分析图)是过程设计的常用工具。
数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。
(11)【答案】A)
【解析】简单程序设计的步骤是首先要确定算法和数据结构,然胡编码、调试,最后整理相关文档。
(12)【答案】A)
【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。
而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。
(13)【答案】B)
【解析】一个正确的算法可以有零个或者多个输入,必须有一个或者多个输出。
(14)【答案】C)
【解析】一个C程序有且只有一个主函数main()。
一个C程序可以包含多个不同名字的子函数。
C程序在书写时没有严格的缩进要求。
(15)【答案】B)
【解析】考察C语言中输入格式,因为在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗号、回车和空格,因为这些也算是字符。
所以在输入时也不可以有任何间隔符号。
(16)【答案】D)
【解析】字符常量有两种表示方法:
一种是用该字符的图形符号,如'b','y','*'。
另外还可以用字符的ASCII码表示,即用反斜符(\)开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:
有两种形式:
一种是用字符的八进制ASCII码,表示为:
\odd.这里,ddd是八进制值(o可以省略)。
另一种使用字符的十六进制ASCII码值,表示为 \0xhh或0Xhh 这里hh是两位十六进制值。
本题中D)选项‘\019'使用是八进制表示,不应该出现9,所以错误。
(17)【答案】A)
【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。
然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4。
最后打印输出。
(18)【答案】D)
【解析】本题考察自增运算符,++x表示先将x值加1后再用,x++表示先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。
(19)【答案】C)
【解析】在C语言中非0的值表示真,0表示假。
(20)【答案】A)
【解析】考察if语句和自增自减运算符,判断条件中if(a++<9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。
执行else语句时,因为打印a--,是先用后减,所以先输出10,然后a的值变为9。
(21)【答案】C)
【解析】本题考察switch语句的应用,case分支后面如果没有break,那么就会顺序执行下面的case,直到遇到break跳出。
所以第一次循环后s的值为3打印输出。
第二次s的值为:
s=s+3,s=s+4,即为10,打印输出。
第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。
(22)【答案】A)
【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k<0条件,推出循环,所以执行了一次。
(23)【答案】C)
【解析】考察for语句和if语句,第一次循环a的值为0,a%2也为0,条件不满足所以打印的是(c+a)即变量c的值“A”。
第二次a的值为1,条件a%2的值为1,条件满足打印字符(b+a)即字符“2”。
第三次a的值为2,条件不满足,打印(a+c)即字符”C”。
同理打印后续字符为“4E6”。
(24)【答案】A)
【解析】考察数组和指针的概念,本题中*k指向数组m的首地址。
*(k+2)现将指针后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。
选项B的值是一个地址无意义。
选项C的值为4。
选项D使得m[0]的值为4。
(25)【答案】D)
【解析】考察指针的概念和应用,数组名本身就是地址,所以不需要在用&符号。
C选项不能对所有元素赋值而是反复再给一个数值赋值且是死循环。
(26)【答案】B)
【解析】函数中的形参a[]已经退化为一个指针,所以AC都不对,D选项中只是传入一个指针,并没有把数组的元素挨个赋值,正确选项为B。
(27)【答案】A)
【解析】选项A中a=/*p1-m;表示方式不正确,未能正确表示出含义。
(28)【答案】D)
【解析】考察指针数组的概念,D选项中str为二维字符数组,不能够直接把一个字符串赋值到二维数组的某一行中。
C和D都是错误的,C中*str[3]*str[1]间少了分号,多了*和{}。
D的错误在于str[3][10]是二维数组,其str[1]是str[3][10]的第二行,但没有第二维下标,就是不确定的元素,不能为其赋值,更不能赋一个字符串"guest"。
C项不是二维数组,是指针数组,它的每一个元素都是char*型指针,str[1]="XXXX"就是给指针数组str的第二个元素赋字符串常量"XXXX"的指针,逻辑上语法上都是正确的了……
D中str[1]指的是第1行第0列的首地址,即str[1]=&str[1][0]对于char类型来说,这种赋值方式是不允许的
(29)【答案】C)
【解析】考察函数声明基本用法,C选项中函数的第一形参没有指名是数组,代表的是一个整型数,声明不正确。
(30)【答案】B)
【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度,\n与\1均是反义字符各表示一个字符所以打印值为8。
(31)【答案】C)
【解析】考察scanf和gets输入字符串的区别,scanf语句接收字符时遇到空格就作为一个字符串的结束,所以a数组中为this,b数组中为is,但是getchar函数见到回车才认为结束所以c数组为acat!
。
所以打印结果如选项C。
(32)【答案】A)
【解析】考察函数的嵌套调用,当运行fun(‘z’),调用fun(‘y’),然后嵌套调用fun(‘x’),输出结果为先输出x,然后输出y,最后输出z。
(33)【答案】D)
【解析】考察for循环函数调用,执行fun(3)是输出****,然后输出#,执行fun(4)时输出*****,然后输出#,所以选项D)正确。
(34)【答案】D)
【解析】考察静态局部变量,静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,它的生存期为整个源程序。
(2)静态局部变量只能在定义该变量的函数内使用该变量。
退出该函数后,尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。
若未赋以初值,则由系统自动赋以0值。
(4)根据静态局部变量的特点,可以看出它是一种生存期为整个源文件的量。
虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。
根据这个特点,函数第一次调用时,会将数组a变为35345,当第二次调用时,函数内的j值为2,所以会将数组a的第三个元素更改为7,所以最终结果为35745,选项D)正确。
(35)【答案】B)
【解析】考察宏定义的使用,根据该宏的定义,S(k+j)=(k+j)*k+j*2=39,S(k-j)=(k-j)*k-j*2=11,所以答案为39,11选项B)正确。
(36)【答案】D)
【解析】通过分析代码,可以看出来,函数的作用就是把数组某个元素的变为这个元素位置加5后对用的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x的后五个元素的值,即678910。
(37)【答案】C)
【解析】考察结构体的用法,在引用结构体中的成员变量时,可以使用’.’来引用,当指针指向结构体时,可以使用’->’来指向结构体重的成员,C选项引用错误。
(38)【答案】B)
【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三个元素,所以输出name为Zhao。
(39)【答案】D)
【解析】考察移位操作,执行c=(a<<2)<<1语句时,首先是a左移两位,其等效于将a乘以4,得到48,然后将48左移一位,相当于是乘以2,所以结果为c=96,选项D正确。
(40)【答案】A)
【解析】考察文件的操作,函数ftell()用于得到文件位置指针当前位置相对于文件首的偏移字节数。
在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。
调用函数ftell()就能非常容易地确定文件的当前位置。
不能写入数据,其他三个选项都可以向文件中写入。
二、填空题
(1)【答案】【1】n-1
【解析】在顺序表中删除一个元素,最坏情况是删除第一个元素,后面的(n-1)个元素均要向前移动,所以此处填n-1。
(2)【答案】【2】29
【解析】通过题干的描述可知此循环队列共30个空间,另外队尾指针rear的值小于队头指针front的值,所以利用公式(rear-front+30)%30=29,可知此循环队列的元素个数为29。
(3)【答案】【3】数据操纵语言
【解析】数据操纵语言DML(DataManipulationLanguage),用户通过它可以实现对数据库的基本操作。
例如,对表中数据的查询、插入、删除和修改。
在DML中,应用程序可以对数据库作插、删、改、排、检等五种操作。
(4)【答案】【4】关系
【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中的关系模式,这种转换是比较直接的,实体与联系都可以表示成关系。
(5)【答案】【5】面向对象方法
【解析】面向对象方法是一种基于对象模型的程序设计方法,包括面向对象分析、面向对象设计、面向对象编程,是目前应用范围最广的设计方法。
其中对象模型包括六个要素:
封装、抽象、模块化、层次结构、类、并发性。
面向对象方法的主要特征是封装、继承和多态性,所以此空应填面向对象方法。
(6)【答案】a=1,b=2
【解析】scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息,其调用格式为:
scanf("<格式化字符串>",<地址表>),scanf("a=%d,b=%d",&a,&b)中a=%d,b=%d之间有逗号,在输入数据时也要加逗号,如果去掉逗号,输入时就不用逗号,而用空格,tab键或回车键将各个数据隔开。
(7)【答案】2
【解析】a+=a%=9;其中a%=9等价于a=a%9;结果为1,所以a+=a%=9等价于a=a+1,故答案为2.
(8)【答案】2
【解析】a||b若a,b都为假,则a||b为假,其他都为真.如果a为真时,则对b不进行真假,所以对于c=a++||b++,因为a++时为真,所以b++不进行判断,b的值保持不变,故b=2。
(9)【答案】k<=n
【解析】for和while都是循环语句,可以实现相同的功能.。
(10)【答案】074
【解析】本题第一次循环时a的值为0,b的值为0所以打印字符‘0’。
第二次循环时a的值为7,b的值为7,所以打印字符‘7’。
第三次a的值为14,b的值为4,打印字符‘4’。
(11)【答案】rgb
【解析】char*ch[4]是指针数组,数组元素全为char类型指针,由于数组元素均为指针,因此ch[i]是指第i个字符串的指针,ch[i][0]为指向第i个字符串的首地址。
(12)【答案】572
【解析】第一次循环打印arr[10%8]即arr[2]的值,为5。
第二次循环打印arr[11%8]即arr[3]的值,为7。
第三次循环打印arr[12%8]即arr[4]的值,为2。
(13)【答案】a[i]
【解析】char*a[]为指针数组,a[i]为指向第i个字符串的指针。
(14)【答案】cab
【解析】p=q=r=(char*)malloc(sizeof(char)*20);等价于r=(char*)malloc(sizeof(char)*20);q=r;p=q,所以p,q,r,指向相同的地址。
(15)【答案】test
【解析】fopen函数功能是打开一个文件,函数原型FILE*fopen(constchar*path,constchar*mode);当mode为w+,若文件存在则文件长度清为零,即该文件内容会消失。
若文件不存在则建立该文件.fputs将字符串写入到fp中.所以文件内容为test。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 考试 笔试 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)