1、二级C语言真题2005年4月答案真题 120一、选择题 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:D答案解析:评析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。第2题:参考答案:B答案解析:评析:栈是种特殊的线性表,又称先进后出表(FirstInLastOut,FILO)。第3题:参考答案:D答案解析:评析:假设线性表的长度为n,贝临最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从 后往前扫描,需 要比较次数为n(n-1)/2。快速排序法的最坏情况比铰次数也是n(n1)/2。第4题:参考答案:C答案解析:
2、顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性 表中所 有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较n次。第5题:参考答案:A答案解析:在链式储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。第6题:参考答案:C答案解析:评折关于软件测试的目的,Grenford JMyers在The Art of Software Testing-书中给出了深刻的阐 述,整体来说,软件 测试的目的就是尽可能多地发现程序中的错误。第7题:参考答案:
3、B答案解析:评析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简 单。软件设计, 应尽量做到高内聚,低耦合,有利于提高模块的独立性。第8题:参考答案:D答案解析:评析:计算机软件是计算机系统中与硬件相互依存的另部分,是包括程序、数据及相关文档的完整集 合。第9题:参考答案:D答案解析:评析数据独立性是数据与程序间的互不依赖性。即数据库中数据独立于应用程序。也就是说,数 据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A、B、C三种说法都是错误的。第10题:参考答案:C答案解析:评析:层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。第
4、11题:参考答案:B答案解析:评析;有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。第12题:参考答案:A答案解析:评析:C语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表 示法,是合 法的。第13题:参考答案:C答案解析:评析:算法的特胜中包括有零个或多个输入及有一个或多个输出这两个特性。一个算法得到的结果 就是算法的 输出,没有输出的算法是没有意义的,所以一个算法必须至少有一个输出。第14题:参考答案:D答案解析:评析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。 注意:大写 字母
5、和小写字母被认为是两个不同的字符。A中Main与主函数名main不同。第15题:参考答案:B答案解析:评析:指数形式的实型常量要求字母e(或E)之前必需有数字,且e后面的指数必须为整数,所以本题中选项B 非法。第16题:参考答案:C答案解析:执行语句“printf(%c,,b+);”后,b的值变成字符3,执行“printf(%dn,b-a);,即3-1。第17题:参考答案:A答案解析:评析:执行printf(%d%d,m+,+n);后,输出的是m和n+1的值1235,接着执行printf(%d% da,n+,+m);输 出n和m+1的值3514。第18题:参考答案:B答案解析:评析:scanf
6、函数中的格式控制后面应当是地址,而不是变量名。对于变量,通过地址运算符&求出 内存中的地 址;对于数组c10,数组名c即为数组在内存中的地址。第19题:参考答案:A答案解析:评昕根据本题的数据输入形式scanf(m=%dn=%do=%d,%m,&n,&p);说明在输入数据时,必须输入 m=、n=、 p=,字符,且中间不能含有空格。第20题:参考答案:B答案解析:评析:本题中a=d/10%9;的值为25/10%9=2; b=a&(-1);为2&(-1)=1(注意:-1表示真,只有 0才表示假), 所以a,b的值分别为2,1。第21题:参考答案:D答案解析:执行“i+=1&(+j=|k+=3)”时
7、,表达式“i+=1”的值为真,其值为1,表达式“+j=3”的值为真,根据短路原理,右边的表达式“k+=3”不再进行运算,括号中表达的值为1,作与运算后整个表达式的值也为1,输出i,j,k时,由于未执行过k,所以它们的值分别为为2,3,3。第22题:参考答案:A答案解析:评析:条件表达式的般形式为:表达式1?表达式2:表达式3 本题先求的是ab的值,为真,所以整个表达式ab?a:cd?c:d的值为a的值1。第23题:参考答案:B答案解析:评析:本程序的作用是求除pO外的其他奇数的和。第24题:参考答案:C答案解析:C语言中以0作为字符串的结束符,且strlen()函数计算的是0字符前的所有字符的
8、个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。第25题:参考答案:B答案解析:评析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项C不符合数组定义形 式,数 组名后应加上;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表 示对应字符的 ASCII码,所以选项B是正确的。第26题:参考答案:A答案解析:评析: 函数fl的功能是返回两个数中比较大的值,f2的功能是返回两个数中比较小的值。第27题:参考答案:C答案解析:C语言规定0为字符串结束标志。所以“char a=xyz”的数组长度为4,而“b=x,y
9、,z;”的数组长度为l数组长度与strlen函数所求的长度不同,本题是指数组占内存空间的大小。第28题:参考答案:D答案解析:评析:本程序中函数f的作用是交换指针变量x和Y所指向的存储单元的值。第29题:参考答案:D答案解析:评析:本题赋值后,a的数组元素的值分别为a00=0,a01=1,a02=2,a12=2,a10=3, a11=4,a12=5,a20=6, a21=7,a22=8,故本题输出的值为345。第30题:参考答案:C答案解析:评析:在C语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出下标越界的错 误提示。第31题:参考答案:C答案解析:评析:本题函数fun的作
10、用是将指定的数组元素(从下标n到下标m)向后移位。由函数调用fun(a,2,9);可知,函数fun用于将a2到a9的各元素依次向后移位,移完后,a数组中各元素的值分别为1,2,3,3,4, 5,6,7,8,9,10,故输出的 前5个数组元素为12334。第32题:参考答案:答案解析:在主程序的第一个for循环循环两次,每次执行时i的值分别为0和1。第1条语句让Ptr的值分别为 a+O(即元素a0O 的地址)和a+1(即元素a1O的地址);第2条语句是一条输入语句,它每次接收一个十进制整数存入到pit 所指的内存地址中, 题目要求输入的数据为“1 2 3”,所以两次scanf()函数的调用使a0
11、0和a10分别被赋为1和 2。第3条语句让ptr自 增1,在这里没有起到任何作用,因为每次进入循环体ptr都会被重新赋值。最后,程序用一个两重循环按行 列输出二维数组a中 的所有元素。所以,选项B符合题意。第33题:参考答案:B答案解析:评析:用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数 绍,这样两个数 组就共同占用同段内存单元。第34题:参考答案:A答案解析:评析: C语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出, 即为 1,2,3,4,5,6,7,8,9,0,。第35题:参考答案:D答案解析:评析:return语
12、句用于从被调函数带回个函数值。void关键字表示无类型,即不需要从被调函数中 带回函数值, 所以不需要return语句,故编译时出错。第36题:参考答案:C答案解析:评析:按位与时,1&1=1,其他都等0。因为本题中相与的两个值相等,即对应位上的二进制值相等, 所以与 的结果也即为其值本身。第37题:参考答案:D答案解析:评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间:不能在一行上写多条预处理命 令;宏名一 般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。第38题:参考答案:C答案解析:评析:union是表示共用体的关键字,成员a,b,c共占用同一个内
13、存空间,data的每个成员起始地址都相 同;共用体变 量所占的内存长度等于最长的成员的长度,故变量data所占的内存字节数与成员c所占字节数相等;执行 dataa=5;printf(%fn,datac);printf函数只是将内存中的数据以不同的类型输出,而 不能将内存中的整型数据自动转换 为等值的浮点数,故C是错误的。第39题:参考答案:D答案解析:评析:选项A定义了字符型的指针变量sp,则*sp存储的是第一个字符,而给它赋的是字符串,故错; 选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误; 选项C定义了个字符型的数组s10,再通过*s给数组元素赋初值,这时是与选项A相同的错误
14、。第40题:参考答案:C答案解析:评析:typedef关键字用于声明一个新的类型名代替已有的类型名。 本题中如果没有用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,相当于用 NEW代表了struct ST这一结构体类型,故NEW为结构体类型。第41题:参考答案:B答案解析:评析:break和continue的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而 break 语句则是结束 整个循环过程,不再判断执行的条件是否成立。第42题:参考答案:A答案解析:本题通过p=s将指针变量p指向字符数组s,在第一次输出时,由于+和*同一
15、优先级,*p+相于 *(p+)。 P指向s1,输出为s1的值。第43题:参考答案:D答案解析:评析:字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的 字符或遇到 0为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。第44题:参考答案:B答案解析:评析:本题程序为二重循环,外循环控制输出数据的行数,内循环控制输出数据的列数。从本题输出的形式 来看,程 序要求输出的是4行4列。第45题:参考答案:A答案解析:评析:在C语言中,函数的参数传递方式采用按值传递,因此不能通过调用函数的方式来改变指针本身的 值,只能改变 指针所指变量的值。第
16、46题:参考答案:A答案解析:评析:题中将函数fun的入口地址赋给了指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函 数fun。第47题:参考答案:D答案解析:评析:要想将q所指结点从链表中删除,同时保持链表的连续,必需使P结点的next指向r,在四个选项中, 只有选项 D不能做到。第48题:参考答案:答案解析:选项C中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,故此种定义方法是错误的。第49题:参考答案:D答案解析:评析:fseek函数用于改变文件的位置指针。 本题中fseek(fp,0L,SEEK_SET)的作用是将位置指针移到文件头。 feof的作用是
17、判断文件是否结束,已指到文件的末尾,则返回值为非零,否则为零。 ftell的作用是得到流式文件中的当前位置,用相对于文件开头的位移量来表示。 fgets的作用是指定文件读入一个字符串。第50题:参考答案:B答案解析:评析:两次使用写入的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入 的数据覆盖了 文件原有的数据,故本题中t1dat的内容为end。二、填空题第51题:参考答案:19详细解答:评析:二叉树的性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比变为2的结点多一个。本题 中度为 2的结点数为18,故叶子结点数为18+1=19个。第52题:参考答案:对象详细
18、解答:评析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类 是对象的抽 象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。第53题:参考答案:程序调试详细解答:评析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中 的错误。先 要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命 期,调试主要 再开发阶段。第54题:参考答案:关系详细解答:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。第55题:参考答案:算法详细解答:评析:所谓算
19、法是指解题方案的准确而完整的描述。第56题:参考答案:56 10300详细解答:评析:在scary格式控制符中,如果在%后有一个*附加说明符,表示跳过它指定的列数。本题中%d %*d%d表 示将10赋给i,%+d表示读入整数但不赋给任何变量,然后再读入整数30赋给变量i,那么变量k并没有重 新赋值,仍 为初始值0。所以输出的结果为10300。第57题:参考答案:57 81详细解答:评析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行转换。本题中替换的式子为: 4*i+j*i+j+1,代入 i,i的值得81。第58题:参考答案:58 4 5 99详细解答:评析:本题需特别注意的
20、是;的问题,不能把t=a,a=c;c=t;误认为是第一个if的语句,实际 上,只有t=a才是 第一个if的语句。第59题:参考答案:59 10200详细解答:评析:本题中(a%b1)的运算顺序为先算括号算术运算符关系运算符一逻辑运算符。 其中a%b=10,a/b=O, 所以a%bl值也是0,故整个表达式的结果为0,所以输出的a,b,c的值为10 20 0。第60题:参考答案:60 0918273645详细解答:评析:本题程序的作用是通过for循环将0-9这10个数字从前向后,同时也从后向前依次输出。第61题:参考答案:(61) 1 B详细解答:评析:C语言使字符型数据和整型数据之间可以通用。题
21、中执行a=getchar();后,a的值B,在内存中的表现形式为AsCII码66;执行scanf(%d,&b):后,b在内存中的表现形式为33,然后经过a=a-A +0;b=b*2;运算,得出a的 值为字符1,b的值为ASCII码66,最后以字符型输出为1 B。第62题:参考答案:62 bri或*(br+i)详细解答:评析:二维数组a存放3行4列的数组元素,维数组b用于存放每行的最大数。在函数fun中,外层for循环 用于控制 行数,内层for循环用于控制列数。第63题:参考答案:63 4 3 34详细解答:评析:用变量作为函数的实参时,属单向传递,即值传送方式,此种函数参数的传递方式只能由实
22、参 传给形参,不 能由形参传回来给实参。第64题:参考答案:64 abcfg详细解答:评析:函数fun的作用是将s所指的字符串中从第p+3到第k+1个字符向前移动两个位置。本题程序是将数组 s中从第6 个元素开始的值分别向前移动两个位置。在执行fun函数时,P的值是3,k的值是7,所以,具体执行 for(i=p;ik-1;i+) si=si+2;语句的过程如下: i=3:判断ik-1成立,执行s3=s5,此时,s3=f;i=4:判断ik-1成立,执行s4=s6,此时,s4=g;i=5:判断ik-1成立,执行s5=s7,此时,s5=0; i=6:判断ik=+i;,由于是前加,所以m0k=i,执行
23、p+后p=m+1:执行 q-k=i+;, 由于是后加,所以m4k=1,然后使得i加上1,即i=2,q-后,q=m+3;p=m+1,q=m+3,条件p!=q成立,执行p-k=+i;,由于是前加,所以i=3,m0.k=3,执行p+后p=m+2; 执行q-k=j+;,由于是后加,所以m4.k=3,i=4,q-后,q=m+2;p=m+2,q=m+2,条件p!=q不成立,则执行qki;即m2.k=4;故输出的值为13431。第68题:参考答案:68 p1+(strlen(str)-1)或str+(strlen(str)-1) 69 t=0或!(t!=0)或t!=1或!t 70 huiwen(str)详细
24、解答:评析:本题的要求是判断从键盘输入的字符串是否是回文,但在主函数中并没有完成此功能的代码,故第70空 应该填 调用函数huiwen代码,即huiwen(str)。 由于回文字符串是指正向与反向拼写都一样,所以对于个字符串,如果正向顺序与反向顺序对应位置上 的字符一 样,则此字符串即为回文。在函数huiwen中,已用p1=str使得pl指向字符串slr的第个字符的地址,则 第68空语 句的功能应该是使得p2指向字符串str的最后一个字符串的地址,故填pl+(strlen(str)-1),由于p1与sir指向 的是同个 地址,所以,第68空也可以填str+(strlen(str)-1)。 在进行for循环时,如果p1所指向的字符与p2指向的字符不相同,则说明,字符串str不是回文,则用t=-I 标记, 并退出循环,执行下面的if语句,由于题中要求如果是回文,则返回yes!,否则,返回no!。故当t=0 的时候, 说明字符串str为回文,所以第69应填t=0或!(t!=0)或t!=l或!t。更多试卷请见麦多课文库
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1