1、二级C语言真题2008年4月答案真题 120一、选择题 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:C答案解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用矩形表示加工步骤,用菱形表示逻辑条件,第2题:参考答案:A答案解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。第3题:参考答案:B答案解析:耦合性和内聚性是模块独立性的两个定性标准,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合。第4题:参考答案:B答案解析:需求分析
2、的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标确认,又可以作为控制软件开发进程的依据。第5题:参考答案:A答案解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。第6题:参考答案:D答案解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2,快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5),简单选择排序n(n-1)/2、堆排序O(nlog2n),第7题:参考答案:B答案解析:栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶
3、,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。第8题:参考答案:C答案解析:数据库的设计阶段包括需要分析、概念设计、逻辑设计和物理设计,其中将E-R图转换成关系数据模型的过程属于逻辑9V阶段。第9题:参考答案:D答案解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组组成的,记为RS。第10题:参考答案:C答案解析:关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在SC中学号和课号的组合可以对元组进行唯一的标识。第11题:参考答案:C答案解析:本题主要考查的是C语言结构中的源程序书写格式这个知识点,在C语言中注释部分对程序的运行结果不产生任何影响,它可以出
4、现在任意位置;C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。第12题:参考答案:C答案解析:本题考查的是数据类型及其运算中标识符的定义,标识符只能由数字、字母和下画线组成,并且只能以字母和下画线开头,所以选项C)不合法。第13题:参考答案:B答案解析:字符常量是括在一对单引号内的一个字符,选项A)中C是字符常量;选项B)中C是字符串常量;选项C)中xCC是十六进制表示的转义字符:选项D)中中072是八进制表示的转义字符。第14题:参考答案:C答案解析:在赋值表达式中,赋值符号“=”的左边只能为要赋值的变量,不能为表达式
5、,右边可以为常量或者是表达式,故选项A)错误,选项C)正确:在取余运算中,运算符“%”两边都必须是整型数据,所以选项B)、D)错误。第15题:参考答案:B答案解析:本题考查的是数据类型的定义并赋值,选项A)中对变量声明类型且赋值的情况是不允许出现的,必须单独定义其类型。选项B)给实型变量赋值时不用引号,也不能将地址赋予实型变量:C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号(,)隔开,而不是用分号(;)隔开;在计算机存储字符时将字符相应的ASCII码以其对应的二进制进行存放,选项B)中的定义是合法的,故选项B)正确。第16题:参考答案:D答案解析:在用基本输出语句pri
6、ntf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数(正如本题的情况),多余的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。故本题选项D)是正确的输出结果。第17题:参考答案:B答案解析:选项A)用逻辑与运算符来连接关系表达式A=kk和kk=Z,以此来判断kk的字母是否是大写字母。选项C)用逻辑与运算符来连接关系表达式(kk+32)=a和(kk+32)=z,以此来判断kk的字母是否是大写字母。选项D)调用函数isalpha(),首先判断kk是否为字母,接着通过与运算(kk=91)来判断比是否为大写字母;而选项B)中首先判断语句(kkA
7、),假如为真时,就不进行(kk=Z)的判断,直接进入非运算,故不能正确判断kk是否为大写字母,故选项B)符合题意。第18题:参考答案:B答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项B)中c的值不为2、4、6时,表达式的值也为真。第19题:参考答案:B答案解析:本题考查的是程序结构设计中if语句的应用,当if判断条件成立时就执行其后的相关语句,否则不执行,本题中第一个if条件不成立,故不执行“a=b”,接着执行“c=a”,此时第二个if条件也不成立,故不执行其后语句,最终c的值为3。第20题:参考答案:D答案解析:本题考查的是用switch语句实现多分支选择结构,首先进入第一
8、个switch(x)判断,进入case 1中进行嵌套判断,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接着执行case 2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1,故选项D)正确第21题:参考答案:D答案解析:“x-”表示先执行程序,再令x的值减1;而“-x”表示令x的值减1,再执行程序。x=8时,x%2为非0值,执行语句printtr(%d, x-); continue;),输出“8,”,此时经过x-,x的值变为7,跳出此次循环;执行x-,x=6,x%3=0,后面语句不执行,执行语句print(%d,-x);,输出“5,”:执行for语句中
9、的x-,得到x=5,输出“5,”判断x%3,输出“4,”,执行两次x-后,x=2,执行printf(d,x-);continue;后,输出“2,”;然后执行两次x-后,x=0,不符合“x0”,循环全部结束。第22题:参考答案:答案解析:选项B)中while(1)永远为真所以进入死循环,选项C)中while(n=10)同理,选项D)中for循环没有循环限定条件也将进入无限循环,只有选项A)中while(n=0)循环判定成立,循环将不进入无限循环。第23题:参考答案:D答案解析:首先定义了一个一维数组和指针,接着将数组第四个元素的地址赋予*p,进行-p使指针p指向了数组的第三个元素,通过 y=*p
10、:将数组第三个元素的值3赋予y,所以选项D)正确。第24题:参考答案:C答案解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项C)定义错误。第25题:参考答案:A答案解析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s0;s数组中元素的个数和 p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志“0”,而p所指字符串长度不包括“0”;s是字符型数组,p是指针变量;数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址。第26题:参考答案:D答案解析:数组a23包括元素a00,a
11、01,a02,a10,a11,a12,只有选项D)是正确的引用,即引用元素a00,其他选项的引用均是下标越界。第27题:参考答案:D答案解析:选项A)调用函数gets()使得s数组从s0开始得到输入的字符;选项B)使得数组从元素s1开始得到输入的5个字符;选项C)使得s数组从s0开始得到输入的字符:而选项D)scanf(%s,s1);错误调用,应为scanf(%s,&s1);,输入项部分应该是一个地址值。第28题:参考答案:C答案解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行
12、是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。第29题:参考答案:答案解析:定义结构体类型的一般形式为:struct结构体名成员列表:struct结构体名后不能加“:”号,所以选项B)、C)错误,选项D)中定义无名称的结构体类型同时定义结构体变量形式应为struet t1,t2;选项A)为用户自定义类型,其为正确的定义形式。第30题:参考答案:B答案解析:本题考查的是输入输出函数的使用,gets和getchar函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出到文件,fwrite用于以二进制形式输出数据到文件,故选项B)描述错误。第31
13、题:参考答案:C答案解析:本题考查for语句的循环控制,首先定义了两个数组并赋予了初始值,第一个for循环语句循环12次遍历s数组的各个元素,将s中的元素值作为c数组中的下标,使相应的值自加。例如当i=0,cs0)+为c1+,其值变为1,当执行i=1,2,.11后,c1、c2、 c3、c4分别为4、3、3,2,故选项C)为正确的运行结果。第32题:参考答案:C答案解析:从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数fun(),fun()函数的功能为使数组中的元素逆序,当调用 fun(a,0,3),将实参传递给形参实现数组a中a0-a3这4个元素逆序;同理调用fun(a,4,9)是
14、将上步排列好的a数组中a4-a9这6个元素逆序;调用fun(a,0,9)是将数组中a0-a9这10个元素在逆序,再用printf()函数输出结果为5678901234,故选项C)正确。第33题:参考答案:A答案解析:从main函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行fun(ss,5)函数后,*ss=xy,bcc,bbcc,aabcc,aaaacc,所以调用printf函数输出ss0,ss4的值分别为xy,aaaacc。第34题:参考答案:C答案解析:主函数调用f()函数,将实参3传
15、递给x,进行if条件语句的判断不成立,接着执行y=3*3-f(1),再执行f(1)而f(1)满足if条件语句,所以f(1)的值为3,那么代入y=3*3-f(1)=9-3=6,故选项C)为正确的运行结果。第35题:参考答案:C答案解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个 while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t80中的内容为“a*b*”,所以此题的运行结果为选项C)。第36题:参考答案:A答
16、案解析:本题考查在结构体中函数的实参和形参的传递,调用f(C)后,实参传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf输出的还是c中实参的值,故选项A)正确。第37题:参考答案:B答案解析:本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(d1.dat,w);以可写的方式为输出建立新文本文件,调用printf输出“123”,fp=fopen(d1,dat,r);以只读的方式打开文本文件,不能对文件内容进行操作,故运行结果为选项B)。第38题:参考答案:A答案解析:本题目要求a高4位取反,低4位不变,
17、则a变为10101101,再看选项中对位运算的操作,选项A)中a*b=10101101,选项 B)中ab=1111101,选项C)中a&b=01010000,选项D)中a4=11010000,故选项A)正确。第39题:参考答案:A答案解析:在C语言中,动态变量(auto)存储在内存中的动态存储区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量(extern)一经定义,系统为其分配固定的内存单元;静态变量(static),编译系统为其分配固定的存储空间;寄存器变量(register)不保存在内存上,而是直接存储在CPU的寄存器中。第40题:参考答案:B答案解析:
18、定义语句int(*f(int)中f是指向函数的指针变量,该函数中也只有一个int型的形参。二、填空题第41题:参考答案:输出详细解答:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。第42题:参考答案:16详细解答:第43题:参考答案:24详细解答:在循环队列中因为头指针指向的是队头元素的前一个位置,所以是从第6个位置开始有数据元素,所以队列中的数据元素的个数为29-5=24。第44题:参考答案:关系详细解答:在关系数据库中,用关系也就是二维表来表示实体之间的联系。第45题:参考答案:数据定义语言详细解答:在数据库管理系统提供的数据定义语言,数据操纵语言和数据
19、控制语言中,数据定义语言负责数据的模式定义与数据的物理存取构建,数据操纵语言负责数据的操纵,包括查询及增、删、改等操作,数据控制语言负责数据完整性、安全性的定义与检查以及并发控制、恢复等功能。第46题:参考答案:0详细解答:本题考查数据类型及其运算的逻辑运算,c为空格字符但其ASCII码不为0,所以!c=0,在逻辑与运算中,只要有一项为假,其值为0,所以b的值为0。第47题:参考答案:3详细解答:本题考查数据类型及其运算的逗号运算与逗号表达式,整个表达式的值为最后一个表达式的值,其值为3。第48题:参考答案:#2#4详细解答:本题中从k=2输出,printf中“%d”前的内容原样输出,所以第一
20、次输出#2,接着k两次自加为4,接着输出#4,接着k再两次自加为6,此时不符合循环条件,所以输出结果为“#2#4”第49题:参考答案:2详细解答:p为指向数组的指针变量,数组x1为数组x的第二个元素,值为2:第50题:参考答案:2 4 6 8详细解答:进入for循环i=0时,p0=&x1. 直到循环完毕,指针分别指向数组x中的第2、4、6、日个元素,所以空白处应填2 4 6 8第51题:参考答案:3 5详细解答:本题考查函数中实参和形参的传递,在C语言函数中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap函数的功能是实现两个数的交换,但没有返回值,故最终的
21、输出结果为3 5。第52题:参考答案:4详细解答:题目中定义了一个数组和指针,接着将数组的首地址给了指针,即指针p指向数组a的第一个元素,通过p+,p指向了数组a的第二个元素,所以输出结果为4。第53题:参考答案:13详细解答:此题考查的是函数的递归调用,进入主函数调用fun()函数,进行if语句的判断,当x=3时,条件成立,执行fun(x/2);语句,递归调用fun()函数本身,进行if语句条件判断,if(x/20)条件不成立,用printf输出1;返回上一次调用fun()函数,printf输出3,因此程序的最终输出结果为:13。第54题:参考答案:personi.sex详细解答:本题考查的是对结构体成员的引用,对结构体数组成员的访问是以数组元素为结构体变量的,其形式为结构体数组元素咸员名,所以题目空白处应填personi.sex。第55题:参考答案:“filea.dat”,”r”详细解答:本目要求从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上,首先打开filea.dat文件再读取字符,所以空白处应为以读的方式打开文件,所以其内容应该为filea.dat,r。更多试卷请见麦多课文库
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1