2015年9月计算机二级《C语言》突破模拟卷(2)
23有以下程序:
程序运行后的输出结果是( )。
A.运行后报错B.6 6C.611 D.510
参考答案:A
参考解析:本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得P指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。
24下列程序的运行结果是( )。
A.gaeB.angC.program D.有语法错
参考答案:A
参考解析:本题考查指针用法,if语句的功能是判断两个数组中的字符是否相同,如果相同则输出。
25C语言中的简单数据类型有( )。
A.整型、实型、逻辑型
B.整型、实型、字符型
C.整型、字符型、逻辑型
D.整型、实型、逻辑型、字符型
参考答案:B
参考解析:整(数)型(长、短)、实(数)型(长、短)、字符型这3种是最常用,也是最简单的数据类型。
26下列叙述中正确的是( )。
A.只能在循环体内和switch语句体内使用break语句
B.cotinue语句的作用是结束整个循环的执行
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
参考答案:A
参考解析:本题考查循环跳出的知识点:①break语句可以出现在switch循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环条件是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整个循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环嵌套中退出时,可以使用goto语句或者break语句。
27有以下程序:
当程序运行时输入a<回车>后,下列叙述中正确的是( )。
A.变量c1被赋予字符a,c2被赋予回车符
B.程序将等待用户输入第2个字符
C.变量c1被赋予字符a,c2中仍是原有字符2
D.变量c1被赋予字符a,c2无确定值
参考答案:A
参考解析:本题考查getchar()函数,从终端读入一个字符作为函数值。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。所以当输入a<回车>后,变量c1被赋予字符a,而变量c2被赋予回车符。
28以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是( )。
A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库
参考答案:B
参考解析:以内模式为框架所组成的数据库叫物理数据库;以概念模式为框架所组成的数据库-1概念数据库;以外模式为框架所组成的数据库叫用户数据库,它是真实存在于计算机外存中的数据库。
29设int x=7,则~x的值是( )。
A.-8B.7C.-1D.1
参考答案:A
参考解析:本题主要考查按位求反运算和C语言正负数的表示。“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为ll000,第一个1代表负数,值为8。
30下面的函数调用语句中fune函数的实参个数是( )。
func((f2vl,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3B.4C.5D.8
参考答案:A
参考解析:实参是在调用时传递该函数的参数,故选A。
31有以下程序片段:
其能正确表示的数学函数关系是( )。
A.
B.
C.
D.
参考答案:C
参考解析:y的初始值为~1,当x不等于0时,给y赋值为1,也就是这时x>0和x>0都为1,然后如果x>0时y的值又赋值为1,注意后面的else语句是跟if(x>0)y=1相匹配,就是说除了x>0 y=1之外,其他的情况y都为0。
32下述程序的输出结果是( )。
A.6357B.6135C.37D.691357
参考答案:C
参考解析:本题先将指针p指向二维数组ch[2][5],相当于p[0]=″1234″,p[1]=″5678″;通过双重for循环,将P中的字符隔一个输出一个,通过“s=p[i][j]- ˊ0ˊ;”语句将所要输出的字符转换成相应的十进制数。
33以下程序的输出结果是( )。
A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7 D.2,3,4,5,1
参考答案:B
参考解析:函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。
34有以下程序:
程序的输出结果是( )。
A.62B.63C.33D.32
参考答案:D
参考解析:本题考查while循环。当i<20时,进入while循环体,循环体内的for循环实现的功能是i%l0==0,也就是说当i值为0或者10的倍数的时候,跳出循环,执行i+=11;a+=i;,若i值不是l0的倍数,则一直执行for循环i--。①判断i=0时,执行i+=11;a+=i;,i=11,a=11;②判断i=10时,跳出for循环,执行i+=11;a+=i;,i=21,a=32;③判断i=21>20,不符合题意,结束循环。
35已知二叉树后序遍历序列是dabec,中序遍历序列是debac,那么它的前序遍历序列是( )。
A.AcbedB.decabC.deabc D.cedba
参考答案:D
参考解析:二叉树的遍历有3种:前序、中序和后序。①前序遍历访问根结点,然后按左右顺序遍历子结点;②中序首先遍历左子树,然后访问根结点,最后遍历右子树;③后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为D。
36现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。
A.q->next=r->next;p->next=r;r-->next=q;
B.Q->next=r;q->next=r->next;r-->next=q;
C.Q->next=r->next;r->next=q;p-->next=r;
D.qnext=q;p->next=r;q->next=r->next;
参考答案:D
参考解析:由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next=r->next,因为r结点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
37下列程序的输出结果是( )。
A.3,6,18B.3,6,2C.6,3,18 D.6,3,2
参考答案:B
参考解析:本题考查if…else语句。如果if条件成立,则执行if下面的语句,不成立则执行else,判断条件,发现a
38有以下程序:
程序运行后的输出结果是( )。
A.AbB.B.aaC.Aa D.Bb
参考答案:A
参考解析:函数fun的作用是将指针a指向指针b的内容,然后将该内容加1。执行语句“fun(p1,p2);”后,pl和p2指向的地址并未改变,只是将p2指向的存储单元的值增加1。所以,答案是A。
39假定所有变量均已正确说明,下列程序段运行后x的值是( )。
A.11B.4C.12D.3
参考答案:B
参考解析:本题考查if…else语句。if条件为真则执行后面的表达武,如果if为假则执行else语句。
40面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
参考答案:C
参考解析:面向对象的设计方法的基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念但不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
二、程序填空题
41函数fun()的功能是:逆置数组元素中的值。形参n给出数组中数据的个数。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在fun()函数的横线上填入所编写的若干表达式或语句。
试题程序:
参考解析:
【1】n/2【2】i【3】a[n-i-1]
【解析】fun()函数实现的功能是实现数组的逆置。具体步骤通过参数传递,得到数组指针(即数组名)和数组记录大小的变量n,通过这两个参数配置for循环,遍历数组的中间的元素位置,每次循环都将i位置和对应位置结点(i距离0位置等于其距离尾位置的结点)的元素交换,由此实现数组的逆置。
三、程序改错题
42下列给定程序中,函数proc()的功能是求出数组中最小数和次最小数,并把最小数和arr[O]中的数对调,次最小数和arr[1]中的数对调。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
四、程序设计题
43请编写函数proc(),它的功能是求Fibonacci数列中小于n的最大的一个数,结果由函数返回。
Fibonacci数列F(n)的定义为
F(0)=O,F(1)=1
F(n)=F(n-1)+F(n-2)
例如,n=500时,函数值为377。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填写所编写的若干语句。
试题程序:
参考解析:
【解析】由题目中所给的公式可知,Fibonacci数列的第n项为第n-1项和第n-2项的和。要求Fibonacci数列中小于n的最大的一个数。首先根据公式求出Fibonacci数列的第n项的值,当第i项大于n,则返回第i-1项的值。