365文库
登录
注册
2

2010年9月计算机二级C语言笔试试题及答案公布

238阅读 | 9收藏 | 11页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
2010年9月计算机二级C语言笔试试题及答案公布第1页
2010年9月计算机二级C语言笔试试题及答案公布第2页
2010年9月计算机二级C语言笔试试题及答案公布第3页
2010年9月计算机二级C语言笔试试题及答案公布第4页
2010年9月计算机二级C语言笔试试题及答案公布第5页
2010年9月计算机二级C语言笔试试题及答案公布第6页
2010年9月计算机二级C语言笔试试题及答案公布第7页
2010年9月计算机二级C语言笔试试题及答案公布第8页
2010年9月计算机二级C语言笔试试题及答案公布第9页
2010年9月计算机二级C语言笔试试题及答案公布第10页
2010年9月计算机二级C语言笔试试题及答案公布第11页
福利来袭,限时免费在线编辑
转Pdf
right
1/11
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
莫关山贺天 上传于:2024-06-30
2010年9月计算机二级C语言笔试试题及答案公布(含解析) 一、选择题 (1)答案:(C) 解析: 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。 所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。 (2)答案:(B) 解析: 链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结构下的线性表便于插入和删除操作。 (3)答案:(B) 解析: 栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。 (4)答案:(A) 解析: 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法,故本题答案应该为选项A)。 (5)答案:(D)解析: 滥用GOTO 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。 (6)答案:(D) 解析: 软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。 (7)答案:(A)解析: 软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 (8)答案:(C) 解析: 关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。 (9)答案:(C) 解析: 数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共享”之特点。 (10)答案:(C) 解析: 数据模型所描述的内容有3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。 (11)答案:(B)解析: C程序是由函数构成的。一个C源程序至少包括一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数。 (12)答案:(C)解析: 在C语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中e3,2.1e3.5,.e3,e等都是不合法的指数形式。再如123e3或123E3都代表123乘以10的3次方。注意,字母e的前面必须有数字,且e的后面必须是整数。 (13)答案:(B) 解析: t=1是将t赋值为1,所以循环控制表达式的值为1,而判断t是否等于1时的语句为t==1。注意“=”与“==”的用法。 (14)答案: (C) 解析: 选项A)中,赋值表达式左边应该是一个变量,而“a+b=b++”中赋值号左边是一个表达式;选项B)中,取余运算符“%”两侧应都是整型数据,而“((int)a+b)”是float类型;选项C)中,“%”两侧都是整型数据,所以正确;选项D)最后有一个分号,所以不是表达式,而是一条语句。 (15)答案:(C) 解析: 由于在switch语句中,没有break语句,所以当变量i的值等于case后面的常量表达式的值时,将执行此case后面的所有switch语句。   (16)答案:(B) 解析: 本题中,“!”表示逻辑非运算符,逻辑非运算符比等于运算符的优先级低。 (17)答案:(C) 解析: 选项A)中定义函数时,形参的类型说明应该放在形参表列内说明。老版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1行的括号内指定形参的类型,而在括号外单独指定。选项B)中return后面的值可以是一个表达式。选项D)中实参与形参的类型应相同或赋值兼容。如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,以形参类型为准。 (18)答案:(D) 解析: C语言在函数中说明的变量为局部变量,只在函数内起作用但不会影响到其他函数。所以在不同的函数中使用相同的函数名不代表是同一函数。在函数定义时声明的参数只在函数内部起作用,是函数的局部变量。在一个函数中定义的变量是这个函数的局部变量,所以只在这个函数内起作用。复合语句中定义的变量其作用域是这个复合语句,不会扩大到整个函数。 (19)答案:(A) 解析: 该题是if语句的嵌套,else总是与它上面最近的if配对。因为a《 p》 (20)答案:(D) 解析: 本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。 (21)答案:(C)解析:p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。 (22)答案:(D) 解析:定义一个结构的一般形式为: struct 结构名 { 成员列表 }; 本题中,stutype是在声明类型的同时定义的struct stu类型的变量,而不是用户定义的结构体类型名。我们需要注意以下几点:①类型与变量是不同的概念;②对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量;③成员也可以是一个结构体变量;④成员名可以与程序中的变量名相同,二者不代表同一对象。 (23)答案:(C)解析: 最初,指针变量p和q分别指向整型变量a和b,然后借助第三个指针变量r,使p和q的内容进行交换,此时p和q分别指向整型变量b和a,而变量a和b并没有进行交换。 (24)答案:(C) 解析: int a,b,k=4,m=6,*p1=&k,*p2=&m;声明整型变量a,b,k,m和指针p1,p2,并分别将4和6赋给k和m,将k和m的地址赋给p1和p2;a=p1==&m;等价于a=(p1==&m);将p1是否等于地址m的值(0)赋给变量a,b=(*p1)/(*p2)+7;该句的含义是将后面表达式的的值7赋给变量b。 (25)答案:(B) 解析:本题考查函数的递归调用。fib(3)=fib(2)+ fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。 26)答案:(C)解析: 由于()优先级高于*,所以void *fun()说明了一个函数,该函数的返回值是无值型的指针类型,而void(*fun)()说明指针fun指向一个函数,该函数无返回值。 (27)答案:(B) 解析: 本题考查的函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值的改变,即本题中c的值未改变,仍然是6。 (28)答案:(B) 解析: 本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。 (29)答案:(C) 解析: fun()函数的功能是从数组的头尾开始,将第一个元素和最后一个元素对换,将第二个元素和倒数第二个元素对换,直到数组的中间。调用fun函数后,再将对换了元素的数组依次输出。 (30)答案:(B) 解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在本题解析中,我们试图将这一问题解释清楚! 大家可以考虑一下利用下面这函数可不可以实现a和b的互换。 swap(int x, int y) { int t; t=x; x=y; y=t; } 如果在main函数中用swap(a,b),会有什么结果呢?在函数调用开始时,a的值传送给x,b的值传递给y 。执行完swap函数后,x和y的值是互换了,但main函数中的a和b并未互换。也就是说由于“单向传递”的“值传递”方式,形参值的改变无法传递给实参。 为了使在函数中改变了的变量值能被main函数所用,不能采取上述把要改变值的变量作为参数的办法,而应该用指针变量做函数参数。在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化被保留下来,这样就实现了调用函数改变变量的值,在主调函数中使用这些改变了的值的目的。 swap(int *p1,int*p2) { int p; p=*p1; *p1=*p2; *p2=p; } 注意交换*p1和*p2的值是如何实现的,如果写成下面这样就有问题了! swap(int *p1,int*p2) { int *p; *p=*p1; /*此语句有问题*/ *p1=*p2; *p2=*p; } *p1就是a,是整型变量。而*p是指针变量p所指向的变量,但p中并无确切地址,用*p可能会造成破坏系统的正常工作状态。应该将*p1的值赋给一个整型变量,用整型变量作为过渡变量实现*p1和*p2的交换。 请注意,不能企图通过改变指针形参的值而使指针实参的值也改变 swap(int *p1,int*p2) { int *p; p=p1; p1=p2; p2=p; } 程序的原意是交换两个指针的值。但是C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量做函数参数也要遵循这一规则。调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值…… (31)答案:(A) 解析: 选项A),局部静态变量的存储空间在程序整个运行期间都不释放,所以比局部动态变量的生存期长。选项B),全局变量说明为静态存储时,作用域不会扩大。选项C),局部静态变量未赋初值时,系统编译时会自动赋初值0或空字符。   选项D),在未调用函数时,函数的形参不占内存的存储单元,只有调用时才动态分配存储空间,所以形参不能说明为静态存储,而局部变量可以说明为静态存储。 (32)答案:(A)解析: 在解答本题时应该考虑两个问题:结构体变量的长度及sizeof()求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,struct date中包含year,month,day三个整型变量。一个整型变量所占的字节数为2。 (33)答案:(B)解析: 本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。 (34)答案:(D) 解析:在C语言中,逻辑运算符有4个,它们分别是!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c《′B′);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c《′B′是成立的,显然,该表达式的值为1。 (35)答案:(C) 解析: *p[3]是一个指针数组,它的3个元素都是指向整型数的指针。p[0]存放的是a[1][0]的地址,则p[0]+1存放的是a[1][1]的地址,所以*(p[0]+1)代表的元素是a[1][1]。 (36)答案:(D) 解析: 带参数的宏定义如下:#define 宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,不必在行末加分号。 (37)答案:(D) 解析:本题中需要填空的是for循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并与9取余为0即可满足本题的条件。 (38)答案:(D) 解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。 (39)答案:(D )解析: 这是一个给结构体数组赋初值的问题。它的赋初值过程与上述二维数组赋初值很相似。只是这里的大括号中的初始值没有按行给出(即没有用大括号分开),在这种情况下,初始值将按数组的各个元素在内存中的存放次序逐个逐个地赋给各元素。现在结构体数组的各个元素在内存中的存放次序是这样的:class[0].name,class[0].age,class[1].name,class[1].age.。.,由此可以知道,包含字母′M′的字符串“Mary”赋值给了元素class[2].name,则与字符′M′先对应的表达式是class[2].name[0]。 (40)答案:(A) 解析: 函数strcpy的功能是字符串拷贝,用法char *strcpy(char *str1,char *str2),作用是将字符串2复制到字符串1中去。二维数组可以看做是一种特殊的一维数组,它的元素又是一个一维数组。本题把 arr看做是一个一维数组,它有两个元素:arr[0],arr[1],每个元素又是一个包含4个元素的一维数组。 (41)答案:(B) 解析: 在main函数中,对f(1)和f(2)的值进行了累加。 f(1)
tj