1、二级C语言真题2005年9月答案真题 120一、选择题 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:C答案解析:程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测试。第2题:参考答案:A答案解析:二分法查找只适用于顺序存储的有序表。在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,(即从小到大,但允许相邻元素值相等)。第3题:参考答案:C答案解析:栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和删除只在线性表的一端进行。第4题:参考答案:D答案解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的
2、存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。第5题:参考答案:C答案解析:软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。第6题:参考答案:D答案解析:软件设计工具包括:程序流程图、N-S、PAD、H1PO,判定表,PDL(伪码)。而DFD(数据流图)属于结构化分析工具。第7题:参考答案:A答案解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品
3、从提出、实现、使用维护到停止使用退役的过程。第8题:参考答案:A答案解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重 要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。第9题:参考答案:B答案解析:从图中可以看出,关系T是关系R和关系S的简单合并,而合并的符号为u,所以答案为T=RUS。第10题:参考答案:B答案解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系
4、统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必 须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安 全性。第11题:参考答案:A答案解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到见名知意,且不允许使用关键字 作标识符。第12题:参考答案:C答案解析:空语句出现在任何位置都不会影响程序运行这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,
5、导致了此循环为死循环。第13题:参考答案:B答案解析:在使用标准输入输出库函数(除了Printf和scanf)前,必须要用预编译命令#include将头文件stdio.h包括到用户源文件中。第14题:参考答案:B答案解析:C语言中函数是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义;函数可以分别编写、分别编译,提高调度效率,但函数不能单独运行:函数间可以互相调用,但不能调用main函数。第15题:参考答案:A答案解析:由于运算符优先级比*高,所以char*line5;相当于char*(line5;,表示line是一个数组,每个数组元素是一个基类型为char的指针变量。第16题:参
6、考答案:C答案解析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则struct NODE为结构体类型,现在用typedef定义后,相当于用OLD代表了struct NODE这一结构体类型,故 OLD为结构体类型。第17题:参考答案:C答案解析:FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。所以用FILE定义的变量必须是数组或指针,所以选项C中的FILE fp;改为FILE*fp;就对了。第18题:参考答案:D答案解析:本题选项A、B、C中表达式用作if语句表达式时,其值一致,即判断
7、k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项D的表达式!k%2=1相当于!(k%2)=1,若k的值为奇数,则此表达式的值为 假。第19题:参考答案:A答案解析:第20题:参考答案:B答案解析:语句int n1=n2=10;中,由于变量n2未定义,所以此赋值语句错误:由于赋值语句中不能存在运算表达式,所以选项C中的赋值语句错误;选项D中指数表示错误,C语言规定,e后面的指数必须为整数;选项B 中的32是 ASCII码的表示形式,这是C语言中字符型数据和整型数据通用的表现,即一个字符数据可以以 字符形式出现,也可以以整数形式出现。第21题:参考答案:D答案解析:本题并未对变量II作任
8、何定义,所以编译时会出出非法字符的错误信息。第22题:参考答案:C答案解析:强制类型转换的一般形式为: (类型名) (表达式),而选项C中只给表达式加了括号,并没有绐类型名也加上括号,所以选项C的表达式错误。第23题:参考答案:A答案解析:逻辑运算符的优先级由高到低运算次序如下:!(非)&(与)|(或),选项A的表达式中,先对左边括号中!a进行运算,值为0,由于0=1的值为0,故整个表达式的值为0,本题答案为A。第24题:参考答案:B答案解析:三目运算符的一般形式为(表达式1)?(表达式2):(表达式3),当(表达式1)值为真时,(表达式2)的值为整个表达式的值;当(表达式1)值为假时,(表达
9、式3)的值为整个表达式的值。题中执行表达式k=ac?c:k,由于kc值为假,故k的值还等于原来k的值,即 2。第25题:参考答案:C答案解析:解此类题目只需记住else子句总是与前面最近的不带else的if相结合,切不可轻信试卷上的缩进格 式。所以题目中的 嵌套if语句的意思是“在ab的前提下,如果c=d就让y=O,如果c!=d就让y=1.所以应该选择C。第26题:参考答案:D答案解析:要使得程序段不陷入死循环,则必须存在终止循环的条件t=n,由于t的初始值为1,且每执行一次循环都会使得t的值减2,故执行本程序后t有可能的最大值为-1,然后,依次减2,所以键盘输入的n的值必须 是t的值之一,即
10、为任意负奇数。第27题:参考答案:D答案解析:n!=n*(n-1)*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是i1时,由于初值i=n是符合条件i1的,且增量为+1,故循环中永远不会出现不满足条件i 1的值,所以出现死循环。第28题:参考答案:A答案解析:题面中各变量定义后,指针变量p指向了变量n2所在的存储单元,指针变量q指向了变量n1所在的存储单元,要使得n1的值赋n2,可用指针变量q所指向的存储单元的值赋给指针变量p所指向的存储单元,即*p=*q。第29题:参考答案:B答案解析:由题中定义可以看出,指针变量p指向了x所在的存储单元
11、,故输出的*p的值即为x的值0。第30题:参考答案:D答案解析:对有参函数进行调用时,实参与形参的类型应相同或赋值兼容。由于整型数据与字符型数据可以通用,所以实参32与形参ch的类型是一致的:又因为整型变量给浮点型变量赋值是相兼容的,所以选项D是 正确的调用。第31题:参考答案:B答案解析:数组a各元素a0a9的值依次为110;在程序的说明部分,指针变量p初始化为&a3,即*p的值为4;指针变量q初始化为p+2,即&a3+2,所以*q的值为6,所以*p+*q的值为10。第32题:参考答案:C答案解析:字符数组有两种定义方式:一种是逐个字符赋给数组中各元素,如本题中p=a,b,c的定义,由于定义
12、时没有给出数组大小,此时字符个数就是数组的长度;另一种是将字符串作为字符数组来处理, 如题中q=abc的定义形式。C语言规定,字符串以0作为结束符,并占用一个存储空间。sizeof()函 数是计算变量或数组所分配到的内存空间的大小,故本题的输出结果是3 4。第33题:参考答案:C答案解析:对带参数的宏的展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。本题中il=f(8)/f(4)用#define f(x) (x*x)代替得il=(8*8)/(4*4),结果为4: i2=f(4+4)/f(2+2) 用#define f(x) (x*x)代替得i2= (4+4*4+4)
13、/(2+2*2+2),求得结果为3。故本题输出的值为4,3。第34题:参考答案:B答案解析:在逗号表达式(表达式1,表达式2)中,其运算方法是先求表达式1的值,然后求表达式2的值,整个逗号表达式的值是表达式2的值。故本题输出的是a2的值m。第35题:参考答案:A答案解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也算是一个字符)。故本题中变量c1被赋予字符a,c2被赋予回车符。第36题:参考答案:D答案解析:在switch语句中,表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的 case中的
14、常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句,各个case和default的出现次序不影响执行结果。所以在本题中,当k=5和k=4的时候,case都没有与其匹配的值,所以执 行了default语句;当k=3时,执行case3:n+=k;得n=3,然后执行default;当k=2时,执行case2: case3:n+=k得n=5,然后执行default;当 k=1时,执行case1:n+=k;case2:case3:n+=k;使得n加两 次k,得到n=7。第37题:参考答案:C答案解析:本题通过语句p=&a1扩将指针变量p指向了存储单元a1,即使得p0的值为4,然后通过
15、两次for循环,使得y的值分别加上p1和p2,那么y=6+8,所以输出的y的值为14。第38题:参考答案:C答案解析:本题sort函数的作用是将指定的数由大到小排序。主调函数sort(aa+2,5);中的实参aa+2是指aa2的地址,将其传给了形参a,使得形参中a0的值为主函数中aa2的值,即3;实参中的5传绐形参中的n,在sort函数中起着限制循环次数的作用,即使得参加排序的只有5个数,从aa2到aa6,所以本题输出 的结果是1,2,7,6,5,4,3,8,9,10,。第39题:参考答案:A答案解析:;本题将主函数中a2的地址传递给了sum函数中的形参a,使得sum函数中的(a+0)为主函数
16、中a2的址,所以 a-1即*(a-1)的值为主函数中a1的值;a1即*(a+1)的值为主函数中a3的值,故函数sum中 a0=2+4,由于此函数中的 a是指向主函数中的a2,所以主函数中的a2的值即为6。第40题:参考答案:D答案解析:函数swap1、swap2的作用均为交换两个数。主调函数swap1(a,a+1)使得数组a的首地址赋给形参c0,使得 c0指向a0所在的存储单元,a1的地址赋给形参c1,使得c1指向a1所在的存储单元,故交换c00与c10后,a0与a1值也发生了变化;主调函数swap2(&b0,&br1);起着同样的作用,使 得指针变量c0指向了b0)存储单元,c1指向了b1存
17、储单元,并在swap2函数中发生了交换,所以b0、b1的 值也发生变化,故本程序输出的结果是5353。第41题:参考答案:B答案解析:strlen是计算以0结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括0。题中q10=a,b,c虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前3个存储 弹元,其余存储单元系统自动加上0故数组q的长度为3;由于p数组中没有字符串结束符,故字符串的长 度不自绷定。第42题:参考答案:D答案解析:字符串比较函数strcmp(char*s1,char*s2)的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不
18、同的字符或遇到到0为止。如果全部相同,则认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当s1s2,返回值s2 时,返回值0。故本题经过排序后,得到第二个字符串是abbd,所以输出结果是4。第43题:参考答案:B答案解析:本程序的作是将字符串str倒序。语句p=str+strlen(str)/2+1;用于将指针变量p指向e字符所在的存储单元,p-2指向了c字符所在的存储单元,在函数f中将这两个存储单元的内容交换,并使得f函数中指向c 字符的指针变量s加1。指向c字符的指针变量t减1,然后继续将s和t指向的存储单元的内容进行交换,直到s指 向的存储单元的内容为空为止。所以本题
19、程序输出的结果是字符串abcdefg的倒序形式gfedcba。第44题:参考答案:A答案解析:题中(*p1)(float)定义了一个指向函数的指针变量p1,此函数的返回值是float类型。在main函数中,使得p1指向了函数f1,P2指向了函数缀。语句y1=p2(p1(2.0);先调用了p1函数,将其返回值4.000000传递给了f2的形参n,并使其函数返回值8.000000赋值给y1。然后在main函数中交换了p1、p2指针变量的指向,使p1指向了函数侵,p2指向了函数f1,并先调用函数f2,得到返回值4.000000,使其传递给f1函数 的形参n,并带回返回值16.000000赋值给y2。
20、在输出y1、y2时,各浮点数占3列,小数位数为0,即输出了 8,16。第45题:参考答案:C答案解析:解本题耍弄清楚这样几点:1、定义int a=2;中的全局变量a,其作用范围是从定义此变量的位置 开始到本源文件结束;2、static int a=3;中的静态局部变量a的作用范围是其所在的函数f,并对其只 赋一次初值,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值;3、复合语句 static int a=4;t+=a+; 和static int a=5;t+=a+;中定义的两个变量a属于复合语句中定 义的变量,作用范围只在其本身所在的复合语句内。对于本程序来讲,第三行定义的
21、静态局部变量并不会对 四、五两行的复合语句产生作用,这是因为复合语句中也定义了与其同名的静态局部变量。第46题:参考答案:D答案解析:本题定义了结构体类型的变量P作为形参,并将结构体变量s0中的值传递给了形参变量p,在函数f中,又对p中的内容作了改变,但这种改变对工函数中s0的值并不产生影响,所以主函数中输出s0的数据 依然是在主函数中初始化时的数据。第47题:参考答案:A答案解析:本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s1,并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name 是一个字符型
22、指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参 *name的改变也就是刘主函数中p-name的改变,而函数f中对形参num的改变并不会影响主函数中p-num的 值,因为此时传递给num的是一个值,而不是地址。第48题:参考答案:B答案解析:本题将结构体数组s的首地址传递给了结构体指针变量p,并在函数f中改变了指针变量p所指向的第二个结构体中的成员变量,这一改变,也就是改变了主函数中s1的成员变量,故程序输出的值为Penghua 20045 537。第49题:参考答案:A答案解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(-)左移()
23、按位与(&)按位异或()按位或(|)。是按位异或运算,当对应位上的二进制数值相同时,异或的结果为 0,对应位上的二进制数值不同时,异或的结果为1,本题73相当于01110011,所以a的值为4;& 是按位与运算符,只有当所有对应位上的数值都为1时,结果才为1;-是按位取反。题中-4&3相当于 1011&0011=0011,所以b的值为 3。第50题:参考答案:D答案解析:语句fprintf(fp,%d ,i)的作用是将变量i的值按%d的格式输出到中指向的文件上; rewind(fp)的作用是使指针重新返回文件的开头:fscanf(fp,%d%d,&k,&n)的作用是将磁盘文件 中的数据送给变量
24、k,n。二、填空题第51题:参考答案:数据库系统详细解答:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统。第52题:参考答案:空间详细解答:程序在计算机上运行时所耗费的时间由下列因素所决定:程序运行时所需输入的数据总量,对源程序进 行编译所需时间,计算机执行每条指令所需时间,程序中的指令重复执行的次数。前一条取决于实现算法的计 算机欺、硬件系统,习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的时间复杂 度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。第53题:参考答案:驱动模块详细解答:在进行
25、测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块):其中,驱动 模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用 于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功 能带入。第54题:参考答案:32详细解答:根据二叉树的性质:二叉树第i(i1)层上至多有2i-1,个结点。得到第6层的结点数最多是32。第55题:参考答案:逻辑详细解答:所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构:而数据的逻辑结构在计算机存储空 间中的存放形式称为数据的存储结构(也称数据的物理结构)
26、。在数据的存储结构中,不仅要存放各数据元素的 信息,还需要存放各数据元素之间的前后件关系的信息。而所谓循环队列就是将队列存储空间的最后一个位置 绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列不需要存放元素之间的前后件关 系,故它属于逻辑结构。第56题:参考答案:88详细解答:由于八进制数以0开头,所以0210表示八进制数;%X的格式指以十六进制形式输出,输出十六进制的a-f时以大写字母输出。所以本题可以先将0210化为十进制,然后再化为十六进制。第57题:参考答案:1详细解答:此题需特别注意的是if的判断条件是c=a,而不是c=a,由于a=1,故条件c=1为真:所以输出的c
27、的值为1。第58题:参考答案:p=(double*)malloc(sizeof(double)详细解答:malloc函数的作用是在内存开辟指定大小的存储空间,并将此存储空间的地址作为函数值带回,它的原型为void* malloc(unsigned int size),函数值为指针,这个指针是指向void类型,如果要将此返回地址赋 给一个指向特定类型的指针变量,则应进行强制类型转换,如本题答案中是用强制类型转换的方法使指针p的 基类型改变为double类型。第59题:参考答案:2 20.000000详细解答:由于赋值运算符按照自右而左的结合顺序,题中赋值表达式x=f*=n/=(c=50)的求解步
28、骤如下:首先,进行n/=(c=50)的运算,相当于n=n/c=100/50=2;其次,进行f*=n的运算,相当于f=f*n, 故f=20.000000;最后,得出x的值为20.000000。第60题:参考答案:t*10详细解答:本程序中变量s用于存放表达式1+12+123+1234+12345之和,变量t用于存放其表达式的各项,由于i=1时,要使得t=1;i=2时,要使得t=12;i=3时,要使得t=123;依此类推。故每一次循环的t的值与此次的i 及上次的t密切相关,即每一次的t值可用上次的t乘以10再加上此次的i的值就可以了,所以本题答案为t*10。第61题:参考答案:67 G详细解答:由
29、于5和3的ASCII码相差为2,所以变量a经过运算,得出其值为字符C,又因为输出时其形式是%d,故输出的值是字符C的ASCII码,即67;同理,变量b的值等于变量a的值加上字符6与字 符2的ASCII码的差值,即得到字符G,输出时以%c的形式输出G。第62题:参考答案:10详细解答:本题考查的是函数的调用,函数sub调用后的返回值仍被作为实参传递给函数sub的形参,此种调用连续进行3次,第一次调用:sub(1234)的返回值为1234/10+1234%10,即127;第二次调用:sub(127)的返回值为 127/10+127%10;即19;第三次调用:sub(19)的返回值为19/10+19
30、%10,即10。所以程序输出的结果是10。第63题:参考答案:*t详细解答:本题解题的关键在理解*(s+n),其中s代表字符串s的首地址,n是字符串s的长度,*(s+n)代表了字符串s最后一个字符的后一个字符,即0,根据题意, 0所在位置应该赋值为字符串t的第一个字符,字符串t的其他字符根据循环,依次赋值到s所指字符串的尾部,所以本题应填*t。第64题:参考答案:bcdefgha详细解答:函数ss的作用是将指针变量s指向的字符串的首字符移到最后一个位置,其他字符依次前移。其方法是:首先将首字符进行了保存,保存在字符变量t中;其次,从指针变量p指向的字符(字符串s中的第二个字 符,即字符B.开始
31、,通过语句(p-1)=*p;依次前移,直到*p指向的存储单元中的值为空为止;最后通过语 句*(p-1)=t;将保存在t中的字符放到移动后的字符串的末尾,所以本题输出的结果是bcdefgha。第65题:参考答案:15详细解答:本题通过递归调用实现了数组aa各元素之和,即a4+a3+a2+a1+a0=15。第66题:参考答案:5详细解答:第67题:参考答案:(67) =1或0 (68) i详细解答:本程序有两重for循环,外层for循环控制输出数据的行数,故第_67_空填=1或0,内层 循环控制每行输出的个数。在内层for循环中,用语句x=(j-1)*4+_68_;控制输出方阵中的具体数据,由 于这些数据与其所在的行、列(j,i)有关系x=(j-1)*4+i,故此此空填i。第68题:参考答案:(69) a0i (70)bi0详细解答:根据题意,语句biN-1=_69_;的作用是把a所指二维数组中的第0行放到b所指二维数组的最后一列中,在a数组中,第0行用a0来表示,所以第69空填对a0i;语句_70_=aN-1i;的作用是 将a所指二维数组中的最后一行放到b所指二维数组的第0列中,b数组中第0列用b0来表示,所以,第70空 填bi0。更多试卷请见麦多课文库
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1