2019年下半年二级C语言试题-总

发布于 2019-05-05 15:23  编辑:simi
0
计算机等级考试题库 扫码微信刷题


当你的计算机知识还撑不起你的学习、工作时,那你就应该静下心来刷计算机等级考试题库-二级C语言试题



二级C语言试题

1

1.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(   )

A.k++

B.k+=1

C.++k

D.k+1

参考答案:A

 

2 [填空题]

已知“int a=2b=2c=3:”,则执行完语句“a*=18+(b++)-(++c);”后,a的值是__________

参考解析:32

【解析】本题考查自加运算符(++)和自减运算符(--)++和一的几个特点:①只能作用于变量,不能作用于表达式或常量;②前缀形式是在使用变量之前先将其值加1或减1,后缀形式是先使用变量原来的值,使用完后再使其加1或减1,题中:++c计算时c=4b++计算时b=218+(b++)-(++c)=16a*=16等价于a=a×16=2×16,得a=32

 

3.下列关于单目运算符++,— —的叙述中正确的是(  )

A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

参考答案:D

参考解析:

++(或— )的运算结果是使运算对象增1(或减1);运算对象可以是整型变量、实型变量,也可以是字符型变量,但不能是常量或表达式。++(或— )的结合方向是”自右向左”。

 

4. 以下叙述不正确的是(  )

A.C程序中,逗号运算符的优先级最低

B.C程序中,APHaph是两个不同的变量

C.ab类型相同,在计算赋值表达式a=b后,b的值将放入a中,而b的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

参考答案:D

参考解析:

c语言所有的运算符中,逗号运算符的优先级最低。C语言区分大小写,所以APHaph是两个不同的变量。赋值表达式a=b表示将b的值赋予a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输人数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

 

5. 若运行时给变量X输入12,则以下程序的运行结果是(  )

main()

{

int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

printf("%d\n",y);

}

A.0

B.22

C.12

D.10

参考答案:A

参考解析:

本题考查三目运算符“?:”。表达式“x>127x+10x.12”即,如果x>12成立,则x+10的值即为此表达式的值,否则x.12即为此表达式的值。因为x=12,所以x>12不成立,所以执行y=x-12=0

 

 

 

 

2

1. 以下能正确定义且赋初值的语句是( )

A.int n1=n2=10;

B.char c=32;

C.float f=f+1.1;

D.double x=12.3E2.5;

参考答案:B

 

2.有以下程序

main( )

{ unsigned char a,b;

a=4|3;

b=4&3;

printf(“%d %d\n”,a,b(;

}

执行后输出结果是(  )

A.7 0

B.0 7

C.1 1

D.43 0

参考答案:A

 

3.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(  )

A.char s[10]=”abcdefg”;

B.char t[]=”abcdefg”,*s=t;

C.char s[10];s=”abcdefg”;

D.char s[10];strcpy(s,”abcdefg”);

参考答案:C

 

4.有以下定义语句

double a,b; int w; long c;

若各变量已正确赋值,则下列选项中正确的表达式是(  )

A.a=a+b=b++

B.w%(int)a+b

C.(c+w)%(int)a

D.w=a==b;

参考答案:C

 

5.以下选项中非法的表达式是( )

A.0<=x<100

B.i=j==0

C.(char)(65+3)

D.x+1=x+1

参考答案:D

 

6.有以下程序

main()

{ char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是( )

A.n,two

B.t,one

C.w,one

D.o,two

参考答案:C

 

7.已知字母AASCIl代码值为65,若变量kkchar型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

参考答案:B

 

8.若有定义语句:int a=3b=2c=1;,以下选项中错误的赋值表达式是(  )

A.a_(b=4)=3;

B.a=b=c+1;

C.a=(b=4)+c;

D.a=1+(b=c=4)

参考答案:A

参考解析:

这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。

 

9.若有定义语句:intk1=10k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1k2的值分别为(  )

A.01

B.020

C.101

D.1020

参考答案:B

参考解析:

由于k1等于10k2等于20,所以关系表达式k1>k2的值为假,即等于0,所以在执行逻辑表达式(k1=k1>k2)&&(k2=k=2>k1)的第一个赋值表达式k1=k1>k2执行后,k1的值等于0。又因为在逻辑与表达式中只要第表达式的值为假时,整个逻辑表达式的值就为假,第二表达式不执行,k2值不改变。

 

10.下列关系表达式中,结果为“假”的是

A.(3+4)>6

B.(3!=4)>2

C.3<=4||3

D.(3<4)==1

参考答案:B

参考解析:

由于3!=4 的结果为1,而1>2 的结果为假。

 

 

 

 

3

1.有以下程序

#include

main()

{

char a='H';

a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;

printf("%c\n",a);

}

程序运行后的输出结果是

A.A

B.a

C.H

D.h

参考答案:D

参考解析:

由于a 的值为'H',符合(a>='A'&&a<='Z'),所以条件表达式的值等于(a-'A'+'a'),'h'

 

2.若有定义语句 int b=2; 则表达式(b<<2)/(3||b)的值是

A.4

B.8

C.0

D.2

参考答案:B

参考解析:

变量b 的值等于2,其向左移动2 位,其值等于8,即b<<2 的值等于8。而3||b 做或运算的结果等于1。所以表达式(b<<2)/(3||b)的值等于8

 

3 [填空题]

Xn均是int型变量,且x=12n=5,则执行y=x%=(n%=2)表达式后Y的值为________

本题型不支持在线作答,请电脑操作演示,部分试题“考生文件夹”是指考试时答题指定的保存位置。

参考解析:

O 【解析】 n%=2等价于n=n%2,结果为1;x%=1等价于x=x%1,结果为0

 

4.下列程序段选择项,使i的运行结果为3的程序段是(  )

A.int i=0,j=0; (i=2,(j++)+i);

B.int i=1,j=0; j=i=((i=3)*2);

C. int i=0,j=1; (j==1)?(i=1):(i=3);

D.int i=1,j=1; i+=j+=1;

参考答案:D

参考解析:

要解答本题,必须一项一项计算出语句的运算结果,才能选择正确的答案。选项A)i被赋初值为2,在后面的运算中没有发生任何变化还是2;选项B)的运算结果为:i=3*2=6:选项C):初始时给i赋值为1,即j=1为真,所以取第一个表达式的值,即i=1作为返回值:选项D)的运算结果为:i=i+(j+1)=3

 

5.若变量均已正确定义并赋值,以下合法的C语言赋值语句是(  )

A.x=y==5;

B.x=n%2.5;

C.x+n=i;

D.x=5=4+1;

参考答案:A

参考解析:

本题考查赋值运算符及赋值表达式。赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)D》错误。”%”运算符两侧都应当是整型数据,选项B)错误。

 

6.有以下定义:int a;long b;double xy;则以下选项中正确的表达式是(  )

A.a%(int)(x-y)

B.a=x!=y;

C.(a*y)%b

D.y=x+y=x

参考答案:B

参考解析:

选项中如果xY的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。 D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)

 

7.设有定义:int x=3;,以下表达式中,值不为l2的是(  )

A.x*=x+1

B.x++3*x

C.x*=(1+x)

D.2*x.x+=6

参考答案:D

参考解析:

本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为”自左至右”。A)选项和c)选项的结果是一样的,可展开为:x=x*(x+1)=3*4=12;B)选项中先执行x++,因为++运算符有自加功能,逗号之前执行后x的值为4,逗号后的值就是整个表达式的值,即12;D)选项逗号之前并未给x赋值,所以表达式的值就是x+=6的值,即9。因此,本题答案为D)

 

8.以下选项中非法的表达式是(  )

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

参考答案:A

参考解析:

赋值运算符的左边只能是变量,而不能是常量或表达式。

 

9.在以下选项中,不正确的赋值语句是(  )

A.i++;

B.n1=(n2=(n3=0..;

C.m+n=1;

D.i=k==j;

参考答案:C

赋值运算符的左边只能是变量,而不能是常量或表达式。

 

10.x=4y=5,则x&y的结果是(  )

A.0

B.4

C.3

D.5

参考答案:B

参考解析:

本题主要考查按位与运算的知识点。按位与足对两个运算最相应的位进行逻辑与, &”的规则与逻辑与“&&”相同。x=4的二进制为00000100y=5的二进制为00000101x&y=00000100,转化为十进制即为4

 

 

 

 

4

1.以下不能正确计算代数式 值的C语言表达式是( )

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

参考答案:A

 

2.a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是(??)

A.1

B.0

C.2

D.不知道a的值,不能确定

参考答案:A

参考解析:

逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若al,则左边运算对象为1;a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1

 

3.设变量xfloat型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是( )

A.x=x*100+0.5/100.0;

B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)*100.0;

 

4.表达式3.6-5/2+1.2+5%2的值是( )

A.4.3

B.4.8

C.3.3

D.3.8

参考答案:D

参考解析:

此题考核的是算术运算符的运算规则,算术运算符的结合方向为“自左至右”,先按运算符的优先级别高低次序执行,同时在C中两个整数相除或求余数其结果依旧为整数。计算后结果为3.8

 

5.已知字母AASCIl代码值为65,若变量kkchar型,以下不能正确判断出kk中的值为大写字母的表达式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

参考答案:B

 

6.当变量 c 的值不为 246时,值也为“真”的表达式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

参考答案:B

参考解析:

条件语句if(a>B.不成立,所以语句a=b;不执行,语句c=a;执行后, c=3,此时条件语句if(C!=A.不成立,所以语句c=b;不执行。结果为a=3b=5c=3

 

7.若有表达式(w)?(--x)(++y),则其中与w等价的表达式是 (  )

A.w=-1

B.w=-0

C.w!=1

D.w!=0

参考答案:D

参考解析:

由条件表达式:的执行情况来判断,表达式(W)和表达式W!=0的逻辑值是一致的,所以本题选D选项。

 

8.表达式:(int)((double)9/2)-(9)%2的值是 (  )

A.0

B.3

C.4

D.5

参考答案:B

参考解析:

(int)((double)9,/2)的值为4(9)%2的值为1,则整个表达式的值为3

 

9[单选题] 若有定义语句:intx=10;则表达式x-=x+X的值为 (  )

A.-20

B.-10

C.0

D.10

参考答案:B

参考解析:

x-=x+X,即x=x-(x+x)x=-X,故x=-10

 

10.有以下程序:

#include

void main()

{

int s;

scanf("%d",&s);

while(s>0)

{

switch(s)

{

case 1:printf("%d",s+5);

case 2:printf("%d",s+4);break;

case 3:printf("%d",s+3);

default:printf("%d",s+1);break;

}

scanf("%d",&s);

}

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是

A.6566456

B.66656

C.66666

D.6666656

参考答案:A

参考解析:

这道试题主要考察了switchbreak语句,当变量S的值为1时,执行case1case 2两条语句,输出65;当变量S的值为2时,执行case 2语句,输出6;变量s的值为3时,执行case3default两条语句,输出64;变量S的值为4时,执行defauR语句,输入5;变量s的值为5时,执行default语句,输出6;变量S的值为0时,程序运行结束。

 

 

 

 

5

1.有以下程序

#include

main()

{

char a='H';

a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;

printf("%c\n",a);

}

程序运行后的输出结果是

A.A

B.a

C.H

D.h

参考答案:D

参考解析:

由于a 的值为'H',符合(a>='A'&&a<='Z'),所以条件表达式的值等于(a-'A'+'a'),'h'

 

2.若有定义语句 int b=2; 则表达式(b<<2)/(3||b)的值是

A.4

B.8

C.0

D.2

参考答案:B

参考解析:

变量b 的值等于2,其向左移动2 位,其值等于8,即b<<2 的值等于8。而3||b 做或运算的结果等于1。所以表达式(b<<2)/(3||b)的值等于8

 

3 [填空题]

下列 y 的值是

int y;y=sizeof(2.25*4);

参考解析:

解析:sizeof(2.25*4)sizeof(9.00)值为8C语言规定浮点型常量当双精度处理,双精度实数的存储单元为 8 个字节。

 

4 [填空题]

int x=1y=2;则计算表达式y+=y-=x*=y后的y值是_________

参考解析:0

【解析】对表达式从右向左进行计算x+=yx=2,则Y+=y.=2,右边即y.2y=0,则y+=0y=0

 

5 [填空题]

Sint型变量,且s=8,则s%3+(s+1)%3表达式的值为________

参考解析: 2

【解析】考查基本表达式的计算,“%”运算符的功能是取余。题中条件s=8,则s%3=2(s+1)%3=9%3=0,所以表达式s%3+ (s+1)%3=2+0=2

 

6 [填空题]

以下程序的输出结果是(  )

#include

main()

{ int a=37;

a+=a%=9; printf(“%d\n”,a);

}

参考解析:

 

2 a+=a%=9;其中a%=9等价于a=a%9;结果为1,所以a+=a%=9等价于a=a+1,故答案为2.

 

7 [填空题]

请写出与 !(a<=B)等价的C语言表达式

参考解析:

(a<=b)||(a>b) 表达式!(a<=b)含义是对a 小于等于b 取非,所以与其等价的表达式是(a<=b)||(a>b)

 

8.下面程序段的输出结果是(  )

#include

main()

{

float x = 1.236547;

printf("%f\n",(int)(x*1000+0.5)/(float)1000);

}

A.1.237000

B.输出格式说明与输出项不匹配,输出无定值

C.1.236000

D.1.24

参考答案:A

参考解析:

本题中,(int)(x*1000+0.5)的结果为1237(float)1000是将1000强制转换成float类型;整个表达式(int)(x*1000+0.5)/(float)1000的结果为1.237000,再以实数(6位小数)形式输出。

 

9.以下选项中,当x为大于1的奇数时,值为0的表达式为(  )

A.x%2==1

B.x/2

C.x%2!=0

D.x%2==0

参考答案:D

参考解析:

x为大于1的奇数时,x2求余的结果为1,不为0,所以选项D)中表达式的值为0

 

10.xijk都是int型变量,则计算表达式x=(i=4j=16k=32)后,X的值为(  )

A.4

B.16

C.32

D.52

参考答案:C

参考解析:

本题考查逗号表达式的运用。x=(i--4j=16k=32)中的i=4j=16k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32,所以x的值为32



考无忧小编祝大家:

刷的二级C语言试题都考,考的都会,蒙的全对,考神附体,全部都过!预祝大家都能够顺利考取计算机等级证书。考无忧小编等大家的好消息!




文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2019年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)


温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的近期资讯吗?点击进入>>>计算机等级考试题库资讯


本文网址:http://www.k51.com.cn/info/jsjdjks/1905/0551713.html
选择分享到: