2015年9月计算机二级《C语言》模拟卷
b=++x;
c=y:
A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5, b=6,c=5 D.a=1,b=5,c=6
参考答案:B
参考解析:本题考查自加(++)、自减(--)运算符的使用。“++x,--x”,在变量x前使用,先使x的值加1或者减1,再使用此时的表达式的值参与运算;“x++,x”,先把使用x的值参与运算,在使用x之后,再使X的值加1或者减1。对于表达式--x=4,y++=4,两者相等,--x=y++为真,所以a=x=4,执行完此语句后y的值是5。第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5;表达式c=y=5。故选项B正确。
2若有以下程序段:
jnt c1=1,c2=2,c3:
c3=c1/c2:
执行后的输出结果是( )。
A.0B.1/2C.0.5D.1
参考答案:A
参考解析:cl和c2都是整数,1/2取整得0,舍弃小数点。因此正确答案为A。
3若有定义:“int a=4,b=5;float x=3.4,y=2.1;”,则下列表达式的值为( )。
A.5.5B.55C.5.500000 D.55.00000
参考答案:C
参考解析:在计算(float)(a+b)/2时,由于通过强制类型转换将(a+b)转换成了float型,所以应先将2转换成float型,再进行计算,得4.500000。
在计算(int)x%(int)y时,先将x和y通过强制类型转换成int型,再进行求余运算,结果为1。又因为4.500000是float型,所以将1和它相加时,先将1换成float型,再计算,得到5.500000。
类型转换的一般规则是低级类型从高级类型进行相应的转换。数据类型的级别由低到高的排序表示为:char→int→unsigned→log→float→double。
4下列程序的执行结果是( )。
A.3,14,1B.3,l4,2C.2,04,1D.2,14,l
参考答案:A
参考解析:本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=l,然后将a的值加1,即执行完此句后a的值是3;表达式c+=-a+++(++b)也可写成c=c+(-a++)+(++b),c=1+(-3)+3=l,此时a=4,b=3。
5下列程序的输出结果是( )。
A.19B.18C.6D.8
参考答案:D
参考解析:本题考查switch ease开关语句,default退出继续循环。当i=1时,执行case 1,因为没有break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case 2,没有break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case 3,当a=a+1=11,没有break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,没有case语句,则执行default,a=a+3=19,i=5不成立,循环结束。
6下面程序的功能是输出以下形式的金字塔图案:
在横线处应填入的是( )。
A.iB.2*i一1C.2*i+1D.i+2
参考答案:B
参考解析:通过观察可知图形共4行,主函数中通过一个for循环四次,输出4行。第一行输出3个空格和1个“*”,第2行输出2个空格和3个“*”,第3行输出3个空格和5个“*”,第四行输出7个“*”,主函数中通过第二个循环控制每行的输出空格数,第三个for循环控制输出的“*”的个数,总结规律:每行输出的“*”的个数,总比前一行的多2个,且第一行的个数为1,可以断定每行输出的“*”的个数组成了一个公差为2的等差数列,所以每行输出“*”的个数即该等差数列的通项,故该空格处应该填写2*i-1。
7设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是( )。
A.0B.1C.2D.3
参考答案:C
参考解析:因为a>b不成立,故表达式a>b的值为0,即把0赋给m,因此&&左边表达式的值为0,0与任何值&&运算都为0,于是不再计算&&右边表达式的值,所以此时的n仍然为2。
8有下列二叉树:
进行中序遍历的结果是( )。
A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG
参考答案:A
参考解析:有3种遍历方法:前序、中序和后序。中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。结果为ACBDFEC-。
9下列描述错误的是( )。
A.继承分为多重继承和单继承
B.对象之间的通信靠传递消息来实现
C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征
D.类是具有共同属性、共同方法的对象的集合
参考答案:C
参考解析:对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外本来就是不可见的、隐蔽的。
10若有以下说明,则( )不是对strcpy库函数正确的调用。
A.strcpy(str2,str1)
B.B.strcpy(str3,str1)
C.strcpy(str1,str2)
D.strcpy(str5,str1)
参考答案:C
参考解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中。要保证sl存储区能容纳下s2字符串。
11设有定义语句
则变量a( )。
A.包含1个字符B.包含2个字符C.包含3个字符D.定义不合法
参考答案:A
参考解析:ˊ\ˊ是转义字符,但是ˊ\72ˊ表示ASCⅡ码里的1个字符。
12下面程序的运行结果是( )。
A.1B.2C.3D.4
参考答案:B
参考解析:本题中del(char*s)函数实现的功能是逐个读入s数组中的字符,如果遇到数字。则将数字存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串s中所有数字的个数。
13以下只有在使用时才为该类型变量分配内存的存储类型说明是( )。
A.auto和staticB.auto和registerC.register和static D.extern和register
参考答案:B
参考解析:在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。
14在下列给出的表达式中,与whⅡe(E)中的(E)不等价的表达式是( )。
A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)
参考答案:B
参考解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项B 中表达式E>0||E<0是一个逻辑表达式。
15有以下程序:
程序执行后的输出结果是( )。
A.7B.3C.2 D.0
参考答案:C
参考解析:在函数fun(int x)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun(x 2)递归函数。当在主函数中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。
16设x=011050,则x=x&01252的值是( )。
A.0000001000101000
B.1111110100011001
C.000000101 1 100010
D.1100000000101000
参考答案:A
参考解析:本题考查按位与运算,按位与就是相同为1,不同为0,把x一011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。
17下列叙述中正确的是( )。
A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式
B.实型变量中允许存放整型数
C.若a和b类型相同,在执行赋值a=b后,b中的值将放人a中,但b中的值不变
D.在c程序中,求取余运算符“%”两边的类型相同时才能进行运算
参考答案:D
参考解析:选项A,在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式,右边也不得出现表达式;选项B中,整型变量中只能存放整型数,但实型变量中能存放实型数,也能存放整型数;选项C,表达式a=b的意思是把变量b的值赋给变量a,从而覆盖a中原来值;选项D,要求取余运算符″%″两边的类型相同。
18设a=1,b=2,c=3,d=4,则表达式:“a
A.4B.3C.2D.1
参考答案:D
参考解析:在三目运算符中,优先级相同,按从右到左的结合性计算,a
19下列叙述中正确的是( )。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对
参考答案:C
参考解析:本题考查对面向对象的理解。面向象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
20若有定义:int x,*pb;则正确的赋值表达式是( )。
A.
B.
C.
D.
参考答案:A
参考解析:*pb是指解除对*pb的引用(也可以认为是取pb所指向的地址的值),被解除引用的指针可以作为左值,&为取地址运算符,&x就是取指向变量x的指针。
21下列叙述中不正确的是( )。
A.在c语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在c的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
参考答案:B
参考解析:在程序运行中局部变量所在的函数被调用时,编译系统根据需要临时分配内存,调用结束空间解放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存未知的情况下,最好不要使用全局变量。
22下列程序的输出结果是( )。
A.6,1B.2,lC.6,0 D.2,0
参考答案:B
参考解析:当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)-1,2%9=2,故a=2,故先算a/10=25/10=2。
23若有以下程序段:
执行后的输出结果是( )。
A.3,0,-10B.0,0,5C.-10,3,-10 D.3,0,3
参考答案:B
参考解析:首先分两块,逗号前面的是第一块,先执行,逗号后面的是第二块,后执行;两个块中,括号里的先执行,a-=a-5;//执行前’a=0,执行后,a-=-5,a=5;c=a;//c=5;a=b;//a=b=0;b+3;//执行,但是不修改任何数字。所以,最后结果是:0,0,5。B选项符合结果。
24
A.A,BB.A,68C.65,66 D.65,68
参考答案:C
参考解析:在C语言中,用整型格式输出字符时,输出的是其ASCⅡ码值。
25表示关系x<=Y<=Z的C语言表达式为( )。
A.(X<=Y)&&(Y<=Z)B.(X<=Y)AND(Y<=Z)C.(X<=Y<=Z)D.(X<=Y)&(Y<=C)
参考答案:A
参考解析:题中X<=Y<=Z的意思为X<=Y并且Y<=Z,在C语言中,要表示“且”的关系,应用“与”逻辑运算符,即“&&”,故选择A选项。
点击查看试题笔记(0)26下列程序的输出结果是( )。
A.49B.36C.25 D.64
参考答案:C
参考解析:本题考查for循环及if语句。当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。
27下列程序的输出结果是( )。
A.3B.4C.2D.5
参考答案:B
参考解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为++x;x=3,则3+1=4。
28下列运算符中优先级最低的算符是( )。
A.||B.!=C.<=D.十
参考答案:A
参考解析:C语言中规定运算符的优先顺序:一元算术运算符一>二元算术运算符一>关系运算符一>逻辑运算符一>赋值运算符,A项中为逻辑运算符,B项和c项都为关系运算符,D项为一元运算符。因此最低的是A项。