1、二级C语言真题2006年4月答案真题 120一、选择题 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:D答案解析:结构化程序设计方法的主要原则是:自顶向下,逐步求精,模块化,限制使用goto语句。可复用性是指软件元素不加修改和稍加修改可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法。面向 对象的程序设计具有可复用性的优点。第2题:参考答案:A答案解析:模块的独立程度可以由两个定性标准度量:内聚性和耦合性。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。一般
2、来说,要求模块之间的耦合尽可能地弱,而要求模块的内聚程度尽可能的高。第3题:参考答案:D答案解析:因为测试的目的在于发现错误,从心理学角度讲,由程序的编写者自己进行测试是不合适的,为了达到最好的测试效果, 应该由独立的第三方进行测试工作,所以选项A错误;程序调试,修改一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之 后,必须进行回归测试,所以选项B错误;所谓软件维护,就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过 程,可见选项C也是错误的。第4题:参考答案:B答案解析:栈的特点是栈顶元素总是最后被插入的元素,也是最早被删除的元素;栈底元素总是最早被插入的元素,
3、也是最晚才能被删除的元素。即栈的修改原则是后进先出(LastInFirstOut,简称LIFO)或先进后出(FirstInLastOut,简称FILO),因此,栈也称为 后进先出表或先进后出表。第5题:参考答案:A答案解析:所谓线性链表,就是指线性表的链式存储结构,简称链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。栈、队列和双向链表是线性结构,二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度 来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。第6题:参考答案:D答案解析:后序遍历可以描述为:若二叉树为空,则空
4、操作;否则: 后序遍历左子树; 后序遍历右子树; 访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,如果知道这个小技巧,可以迅速确定本题的 答案为选项D。第7题:参考答案:C答案解析:满二叉树是指除最后一层外,每一层上的所有结点都有两个子结点的二叉树。满二叉树在其第i层上有2i-1个结点,即每一层上的结点数都是最大结点数。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-164个叶子结点。第8题:参考答案:D答案解析:两个实体集之间的联系实际上是实体集间的函数关系,主要有3种:一对一的联系,一对多的联系,多对多的联系。商品与顾客两个实体集之
5、间的联系一般是多对多,因为,一种商品可以被多个顾客购买,而一个顾客也可以购买多个商 品。第9题:参考答案:A答案解析:在ER图中,用矩形表示实体集,用椭圆形表示属性,用菱形(内部写上联系名)表示联系。第10题:参考答案:C答案解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组 成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一?硬
6、件平台(硬件)、系统平台之二?软件平台 (软件)。第11题:参考答案:C答案解析:C语言规定,标志符由字母、数字或下划线组成,它的第一个字符必须是字母或下划线。第12题:参考答案:C答案解析:数值常量包括整型常量和字符常量。在用字母e(或E)表示指数形式的实型常量时,字母e(或E)之前必须有数字且字母e(或E)后面的指数必须为整数。第13题:参考答案:A答案解析:字符常量是括在一对单引号内的字符。选项A018是八进制字符串格式,所以里面的数不能大于8。选项B、 C、D都是转义字符。第14题:参考答案:D答案解析:这道题要注意2/5的结果是2,因为运算符两边的数值类型均为整型,故运算结果的数值类
7、型也被认定为整型。第15题:参考答案:D答案解析:字符串常量是用一对双引号括起来的字符序列,用字符数组来存放,不用大括号。第16题:参考答案:B答案解析:二维数组的初始化有以下几种形式:分行进行初始化。不分行的初始化。部分数组元素初始化。省略第一维的定义,不省略第二维的定义。选项B等号右边分了3行,大于等号左边数组的行数2。第17题:参考答案:B答案解析:canf()语句用空格区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。第18题:参考答案:答案解析:选项Amain();的分号是错误的,不能有分号;选项C的注释语句多了两个*号;选项Dinclude前面没有#。第1
8、9题:参考答案:答案解析:C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式, 取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。第20题:参考答案:答案解析:在调用子函数时,应对其进行说明。选项A)中,调用时,没有对子函数进行说明。选项B)、C)中被调用函数在主调函数之前定义,不用说明;选项D)中在主调函数中对被调用函数的返回值类型进行了说明。第21题:参考答案:C答案解析:E代表不是0的整数。在选项A)、B)、D)中的switch后面的表达式都是E不等于0为
9、真。第22题:参考答案:A答案解析:while语句的功能是:计算表达式的值,如为真,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为真,则重复执行循环体语句。直到表达式的值为假时,结束循环。ch=getchar()应加一个括号,表示输入字符的函数。第23题:参考答案:B答案解析:返回值为指针变量指向的数据,该数据已被定义为整型。第24题:参考答案:D答案解析:p=scanf(%lf,p)表示用键盘输入的数给变量p地址中。第25题:参考答案:D答案解析:r-next=q,这时r指向的节点为q;p-next=r,这时p指向的节点为r;q-next=r-next,因为r节点已经指向q,所以执行
10、这个语句后q又指向q,所以不对。第26题:参考答案:C答案解析:-的运算优先级比+高,此时,pt-=10,执行自加运算后为11。第27题:参考答案:B答案解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。第28题:参考答案:D答案解析:为按位异或运算符;为左移运算符。b2二进制左移两位,后得8,与a进行或运算后,得9。第29题:参考答案:D答案解析:putchar(c1)输出1,putchar(c2)输出2,printf(%c%cn,c5,c6)输出45。第30题:参考答案:B答案解析:此题考核的是while条
11、件语句及自减运算。当while的条件表达式成立时(非零),重复执行循环体,但此题的 while循环无循环体,则只要while的条件表达式成立,就不断执行while条件表达式,直到其条件表达式不成立,程序就自动跳出while循环,直接执行printf语句。“y”表示先运用y的值,再进行y自减。本题一开始先判断y为10的值是否满足条件(同时y的值自减1),显然y=1O条件满足,则再次执行while语句,判断y为9的值是否满足条件 (同时y的值自减1)直到判断y为0的值是否满足条件(同时y的值自减1,即y=-1),此时条件为假,退出循环,执行printf语句,输出y=-1。第31题:参考答案:D答案
12、解析:else子句不能作为语句单独使用,在题中if与else语句被c=2;语句分隔开了。第32题:参考答案:B答案解析:此程序考察了for循环和x+。对于大循环,有两个x+,其中循环3次,对于小循环,循环三次,但是运行了两次x+,所以最后结果是6+2=8。第33题:参考答案:C答案解析:此题考核的是数值类型的定义与强制转换。本题在进行调用函数fun2()时,又对函数fun1()进行了调用,由于函数 fun1()定义为整型,所以第一次调用fun1()时返回的值为1,然后再将1赋值给a,此时由于a为double型,则系统自动类型转换,将1转换成了1.000000赋值给了变量a,以此类推,得b的值为
13、4.000000,然后诵过“return(int)(ab);”将ab的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。第34题:参考答案:B答案解析:本题考查多维数组的初始化。使用一个大括号初始化多维数组时,初始化原则为先列后行,即初始化完第一行的所有列后再初始化下一行的元素。程序输出t20、t11、t02,它们的值分别为3、5、7。第35题:参考答案:B答案解析:此程序是统计一周七天中英文名称首字母为T的个数。Pi0是字符串的首字符,一共有两个T,所以 n=2。第36题:参考答案:C答案解析:统计19九个数中
14、的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。第37题:参考答案:A答案解析:(*q)+是q所指的字符加1,q+就是指针移到下一个字符。第38题:参考答案:C答案解析:此题考核的知识点是指针变量值的交换。c语言中,字符串常量在内存中是以字符数组的形式进行存放的,因此字符指针x和y指向的是各字符串的首地址,也就是字符串第个字符的地址,则*x与*y交换的是字符串的第个字符,即字符“a”与“1”的交换,而字符串中其它字符保持不变,所以答案选C。第39题:参
15、考答案:A答案解析:本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。第40题:参考答案:C答案解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是15,再次调用后sum=15,所以Fun(b,4)=45,s=45+15=60。第41题:参考答案:A答案解析:此题考核的是共用体的特征。int类型变量和字符数组ch共用两个字节的相同的存储单元,通常ch0位于低字节, ch1位于高字节,所以s.
16、ch0=21,s.ch1=43。第42题:参考答案:C答案解析:此题考核的是指针数组。题目中定义的指针数组“*p”相当于一个两行四列的数组。执行for()语句 i=0,j=O,pij=p00=3,满足while循环条件,执行循环体中的if语句得num=3,j=2,此时pij=p02=9,满足循环条件,执行while循环体得num=39,j=4,判断while条件且不符合并退出while循环;再次执行for()语句i=1,j=0,pij=p10,满足while条件,执行循环体中的if语句,但不符合if条件,所以num不进行运算,j进行加 2运算j=2,此时pij=p12=4,if条件还是为假,n
17、um不进行运算,j进行加2运算j=4,再执行while语句条件不符合退出循环。所以结果为39。第43题:参考答案:A答案解析:第一次fwrite操作把Fortran写到文件fp中,第二次操作,把Basic写入文件fp中,此时把Fortr字符覆盖了,所以最后输 出的是Basican。第44题:参考答案:D答案解析:并不是源程序中的所有行都参加编译。在条件编译形式下,相关内容只在满足一定条件时才进行编译。选项D中的非执 行语句不在其范围内。第45题:参考答案:B答案解析:算法应该具有下列五个特性: 有穷性:一个算法必须在执行有穷步之后结束。 确定性:算法中的每一步,必须有确切的含义,在他人理解时不
18、会产生二义性。 动态性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。 输入:一个算法应该有零个或多个输入。 输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。第46题:参考答案:D答案解析:形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在C语言中, 实参向形参传送数据的方式是值传递。第47题:参考答案:A答案解析:选项A正确,原因是语句p=str表示指针变量p指向数组str20的首地址也就是str0。所以*p与str0中的值相等。第48题:参考答案:D答案解析:模运算%也称为求余运算,运算符要求两个
19、运算对象都为整型,其结果是整数除法的余数。第49题:参考答案:B答案解析:预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。只是其中的一个文件,并不说每次预处理命令都用此文件。第50题:参考答案:A答案解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型。二、填空题第51题:参考答案:45详细解答:基本数据结构与算法:基本排序算法 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。第52题:参考答案:类详
20、细解答:程序设计基础:面向对象方法的基本概念 评析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是刑象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象是其对应类的个实例。第53题:参考答案:关系详细解答:关系型数据库管理系统的基本概念 评析:“在Visual FoxPro中,个“表”就是个关系。个关系的逻辑结构就是一张二维表。第54题:参考答案:静态分析(静态测试)详细解答:软件测试技术和方法 评析:静态测试指不在计算机上运行被测试程序,而采用其他手段来达到对程序进行检测的目的,包括人工测试和计算机辅助静态分析方法。动态测试指通过在计算机上
21、运行被测试程序,并用所设计的测试用例对程序进行检测的方法。第55题:参考答案:物理独立性详细解答:数据独立性 评析:数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。数据在磁盘上的数据库中怎样存储是由DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,远洋当数据的物理存储改变时,应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。第56题:参考答案:printf(a=%d,b=%d,a,b);详细解答:printf函数为格式输出函数,
22、括号内包括两部分:(1)“格式控制”是用双引号括起来的字符串,其中包括两种信息:“格式说明”由“%”和格式字符组成,此题定义为int型所以要用%d;“普通字符”即需要原样输出的字符,此题目中为a=,b=;(2)“输出列表”是需要输出的些数据,可以是表达式。第57题:参考答案:(abc)&(acb)&(bca)详细解答:此题主要考核的是if语句的条件运算符及逻辑运算,逻辑“与”运算是指所有条件为“真”时结果才为真,根据构成三角形的条件两边之和大于第三边得出上面的结果。第58题:参考答案:30详细解答:此题主要考核的是多维数组以及for()循环语句的应用,即i=0时,s=()a00a02=10,i
23、=1时, s=10a11a11=18,i=2时,s=18a22a20=30。第59题:参考答案:a*b*c*d*详细解答:此题主要考核的是函数与个简单算法结合在起的应用。首先定义个int型变量米存放字符串str的长度,执行while条件语句,通过分析可知,字符串第2*i项的值可由第i项的值得到;第2*i-1项直接赋值为*号,i减1,如此反复直到不满足i0的条件时,输出运行后的字符串。第60题:参考答案:11详细解答:此题主要考核的知识点是数组名作为函数参数及函数调用牙口参数的传递。调用实参可知n=10,形参数组t指向实参a的首地址t0=11。执行fun()函数的if-else语句,因为n=10
24、所以执行else语句,在满足if(n=2)的条件下:m=fun(t0,9), m=fun(t0,8), m=fun(t0,7),.m=fun(t0,2), .m=fun(t0,1),当n=1时满足if(n=1)的条件,所以执行此处的return语句,返回数组首地址指向的值t0,所以答案为11。第61题:参考答案:!knahT详细解答:本题考核的知识点是“文件包含”处理功能,“文件包含”处理是指个源文件可以将另外个源文件的全部内容包含进来,供源文件使用。此题中myfun.c就是被包含在T18c下进行编译。myfun.c文件是用来实现字符串反序的功能,用getchar()函数输入字符并赋给数组s,
25、每输入个字符,数组下标n自行加1,知道遇到回车键时输入结束。while(n=0)下的条件语句就是来实现串符串反续功能的。第62题:参考答案:strn 或*(strn) 或 pn 或 pn详细解答:此题主要是将形参c中的字符与str中的字符比较,返加以形参c中字符开头的后续字符串,题目中的变量n起到了记录形参c中字符所在str字符串中的位置,固返回的结果用strn或其等效形式表示。第63题:参考答案:i10 或 i=9 j%3!=0 或 j%3详细解答:此题主要考核的是continue语句的应用,continue语句的功能是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下次是否执行循环
26、的判定。j是用来存放符合条件的整数的,程序中j=i*106;语句求得了个位数为6的整数,由此可得出程序的循环次数为i10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以逻辑表达式为j%3!=0。第64题:参考答案:return0 return1详细解答:此题主要考核的是if条件语句,所谓素数就是指只能被1和其本身整除,不能被其它任何数整除的数。根据if条件语句,若形参a对i取余等于0,则形参a可以被其它数整除,所以此题第空填return 0;若形参a对i取余不等于 0,则形参a不可以被其它数整除,所以此题第二空填return 1。第65题:参考答案:ch
27、 或 ch=ch1 或 ch printf(n)详细解答:此题主要考核的是有关循环的程序分析。程序中使用了两层for循环,外循环的作用是控制行数,内循环的作用是控制每行的列数,在此循环内第个空中填入ch的作用是将输出的字符本身加1,成为欲输出的下个字符。第二个空中填入printf(n)是用来实现换行操作的。第66题:参考答案:p!=NULL 或 p 或 p!=0 或 p!=0 p-next 或 (*P).next详细解答:此题主要考核的是用指针处理链表。自定义结构体类型名为Node,并定义一个指向结点类型的指针next。用Node来定义头结点指针变量h,并定义另个指针变量p指向了第个结点,在满足p未指向最后个结点的空指针时,输出p所指向结点的字符串,所以第个空填p!=NULL或p或p!=0或p!=0,然后将p指向下一个非空结点,所以第二个空填p-next或与其等效的形式,反复执行直到所有的结点都输出,即遇到p的值为NULL。更多试卷请见麦多课文库
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1