校园网新视野教育全国计算机等级考试二级C语言笔试习_第1页
校园网新视野教育全国计算机等级考试二级C语言笔试习_第2页
校园网新视野教育全国计算机等级考试二级C语言笔试习_第3页
校园网新视野教育全国计算机等级考试二级C语言笔试习_第4页
校园网新视野教育全国计算机等级考试二级C语言笔试习_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章C语言基础知识

一,选择题

1答案是A

A正确

B{}可以作为复合语句的标志

Cmain函数不是用户命名的

D分号是语句结束的标志,肯定是语句的一部分

做这个题目需要对书上的概念透彻的理解

2答案是A

A错误用户标识符:命名时、标识符的选择由用户自定,但是不能与

关键字相同,所以A选项错误。这个题目考察用户标识符

3答案是B

用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,

数字,下划线其中一种。这个题目考察用户标识符的概念。

4答案是B

define是预定义标识符,而预定义标识符可以是用户标识符,所以

define可以是用户标识,if是关键字,而关键字不能是用户标识符,

所以if不可以是用户标识符

5答案是D

long是关键字,参照附录二

注:6-13考察用户标识符概念

6答案是D

D答案以数字2开头了,不符合标识符定义

7答案是C

C答案以数字开头了

8答案是D

int是关键字

9答案是B

答案A是关键字,答案C是以数字开头了,不符合概念,答案D出

现了小数点

10答案是A

答案A出现了小数点

11答案是C

答案C以数字开头了

12答案是A

B答案中float是关键字,C答案中3c以数字3开头了,D答案中-5d

中-不属于字母,数字,下划线中一种

13答案是A

B答案中-max中-错误,C答案中3coM以字母3开头了,D答案中

int是关键字,不是用户标识符

14答案是B

A答案中15.后面不应该有点,C答案中出现了逗号,D中字母B有

问题

15答案是D

VisualC++6.0中int类型的变量占的字节数为4。

16答案是B

B中出现了8,而八进制只能有。到7组成

17答案是D

答案D中开头是0不是。

18答案是C

答案A中E后面是整数,0.5是小数

答案B中E后面不能为空

答案D中E前面不能为空

本题目考察指数的表示形式

19答案是C

答案A中2。有问题,不能为小数形式

答案B中E前面不能为空

答案D中E后面不能为空

本题目考察指数的表示形式

20答案是A

B中八进制中不能出现数字8,C中e后面不能是小数,D中e后面

不能为空

21答案是B

B中0.4是小数,不正确

22答案是C

C中0.5是小数,不正确

23答案是D

3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8

本题目考察算术运算符,需要注意整数除以整数结果只能是整数

24答案是D

.不能用于实型的计算

25答案是D

D答案中$不属于字母,数字,下划线

26答案是A

A’答案是逗号表达式,B答案中*+1=丫是赋值表达式,左边只能是变

量,而这里是x+1,同理答案C中x+10也是错误的,在D答案中,

考察的是强制类型转换,

正确的是(double)x/10

27答案是A

本题考察的是注释需要注意的地方,具体解答见课本第2页中间部分

28答案是B

答案A中n2没有定义,答案C中在定义f之前不能使用它,答案D

中E后面必须是整数

29答案是C

考察的是强制类型转换,正确的是k%(int)f

30答案是D

本题目类似与第七课时的例一,解题方法是要抓住++m,--n,--m,

表达式的值是变量变化之后的值,而n-表达式的值是变量n变化之

前的值

31答案是B

本题目考察的是负

整数与无符号正整数在计算机中存放的格式的一样的,但表示的不

同的两个数

32答案是C

A答案中%运算对象不能为实型,26.8错误,B答案中考察的赋值

运算符,赋值运算符左边必须是变量,所以赋值运算符左边1+2错

误,同理答案D错误

33答案是C

本题目考察的是课本第15页的关于自加与自减运算符的第一点说

明,即增量运算符的运算对象只能是变量,而在C答案中++(i+l)

中,i+1是表达式

34答案是B

本题目考察的是整数除以整数结果是整数,在B答案中1/2结果是0,

导致整个表达式的值是0,明显是错误的

35答案是D

对于++、-单目运算符来说,其运算对象可以是char型、int型和float

型变量

36答案是A

条题目主要考察n++表达式的值是n变化之前的值,然后使n的值

增加1

37答案是B

c=a/b+0.4c=8/5+0.4c=1+0.4c=1.4因为c是int型的,

所以c的值是1,做此题目需要仔细阅读题目

38答案是D

(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000

同样a,b的类型是double型的

39答案是D

long和short不能相互修饰

40答案是C

标识符中不能有$

41答案是C

A选项中,在变量赋值时不能赋给表达式,而y*5是表达式;选项B

中进行强制类型转换时,类型标识符要加上括号,所以错误;选项D

中,%(求余运算符)运算对象只能是整形数。

42答案是A

选项A中,b变量还没有定义

43答案是C

选项A中long是关键字;选项B中符号不属于字母、数字或

下划线;选项D中,int是关键字。

44答案是B

选项A中,八进制数只能由0—7之间的数字组成;选项C,十六进

制数应该以0X开头,并且由0—9以及a—f组成,Oabc不正确;

选项D中10,000包含逗号,不正确。

45答案是B

C语言的标识符中只能包含字线、数字和下划线,没有连接符。

46答案是C

既然在内存中,字符数据以ASCII码存储,它的存储形式就与整数

的存储形式类似。这样使字符型数据和整型数据之间可以通用。一

个字符数据既可以以字符形式输出,也可以以整数形式输出。以字

符形式输出时,需要先将存储单元中的ASCII码转换成相应字符,

然后输出。以整数形式输出时,直接将ASCII码作为整数输出。也

可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行

算术运算。

47答案是D

不同的计算机系统或者编译系统,对3种整数类型所占用的字节数

有不同的规定。

48答案是A

选项B中求余运算(%)的运算对象必须是整型;选项C中,赋值

运算符(=)的左边必须是变量,不能是常量或表达式;选项D与选

项C同理。

49答案是A

++运算符有前缀和后缀两种形式,本题中的选项C就是前缀形式,

其表达式的值为增1后的值,而选项A为后缀形式,其表达式的值

为增1之前的值。而选项B和D的表达式都是k加1之后的值

50答案是A

51答案是C

选项A中将一个变量j的值赋给了一个表达式,这种写法是错误的,

只能给变量赋值,而不能给常量和表达式赋值;选项B中强制类型

转换的格式使用出错,强制类型转换时,类型标识符必须用括号括

起来;选项D中,求余运算符(%)的两端必须是整形数。

52答案是D

字符常量是用单引号括起来的单个字符,所以选项B错误;此外还

有…种特殊的字符专为控制设计,称为转义字符,有三种转义字符:

一种是由一个“\”开头加一个普通字符组成,代表一个字符。如'

\''表示一个单引号字符,所以选项D确;'\\'表示一个斜杠字

符,而选项C中的'\'则是错误的;用“\”与其后的1〜3位八进

制数字构成的字符序列,表示ASCII码等值于该八进制数的字符;

用“X”与其后的1〜2位十六进制数字构成的字符序列,表示ASCII

码等值于该十六进制数的字符;所以选项A错误。

53答案是B

字符常量是用单引号括起来的单个字符,所以选项A正确;此外还

有一种特殊的字符专为控制设计,称为转义字符,有三种转义字符:

一种是由一个“\”开头加一个普通字符组成,代表一个字符。如,

\n'表示一个换行符,所以选项D正确;用“\”与其后的1〜3位八

进制数字构成的字符序列,表示ASCII码等值于该八进制数的字符,

所以选项B错误,因为9不是八进制数字;用“\x”与其后的1〜2

位十六进制数字构成的字符序列,表示ASCII码等值于该十六进制

数的字符;所以选项C正确。

54答案是D

大写字母的ASCII码值比小写字母的ASCII码值小32

55答案是A

选项A中的字符变量ch只能接收单个字符,‘ab'不是单个字符,

所以错误。

56答案是B

charx='C'将一个大写字母赋给了字符型变量x;然后通过x=x+32

将x中字符的ASCII码值加32,即为小写字符‘c'的ASCII码值;

然后将x以字符形式输出,即为小写字母c。

57答案是A

语句charx,y;定义两个字符型变量x,y;然后通过x='B'-'A'

+'a'将用大写字母B的ASCII码送去大写字母A的ASCII码,结

果便为1,然后再加上小写字每a的ASC11码,结果就为小写字母b

的ASCII码,然后再赋值给变量X;通过y=x+2,将鳗x中的ASCII

码值加2,即变成小写字母d的ASCII码值再赋值给变量y;然后以

数值形式输出变量x中的ASCII码值为98,再以字符形式输出变量

y中的字符为d。

58答案是B

选项A中字符'0'的ASCH码值为48,所以A的结果不为1;选

项B中''0'代表空值,空值NULL的ASCII码值为。所以结果为

1;选项C中字符'1'的ASCH码值为49,所以结果不为1;选项

D相当于用048结果也不为lo

59答案是D

如果要表示十六进制字符,则要用'\x'开头,所以选项A错误;

如果要表示八进制,则‘\0’开头,后面跟1〜3位的八进制数,八进

制数由0〜7组成,不包含8,所以选项B错误;用单引号括起来的

单个字符才是字符常量,所以C错误;而'\n'是转义字符,用来

表示回车符。

60答案是B

用单引号括起来的单个字符,称为字符常量,所以选项B错误。

61答案是C

先将cl变量中的字符的ASCII码值输出,即为65,将变量c2中字

符的ASCH码值减2后输出,即为66。

62答案是A

我们知道异或运算,只有两个操作数不同,结果才为lo所以07=1,

lAl=0,由此可推理,任何数与1进行异或运算都得它的相反数;变

量b中的高4位为1,所以要让变量a的高4位取反,即可让变量a

和变量b进行异或运算。

63答案是A

变量cl和c2中的值相同,所以转换成二进制数后,对应的二进制

位上的值也相同,当两值相同时,只有进行异或运算,结果才为0,

所以c»c2值为0。所以本题的正确答案为A。

64答案是A

413转换成对应的二进制数即1001011=111再转换为十进制数即为7;

而4&3转换成对应的二进制数即100&011=000,再转换为十进制数

即为0;所以选择A。

65答案是D

x/y的值为1,z的值也为1,1和1求反进行与运算,结果一定为0。

所以本题选择D。

66答案是D

2+x=00000010+10100111=10101001;~3=~00000011=11111100;所以

就相当于1010100171111100=01010101,所以选择D。

67答案是D

a=0x3转换为二进制数即为00000011;b=al0x8转换为二进制数即为

00000011100001000=00001011即b=ll,b«l即

00001011«1=00010110即c=22,所以本题选择Do

二,填空题

1位01

2关键字预定义标识符用户标识符

38

4八十十六

5intfloatdouble

65+3.6/2=5+l.8=6.8

71516a++表达式的值是a变化之前的值,当然a本身增加了1

8把10赋给变量B

9123.46

(int)(x*100+0.5)/100.0=(int)(l2345.67+0.5)/100.0=(int)(l2346.17)/100.0

=12346/100.0=123.46o

103

整个表达式是一个逗号表达式,变量n和i赋值为2后,通过++i将

i的值增加1变为3,然后再通过i++为i增加1,整个逗号表达式的

值为i++的值,此时是后缀,所以整个i++表达式的值为3,而变量i

的值为2o

1111110111

第11题没有详细解析而且答案出错:

~xAy«l=-00000010A00000101«1=11111101A00001010=l1110111

122

只有'\V和'\b'是正确的

13220.000000

x=f*=n/=(c=50)是一个赋值表达式,它的顺序是从右向左赋值,先执

行c=50,然后执行n/=50即n=n/50=100/50=2,接着执行f*=2即

f=f*2=10*2=20.000000,最后再将值赋给变量X。输出变量n和x的

值,即为220.000000。

14a=14

表达式a=(3*5,a+4)的括号中是一个逗号表达式,其结果是最后一个

表达式的值,即将a+4=14的值赋给变量a。所以输出结果为a=14。

第二章顺序结构

一选择题

1,答案是c

随意使用空语句会导致逻辑上出现错误,不要随便使用。

2,答案是B

语句必须以分号结尾,A,C,D表达式后面均没有分号。

3,答案是C

intx=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值

为3,把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出

为3o

4,答案是A

a,b均为整型,a/b是取a+b所得商的整数部分,所以是0,再把0赋值

给c,所以是c的值是0。

5,答案是D

A注释语句可以放在代码的任何位置

B将r定义为整型不会在编译时出错,会自动进行类型转换

C变量s为浮点型,格式描述符%f时正确的

Dn是非法的变量

6,答案是D

(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的

个数是相等的。并且逗号表达式的值为最后一个表达式的值,最后一个表

达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。

7,答案是A

m是十进制整数以十进制有符号的形式输出,即照原样输32767,*032767,

032767是八进制的整数以八进制无符号形式输出,去掉前面的0。见教材

P34

8,答案是C

m,n的值都是十六进制数Oxabc,m-=n即是m=m-n,把m-n的值赋给m,

即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制

数不用在前面Ox或者0X。见教材P35

9,答案是B

表达式i——的值是在变量自减之前的值,i的初值为10,所以该表达式

的值也为10;表达式j++的值是变量自加之后的值,j初值为1,所以该表

式在值是2。

10,答案是C

m=0256,即m是八进制的数0256,要以八进制无符号的形式输出,即输出

256;n=256,即n是十进制的数256,也要以八进制无符号的形式输出,首

先要把十进制数转化为八进制数,256转化为八进制为0400,以无符号形

式输出,即输出400。

11,答案是B

在printf语句中,格式控制的个数只有一个,即%d,而输出项有两项,

即a和b。而得到的结果应该只有一个,所以应该输出第一个变量的值,

即变量a的值。

12,答案是C

第一个数据的输出控制宽度是2位,但是x的值是102,占3位,要输出

的数据宽度大于规定的输出宽度,所以按数据的实际宽度输出,输出102。

第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是

八进制数,所以要转换成十进制数10后再输出。

13,答案是B

表达式a=f/=c*=(x=6.5),按从右到左结合,先把6.5赋值给x,再执行c

=c*6.5,c的值变为65,再执行f=f/65,为浮点数的除法,f的值为

1.53……,再把f的值赋给a,a为整型数据,执行强制类型转换,a的值

为loa对应的输出格式为%d,即输出1;c对应的输出格式为%d,输出

65,f对应的输出格式%3.If,即输出控制宽度为3位,保留小数点后一位

小数,即输出L5,x对应的输出格式也为%3.If,输出6.5。

14,答案是D

floatx=-123.456;说明x为单精度浮点数据,单精度浮点数据对应的输出

格式应该为外f。

15,答案是C

m=(k+=i*=k);按从右到左结合,先执行i=i*k;即i被赋值为4,再执行k

=k+4;k被赋值为6,最后把6赋给m,输出m和i的值。

16,答案是C

略(参考12题)

17,答案是D

—m++遵循从右向左结合的原则;m++的值为m自增之前的值,所以执

行完x=-m++以后,x被赋值为一3;表达式x=x+8/++n中有加号除号,

先算8/++n,++n的值为自增之后的值为5,8/5取整为1,即x=x+8/++n

转化为x=x+l,即把x+1的值赋给x,x的值变为一2。

18,答案是D

A输入函数应为scanf();

B,C输入数据列表必须是地址表达式;

19,答案是A

从键盘输入数据的格式必须与输入控制要求的格式一样

B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹

配。

20,答案是A

格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D

两个输入数之间的回车换行可以忽略。

21,答案是C

x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小

数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现

进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对

x乘上100后的数实现了小数位到整数位的四舍五入。最后再除以100.0,

把数字变回原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。

22,答案是C

从键盘输入数据的格式必须与输入控制要求的格式一样。

23,答案是B

输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位的数,

而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给

整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的

值为6.000000,后面输入的543则没有赋值给变量。

24,答案是D

“%%”会输出一个"%”,“d”会照原样输出,因为没有格式说明,m.n

无法输出到屏幕。

25,答案是D

第1个输出语句要求ch以枇(字符)形式输出所以为输出“a",以刎(整

数)形式输出为,字符转换为整型要使用ASCII码所以为“97”,k没有

对应的输出符所以没有输出,第2个输出语句要求以整型方式输出k得到

“12”。结果为“a,97,k=12”

26,答案是B

a+b的结果为30,按照“a+b=%d\n”的输出格式得到输出结果“a+b=30”

B

27,答案是B

printf可以没有输出项,没有输出项的printf只是没有输出内容;整数

不能以十二进制输出,getchar()只能读入字符。

28,答案是A

getchar()可以读入空格符合回车符。

二填空题

1,一条语句分号

2,88

首先将八进制数0210转化为十六进制的数0X88,输出格式说明要以十六进

制无符号的形式输出,所以省略0X,直接输出88。

3,11

把十进制数转化为八进制数,以无符号的形式输出

4,252137

b为八进制数025,c为十六进制数0X25,首先把b、c都转化为十进制的整

数,分别为21、37,按照输出格式要求a、b、c以十进制整数形式输出,中

间以空格分开,所以输出为252137o

5,nl=%d\nn2=%d

除了nl,n2的值之外,还必须加入“niw"n2=”照原样输出的字符,很

明显在两个数据之间还加了换行符。

6,i=10,j=20<回车〉

格式控制中加入了格式说明以外的其他字符,则在输入数据时这些字符也要

同样输入。输入格式控制为i=%d,j=%d,所以则应该从键盘输入i=10,j=20

7,261

a为十进制数177转化为八进制的数为0261,以无符号的形式输出为261

8,16

a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=a

+a,所以a最后被赋值为16,即输出a的值为16

9,printf("a=%d,b=%d”,a,b);

10,B66

B在ASCH码中派在A的后面A为65,那么B为66。

11,10

012为八进制数,转换为十进制为10。

12,1234

在scanf函数中指定了宽度为2,输入123456,a=12,b=34,后面的567

无效。

13,12

程序运行时输入12,getchar()函数只能接受单个字符,所以

chl='1',ch2='2'o

nl=chl-,0,转化为ASCII码计算n1=50-49,nl的值为l0n2=nl*10+

(ch2-,0')转化为ASCH码计算n2=1*10+(51-49),n2的值为12。

第三章选择结构

一、选择题

1、D此题主要是考语句的特征。一条语句只包含一个分号,D项有两个分号,

应该是两条语句,所以选D。

2、C此题主要是考真假条件的等价。题目中的E为非0时条件为真,为。时为

假。那么把非0和0带到选项中可知,C项正好是E为0时表达式为真,非0

时为假,所以选C。

3、D任意合法的表达式都可以作为逻辑运算符的运算对象

4、D此题主要是考逻辑运算和关系运算的优先级别.只要掌握!、算术运算和&&

的优先级别便可选对.这几种运算符的具体优先级关系见见教材P188,附录

三。

5、A此题主要是考逻辑运算符!、&&和II之间的优先级别。!最高,&&次之,I|

最低。先求得!a为0,所以不必计算!b,即!a&&!b的值为0,由c=0,!c=l,

而0|1=1,所以选A。

6、A此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和

算术运算的优先级别后,就不难了。A选项中!a为0,所以!a==l为假,那

么就不用计算&&后面的表达式了,因为0与任何数均为假;B项中先计算出

a〈b为假,则(a〈b)&&!c也为假,而0|1=1;C项中a和b均为真,所以a&&b

的值为1;D项中先计算出(b+b)&&(c-a)=l,又a=2,2||l=l所以选A。

7、D此题考到了++运算符以及逻辑运算。当计算机碰到a&&b时;先计算表达式

a的值,若为真才会计算表达式b的值,否则将不会去计算b的值,因为一

旦a=0,则0&&b必为0;而a'b则正好是相反的,即先计算表达式a的值,

若a为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=l,

则b的值必为1,理解了这两点后,我们在看题目:i++==l的值为1,此

时i为2,所以计算&&后的表达式,首先计算++j==3的值为1,j的值为3,

由上面的原理我们可知,U后面的表达式不用再计算,所以此时i,j,k的

值分别为2,3,3。

8、D此题和题2非常的相似,也是考真假条件的转换,其中D项中只有k为0

时,!k/2==l才成立,显然和A、B、C三项不同。

9、C此题主要是考if和else的配对问题。见教材P51。

10、D此题主要是考if和else的一般形式。if后面的语句要么是单条语句,

要么是由{}扩起来的复合语句,不能是if后有两条语句的,所以本题程序

在运行的时候会出错。

11、C此题考到了关系运算和逻辑运算及一定数学知识。反-y|G0可等价为

-10<x-y<10,首先选项A表示x-y的绝对值小于10,与题中的数学关系一样;

将T0〈x-y〈10用逻辑表达式表示的话就是B选项;而D选项只是数学变换,

所以选择C

12、D此题也是考到了真假条件的变换和if-else语句。A、B、C三项都是表示

a为真时输出x,为假时输出y,而D则是a为假时输出x,为真时输出yo

13、D此题考查了赋值表达式的一般格式,=的左边是变量名,右边是表达式,

所以D项错误。

14、C此题主要是考查逻辑运算符当计算机碰到a|b,先计算表达式a的值,

若为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=l,

则0||b必为0。题b>a为真,所以(n=b>a)为1,那么将不会去计算m=a〈b

的值,k被并赋值1,所以m依然为0。

15、C此题主要是考查if-else-if和if语句。具体分析见教材第49页例7。

16、C此题主要是考查if-else-if以及关系表达式的运算。首先判断第一个条

件a>b>c的值为0,所以不执行第一条语句;在判断第二个条件,c-l>=c

表达式的结果为假,所以也不执行其下面的语句,因此执行最后一条语句,

将输出d+2的值为4o

17、C此题主要是考查条件表达式和条件运算符。首先要注意条件表达式的结合

方向,它是从右至左的(可参照附录三)第一个条件表达式的值为a,第二

个条件表达式的值为c,而c=6,所以答案选C

O

18、A此题主要是考查if-else语句和条件表达式的转化。只要理解了if-else

语句和条件表达式的运算规则的话,就很容易选出A

19、D此题主要是考查在switch语句中break和default的作用及break的适

用范围。详细说明可参看教材第三章P53对switch的说明部分。

20、B

此题考查的是条件表达式求解问题。先看第一个条件表达式语句,a<b为真,

所以k=b=2;再看第二个条件表达式语句,k>c为假,所以k=k=2选B

21、A

此题考查的是条件表达式的求解顺序。参照附录三可知,它的结合方向是自

右至左,所以先求得右边一个条件表达式的值为2,再求得左边一个的值为

1,即选A

22、C

此题考查的是真假条件的等价问题。x-y为真表示x-y是非0的,也即x-y<0

或x-y>0即选C

23答案是B

C语言的字符以其ASCH码的形式存在,所以要确定某个字符是大写字母,

只要确定它的ASCH码在‘A'和'Z'之间就可以了,选项A和C符合要求。

大写字母的ASCII码值的范围为65到90,所以D选项符合要求,所以只有

C是错误的。

24答案是B

满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c

的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一

个为真,即不论c为何值,B选项中的表达式的值都为真,所以B选项正确。

25答案是A

条件x==Ollx==l为真,所以执行y=l,然后执行

y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以选择A。

26答案是B

当表达式EXP为非。值时条件成立,即执行语句i++;当EXP等于0时执行

语句j—这就等同于条件表达式“(EXP!=0)?i++:j—所以本题选择

Bo

27答案是D

C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,

只要确定它的ASCII码在'A,和,V之间就可以了,选项B的书写格式错

误,而选项C不符合要求。大写字母的ASCII码值的范围为65到90,所以

A选项不符合要求,小写字母的ASCH码比大写字母的ASCH码大32,所以

只有D是正确的。

28答案是D

奇数和2求余一定不为0,所以当x为奇数时,x%2==0是不成立的,值为0,

此题选择D。

29答案是B

两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c

的值等于3,变量b的值没有变化,程序输出的结果是3,5,3o所以本题

选择Bo

30答案是C

表达式y%3==0的值为1,所以执行下面的输出语句,表达式一y的值为8,

所以输出结果是8。选择C。

31答案是C

表达式x%3的值为2,非0所以执行下面的输出语句,将x-的值8输出,

此时x的值变为7,然后再执行下一个输出语句,将一x的值6输出,x的值

也变为6,所以选择C。

32答案是D

这是嵌套形式的switch语句,因为break结构影响较大,而此程序中的第一

个case后没有break语句,程序执行时,x=l,执行内嵌的switch语句,因

y=0,执行a++,使变量a的值为1并终止内层switch结构,回到外层。程

序继续执行case2后面的语句a++;b++;,这使变量a,b的值分别为2和1,

外层switch语句结束。所以此题选择D。

33答案是D

break与continue语句都可用于switch语句中。选择D。

二、填空题

1、答案是:10200

分析:多数同学得到的答案是10201,显然是没有弄清楚第三条赋值语

句:c=(a/b<l)U(a/b>l).这是将后面一个逻辑表达式的值给c,那么关于逻

辑表达式的考题,无非就是考察运算符的优先级,也就是说先算哪个,后算

哪个的问题。在这个题里面,先计算第一个圆括号里面的内容,a%b的值是

10,所以10<1为假;a/b的值为0,0>1为假。在逻辑或运算的时候,两个

运算对象都为假,则结果为假。所以c的值为0.答案是:10200

2、答案是:1

分析:程序中是一个if—else结构。这个题最容易出错的地方在于if的条

件,注意,里面的是c=a是一个赋值表达式,不是将c与a的值进行比较。

所以条件为真,输出赋值以后c的值,为1。

3、答案是:4,5,99

分析:题中的重点在于两个if结构,大家要注意两点:第一,如果if后面

没有花括号,则它后面的第一条语句是它的结构体,并且只有一条语句。(如

果后面是-•个结构,则整个结构都属于if结构的结构体)。第二,变量在不

断的被重新赋值,所以其值在不断的变化。

4、答案是:yes

分析:该题与第二题是同一回事。

5、答案是:1

分析:这个题还上一个if—else结构,考查点仍然是考察考生是否能够正确

识别if后面括号里的表达式p=a!=0,根据运算符的优先级知道,这里应该先

算a!=0,这是一个逻辑运算,a的值为5,所以a!=0为真,其逻辑值为1,

将1赋值给P,所以条件为真,输出P的值,为1。

6、答案是:20,0

分析:见第3题分析。

7、答案是:585858

分析:题中有三个if结构,注意,这三个if结构是相互独立的,是互不相

关的,只要他们的条件成立,就要执行其结构体(后面的输出语句)。通过键

盘输入,得a的值为58,所以a>50为真,输出58;然后判断a>40,仍然为

真,再输出58,最后判断a>30,肯定为真,所以再输出58,连续三次输出

58o

8、答案是:0

分析:本题的关键在于关系运算符的运算次序,a=5,b=4,c=3.a>b>c看起来

是真的,但是这这是数学里面是这样的,这里我们要一步一步的计算,先算

a>b,a确实大于b,所以为真,逻辑值为1,后面的计算就变成了l>c,显然

为假,逻辑值为0,并将它赋值给d,所以最后输出d的值为0。

9、答案是:3

分析:这个题主要考察条件运算符。程序要输出(P/3>0?p/10:p%3)这个条

件表达式的值。P为30,所以p/3=10,10>0显然为真,所以整个表达式的值

应该是P/10的值,p/10得3。

10、答案是:21

分析:题中是一个switch嵌套结构。里面的switch是case1的语句,题

的关键点在于这个语句(即里面的这个switch结构)的后面并没有跳出整

个结构的break语句。所以,当x=l,与case相配以后,执行完后面的语句

(即里面的这个switch结构),然后没有遇到break语句,所以并不跳出结

构体,而是继续执行case2后面的语句。所以最后得到的结果应该是21,

而不是10o

11、答案是:0

字符空格的ASCII码不为0,所以本题中表达式!c的值为0,b=0&&l的结果

显然为0。

12、答案是:1

执行“j=!ch&&i++”时,首先判断j=!ch的值,因为ch=’$‘不为0,所以

j=!ch=O,编译便不再计算表达式i++的值,i的值不变仍为1。

13、答案是:-4

表达式!n的值为1,所以执行x-=l后x=l;表达式m的值为非0值,所以执行其后的

语句x-=2后x的值为-1,表达式x的值也为非0,所以执行其后的语句后x的值为4,

最后输出x的值即为-4。

14、答案是:#&

表达式c==5的值为真,所以表达式的值等于1,因此输出符号“#”,然后执

行“break",继而去执行“default:printf("&”);”语句,输出符号

15、答案是:1

因为在条件表达式(a<b)a:b中,比较表达式a<b为真,所以x的值为a

的值等于1。后面两个条件表达式中的比较表达式都真,所以最终x的值等

于lo

16、答案是:a:bc:tl

条件表达式类似于if语句,根据“?”前面子表达式的逻辑值来判断应该

计算“:”前面的子表达式还是后面的作为整个条件表达式的结果。题目要

求输出a、b、c3个变量中的最小值,所以当a<b时-,应该选a,否则选b,

帮前一空应填a:b。同理,后一空应填c:tl。

第四章循环结构

选择题:

1.答案:B

①N的值为10,n>7为真,执行循环体,n的值减1后为9,输出n的值9

②N的值为9,n>7为真,执行循环体,n的值减1后为8,输出n的值8

③N的值为8,n>7为真,执行循环体,n的值减1后为7,输出n的值7

④N的值为7,n>7为假,结束循环。

2.答案:A

k的值为5,进入循环,(―k)表达式的值为4(真),同时k的值改变为4,

输出表达式k-=3的值1,同时k的值为1。k为1,表达式(一k)的值为0,结

束循环。

3.答案:A

1.X=0,y=5,z=3,(z〉0&&x<4)值为真,进入循环体,y值为4,z值为2,x值

为1

2.(z>0&&x<4)值为真,进入循环体,y值为3,z值为1,x值为2

3.(z>0&&x<4)值为真,进入循环体,y值为2,z值为0,x值为3

4.(z>0&&x<4)值为假,结束循环。

5.输出乂,丫/的值3,2,0

4.答案:D

分析:

当K的值为3时,只执行case3后面的语句n+=k,n的值为3;

当k的值为2时-,先执行case2后面的语句,但没有break,所以不会退

出,继续执行case3后面的语句n+=k,n的值为5;

当k的值为1时一,先执行case1后面的语句n+=k,n的值为6,即I行case

2后面的语句(没有),继续执行case3后面的语句n+=k,n的值为7。输出

n的值7。

5.答案:B

在循环体中有“s+=l;"s的初始值为0,要让s的值等于2必须是循环体执

行两遍。当循环提执行两遍后a的值等于-3,所以在n=-3的时候循环体执行

两遍后条件表达试(a!=0)为假,会退出循环。

6.答案:A

分析:

t值为1,s的值为0。从键盘中输入一3后,n的值为-3.先执行循环体。

执行s=s+t;s的值为1,执行t=t-2;t的值为-1.再判断表达式的值

t!=n为真,再次执行循环体。执行s=s+t;s的值为0,执行t=t-2;t的值为

-3.再判断表达式的值

t!=n为假,结束do..while循环。最后输出s的值0。

7.答案:A

分析:x=3;先执行循环体,输出表达式x-=2的值1,同时x的值也改变成

1,再判断表达式的值(!x),x的值为1(真),(!x)为假,循环结束。

8.答案:B

分析:B选项每次进入循环体,都要先执行p=l;即1赋值给p.所以不能求出

5!的值

9.答案:D

分析:变量i每次增量为2,变化过程为:1->3->5->7->9,语句s+=l每次

执行使s增加的数为:2,4,6,8,10,所以s的值为自然数PIO中偶数的值。

10.答案:C

分析:C项s=s+l/n,1/n首先运算,n为整型变量,1也是整型变量,当n=2…10

时,1/n的值为整数0,故C不正确

11.答案:A

执行第一次循环时,2=74=4,2!=13为真继续循环。第二次循环a=3,b=l,

2!刈为真继续循环。第三次循环a=2,b=1,a!=b为真继续循环。第四次

循环a=1,b=l,

2!刈为假退出循环。

12.答案:C

13.答案:C

分析:x的值为15。执行while循环,(x>10)为真,执行循环体。执行x++;x

的值为16。用I行if调°(x%3)精执行x++,x的值为17,再执行break;

语句,退出循环体,结束while语句的执行。最后输出x的值17。

14.答案:D

在循环中当x等于0,3,6,9时姗3等于0,这时会进入if语句执行printf

语句,在输出前x会先自加。屏幕上输出14710。

15.答案:D

分析:continue语句会提前结束此次循环体的执行,不会结束整个for语句

的执行。

16.答案:2345

选择中没有此答案。

解析:本题注意的是在循环第一次进入switch语句的时候是执行的default

后面的语句块,由于没有break,所以还会执行case2:case4:后面的语句。

17.答案:A

本题答案为A

解析:A首先执行++n,判断条件表达式n<=0为假退出循环。B条件表达式1

永远为真是无限循环,C条件表达式n的值为10永远为真是无限循环,D没

有条件表达式,所以没有退出条件,是无限循环。此题要注意的是0为假,

非0为真。

18.答案:A

do-while循环先执行后判断,先执行循环体中的printf语句输出n的值0,

在while(i++)中i先执行再自加,所以while(i++)的等于while(O)为假退

出循环。输出结果为“0,0”。

19.答案:D

分析:第一次循环x=8,x%3<>0,进入if语句输出x的值为8,然后x自减1,

执行continue立即进行下次循环条件判断。第二次循环x=6,x%3=0,不进入

if语句,执行if语句后面的printf("%d,",一x),x先自减1再输出得到5。

第三次循环x=4,x%3<>0,进入if语句输出x的值为4,然后x自减1,执行

continue立即进行下次循环条件判断。第四次循环x=2,x%3<>0,进入if语句,

输出x的值为2,然后x自减1,执行continue立即进行下次循环条件判断。

第五次循环x=0,判断表达式x>0为假。结束循环输出结果为8,5,4,2。答

案D

20.C

第一次循环y=9,y%3=0,进入if语句y先自减,输出y的值为8。第二次循

环y=7,y%3<>0,进入下次循环。第三次循环y=6,y%3=0,进入if语句y

先自减,输出y的值为5。第四次循环y=4,y%3<〉0,进入下次循环。第五次

循环y=3,y%3=0,进入if语句y先自减,输出y的值为2。第六次循环y=l,

y%3<>0,进入下次循环。第七次循环y=0,判断表达式y>0为假结束循环。

输出结果为8,5,2。答案C

21.B

在第一层循环中,当i自加到值等于3的时候才会进入第二层循环55烧=1。

输出m的值为1.

22.B

外层循环3次,i的值在内层循环中依次为1,2,3内层循环次数依次为3,

2,1次。

23.D

代码rtif(n%3!=0)continue;w无实际意义。当n自加到4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论