




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C语言程序设计基础
选择题
1.答案:A
【解析】C语言作为计算机高级语言,用它编写的程序必须经过C语言的编译器编译后,
转换为二进制的机器语言来运行。
2.答案:B
【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。②算
法设计:给出解决问题的步骤,即算法。③算法表达:选择一种表达算法的工具,对算法
进行清晰的表达。④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写
程序。⑤程序调试:对编写好的程序进行调试,修改程序中的错误。⑥程序文档编写与程
序维护。综上所述,B)选项是符合上述描述的,其他选项不恰当。
3.答案:B
【解析】C程序在运行过程中所有计算都以二进制方式进行,所以A)正确,B)错误。所有C
程序先编译再链接,全都无误后才能运行。C程序中整型变量用于存放整数,实型变量用于
存放浮点数。所以,本题答案为B)。
4.答案:B
【解析】C语言中只有函数没有过程,故选项A错误;C语言可以嵌套调用,故选项B正
确;C语言函数可以单独编译成.dll文件,故选项C错误;C语言中除main函数以外,其
他函数可作为单独文件形式存在,故选项D也错误。
5.答案:D
【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选
项A)、B)、C)说法都不完整。
6.答案:C
【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语
句,还可以将一个语句写在多行中。故本题答案为C)。
7.答案:D
【解析】计算机能直接执行的只能是机器语言程序,源程序和汇编程序都是用高级语言编写
的程序,不能被直接执行。目标程序也是不能被直接执行的程序,需要通过系统提供的连接
程序与库函数连接装配成可执行程序,才能被计算机执行。所以本题答案为D)。
8.答案:D
【解析】选项D)为两条语句。
9.答案:D
【解析】一个C语言的源程序(后缀名为.c)在经过编译器编译后,先生成一个汇编语言程序,
然后山编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为.obj),
目标程序不可以直接运行,它要和库函数或其他目标程序连接成可执行文件(后缀名为.exe)
后方可运行。
10.答案:A
【解析】一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C
语言程序可以实现多种算法。
11.答案:B
【解析】选项A)main();的分号是错误的,不能有分号;选项C)的注释语句多了两个*号;
选项D)include前面没有#。
12.答案:C
【解析】选项A)中,C语言的注释可以出现在程序的任何位置;C语言的语法限制不严格,
可以多条语句放在同一行上,也可以将一条语句写在多行,故选项B)错误,选项C)正确;
选项D)是错误的,因为用C语言编写的程序可以放在不同的文件中,文件之间使用预处理
命令进行调用。
13.答案:C
【解析】一个结构化程序可以由顺序、分支、循环三种结构组成,但不是必须同时都包括,
可以包括其中的一个或多个,所以选项A)错误。goto语句会破坏程序的结构性、可读性,
不得以不要用,所以选项B)错误。三种基本结构构成的程序也可以解决大规模的程序,所
以选项D)错误。在C语言中,利用函数来实现程序的模块化,C)正确。
第2章数据类型、运算符和表达式
选择题
1.答案:C
【解析】C语言的标识符命名规则为:①只能由字母、数值和下划线3种字符组成;②第
一个字符必须是字母或下划线;③不能与C语言中的关键字或保留字相同。
2.答案:C
【解析】标识符命名规则:标识符必须由字母(a〜z或A〜Z)或下划线(J开头;标识符的
其他部分可以用字母、下划线或数字(0〜9)组成;大小写字母表示不同意义,如cout和Cout
代表不同的标识符;在定义标识符时,虽然语法卜.允许用下划线开头,但是,我们最好避免
定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。因此,本题正
确答案为C)o
3.答案:C
【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第
一个字符必须为字母或下划线。因为选项C)中的标识符的第一个字符为所以选项C)
为本题的正确答案。
4.答案:A
【解析】在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种
字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标
识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关
键字,故本题答案为A)。
5.答案:B
【解析】C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下
划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项
A)中的void正是C语言的关键字。
6.答案:C
【解析】C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为
字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键
字,b-a中不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法
用户标识符的选项是C)o
7.答案:B
【解析】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,
用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;
选项C)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。
8.答案:C
【解析】C语言规定,标志符由字母、数字或下划线组成,它的第一个字符必须是字母或下
划线。
9.答案:A
【解析】C语言规定用户标识符由英文字母、数字和下划线组成,且第-个字符必须是字母
或下划线,由此可见选项B)、D)是错的;此外,C语言不允许用户将关键字作为标识符,
而选项C)中的int是C语言的关键字。
10.答案:A
【解析】C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用
指数形式表示的实数来说,需要注意的是字母e或E之前必须要有数字,且字母e或E后
面的指数必须为整数,所以选项A)为正确答案。
11.答案:D
【解析】A)选项中1,200不能表示整数1200。B)选项中应表示为1.5E2。在C语言中,反斜
杠是转义符,其后必须跟有其他字符,所以选项C)也是错误的。D)选项正确。
12.答案:A
【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A)正确;
C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B)错
误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C)错误:C语言
数值常量中不允许存在空格,选项D)错误。
13.答案:D
【解析】整型常量和实型常量统称为数值型常量。本题中A)项是数字和字符的组合,不能
构成数值型常量。B)项以0开头代表该常量是一个8进制数,但其后面的数字中又出现了"8",
因此不正确。C)项用指数形式表示实型常量,但e后面必须为整数,不正确。D)项中一个常
量后面加字母L表示长整型数据。因此,本题答案为D)。
14.答案:A
【解析】选项B)是实型常量,选项C)是字符串常量,选项D)是转义字符常量,都是合法的
常量。
15.答案:A
【解析】C语言中整型常量可用十进制、八进制和十六进制3种形式表示。
16.答案:B
【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示
一个字符常量。选项A)、C)和D)为正确的字符常量;而选项B)是用双引号括起来的字符,
表示一个字符串常量,所以正确答案为选项B)。
17.答案:B
【解析】本题考查的是各个进制数值常量的表示方法,八进制数据是以0开头的常量,其数
字包括0〜7,选项A)错误。浮点数据的指数表示中,e的右侧必须为整数,选项C)错误。
在选项D)中,10,000显然是错误的。故本题的答案为B)。
18.答案:D
【解析】字符串常量是一对双引号括起来的字符序列。选项A)中第二个双引号"'""被编译系
统解释为转义字符,选项A)错误,选项B)和C)显然也不是字符串常量。故本题答案为D)。
19.答案:D
【解析】C语言中没有字符串类型,选项A)错误。比较任意两个字符串的大小要通过字符
串操作函数strcmp()来进行,而不能直接用关系运算符进行比较。选项B)和C)错误。空串
是最小的字符串。故本题答案为D)。
20.答案:B
【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而
选项B)中,e(E)后面的指数是小数,所以不合法。
21.答案:A
【解析】C语言中,一个字符常量代表ASCH字符集中的一个字符,在程序中用单引号括起
来作为字符常量,字符常量的的范围是0~127。由于字符常量用单引号括起来,所以选项
B)、C)错误,选项D)超过了字符常量的表示范围。
22.答案:A
【解析】C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中
还允许用个"\"开头的字符序列来表示字符常量。其中,形式"\ddd"表示1〜3位八进制
数所代表的字符;形式"\xhh”表示1〜2位十六进制数所代表的字符。在本题中,'\xl3'
表示回车符,是一个字符常量;、08;用八进制数所代表的字符,但形式不正确,因为八
进制数所代表的字符中不会出现数字"8":'65,不是一个字符,而是一个十进制数字;"\n"
是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。
23.答案:D
【解析】八进制中,不可能包括8以上的数字,它的范围只在0~7之间,以0开头。同样,
十六进制是以Ox开头,数字在。〜9和A〜F之间。
24.答案:B
【解析】字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选
项A)、C)、D)都是合法的字符串常量,而选项B)是一个字符常量。
25.答案:B
【解析】十六进制数以Ox开头,后面跟着若干位l~f的数,所以正确答案为B)。
26.答案:C
【解析】sizeof的作用就是返回•个对象或者类型所占的内存字节数。在VC6中整型占4
个字节,双精度实型占8个字节,所以选C)。
27.答案:D
【解析】C语言中没有逻辑类型,若只处理"真"或"假"两种逻辑值,可以使用整型数"1"或"0"
表示,故选D)。
28.答案:A
【解析】标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)
同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字case,所以
将出现错误。
29.答案:B
【解析】用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中存
放任何值,此时变量中的值是无确定的,称变量值"无意义"。因此,本题正确答案为B)。
30.答案:C
【解析】定义变量a和变量b为double类型,并对其赋初值。变量之间应以","分隔,定
义关键字与变量名之间应以空格分隔,语句应以";"结尾。
31.答案:D
【解析】在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些
C编译系统,int和short却都实际占用4个字节。所以说各种类型数据占用内存大小是由选
择何种C编译系统决定的。故本题答案为D)。
32.答案:D
【解析】在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所
以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保
持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据
时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
33.答案:D
【解析】C语言中算术运算符的结合性均为自左向右。选项D)中表达式计算结果是
2*a*b*d/c,和题目要求的代数式不一致,因此选项D)不能正确表示题目所给的代数式内容。
34.答案:A
【解析】在C语言中,"%"运算符两侧的运算数必须是整型。
35.答案:B
【解析】为了满足运算,表达式需要转化类型,此表达式的转化结果是double型。
36.答案:D
【解析】C语言中,字符数据参加运算时,实际上是其ASCII码参与运算。大写字母的ASCH
码比其对应的小写字母的ASCII码小32。因此大写字母转化为小写字母只需将其加上32即
可。所以选项B)、C)都符合条件,因为变量c中存储的是大写字母,所以的值一定小
于26,故选项A)与选项C)的含义相同。
37.答案:C
【解析】根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转
化为double型,运算的结果最终也是double型。
38.答案:B
【解析】(int)((double)9/2)的值为4,(9)%2的值为1,因此(int)((double)9/2)—(9)%2的值为
3。
39.答案:A
【解析】这道题目主要考查赋值表达式,对于赋值表达式来说,赋值号『"的左边一定为变
量名,右边为一个C语言合法的表达式。
40.答案:B
【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余
的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达
式本身就错误,不能给表达式赋值。所以,本题答案为B)。
41.答案:D
【解析】题干中的表达式可以分解为以下表达式:①a=9:②a=a-a即a=9-9,此时a的值
为0;③a=a+a即a=0+0,此时a的值为0«故本题的答案为D)。
42.答案:C
【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)。
43.答案:B
【解析】x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因
此选B)»
44.答案:C
【解析】求余运算符"%"两边的运算对象必须是整型,而选项B)和D)中"%"两边的运算对
象有浮点整数据,所以选项B)和D)是错误的表达式;在选项A)中赋值表达式的两边出现相
同的变量x,也是错误的;选项C)是一个逗号表达式,所以正确答案为C)。
45.答案:A
【解析】赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和
D)错误。"%"运算符两侧都应当是整型数据,选项B)错误。故本题答案为A)。
46.答案:B
【解析[选项A)中包含一个不合法的运算符选项C)应改为(int)18.5%3;选项D)可理
解为两个表达式:2+7土+1)和2=2+7,其中第•个是错的,因为C语言规定赋值号的左边只能
是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),
进而可分解为两个表达式:6=。+2和2=L
47.答案:B
【解析】本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。
48.答案:C
【解析】本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型
的常量1.2转换为int型,即取整为1,然后将1赋值给变量X。接下来执行语句y=(x+3.8)/5.0;
根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算
过程:先将整型变量x的值1转换为double型1。然后与3.8进行加法运算,得到中间结
果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着
进行赋值运算,赋值号左边变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,
结果为0,于是变量y的值为0,d*y的值也为0。
49.答案:D
【解析】011转换成十进制为9,并且k++表示先使用k的值,再使k的值加1,所以输出
值为9。
50.答案:C
【解析】逗号表达式的求解过程是:按表达式顺序从左往右依次求解。本题中由于判断条
件a>b的值为假,所以选项A)、B)、D)中if语句后面的语句均未被执行,而C)中的后两
条语句a=b和b=c被执行,因此选项C)的执行效果与其他三个不同。
51.答案:D
【解析】本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,
它的优先级别在所有运算符中是最低的,结合方向为"自左至右"。A)项和C)项的结果是一
样的,可展开为:x=x*(x+l)=2*3=6;B)项中先执行x++,因为++运算符有自加功能,逗
号之前执行后x的值为3,逗号后的值就是整个表达式的值,即6;D)项逗号之前并未给x
赋值,所以表达式的值就是x+=2的值,即4。因此,本题答案为D)。
—.填空题
1.答案:3|
【解析】因为3/2的结果等于1,再进行强制类型转换为双精度型,其值等于1.0,再加上
05等于1.5;对于(int)1.99*2来说,先把1.99进行类型转换为整型,得到1,再乘以2,得
到2,再与前面的1.5相加等于3.5,再进行整型转换得到3。
2.答案:4|
【解析】计算5/2=2,其结果先转换为double类型,即2.000000,然后加上2.5为4.5000000,
再转换为int型,所以结果为4。
3.答案:a=-b|
【解析】a-=a+b等价于a=a-(a+b),等价于a=-b。
4.答案:5|
【解析】a++的含义是在使用a值以后,使a值加1,所以a++的值为5。
5.答案:3|
【解析】本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到
右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题
中,首先i被赋值为2,再自加1,最后i++的值计算为3。
6.答案:a=14|
【解析】本题考查的是表达式的优先级问题。先计算表达式3*5=15,再计算a+4=14,将数
据14赋值给a,根据printf()函数内的输出格式控制串,最后的输出结果应为"a=14"。
7.答案:25|
【解析】++和-做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算。
第3章顺序结构程序设计
选择题
1.答案:A
【解析】在题目中以字符串的形式给字符数组赋值,所以字符数组name的值为Lili。
2.答案:C
【解析】变量x的初值为八进制数011,转换成十进制数为9,输出时再加1,所以输出结
果为10o
3.答案:D
【解析】执行第一个printf语句时、b=a+b=l,所以输出1,执行第二个printf语句时,a
=2*b=2,所以输出结果为2。
4.答案:A
【解析】cl输出字符的ASCII码比字母A大4,即字母E;c2以十进制数字形式输出,因
此可以判断本题答案为A)。
5.答案:A
【解析】本题考查printf函数的输出格式控制符,%m.nf表示指定输出的实型数据的宽度
为m(包含小数点),并保留n位小数。当输出数据的小数位大于n时,截去右边多余的小数,
并对截去的部分的第一位小数做四舍五入处理;当输出数据的小数位小于n时;在小数的最
右边补0,输出数据的小数部分宽度为n。若给出的总宽度m小于n加上整数位数和小数点,
则自动突破m的限制;反之,数字右对齐,左边补空格。本题中3.141593数值长度为8,
小数位数为6,因此左端没有空格,故正确答案为A)。
6.答案:B
【解析】由于scanf格式输入语句中,使用逗号作为输入值的间隔,所以在输入时需要使用
逗号隔开。只有选项B)中没有使用逗号,故本题选B)。
7.答案:D
【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变
量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句
输出的结果为k=12,所以选项D)为正确答案。
8.答案:C
【解析】在C语言中,字符型数据在内存中的存储形式是其ASCH码值。当需要以整型格
式输出字符时,输出的也是其ASCII码值。字符A和D的ASCII码值分别为65和68。故
本题答案为C)o
9.答案:C
【解析】本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只
能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串
时,输入的空格被认为是字符串的一个字符。故本题答案为C)。
10.答案:D
【解析】若在scanf的格式化控制串中插入了其他字符,则在输入时要求按一一对应的位置
原样输入这些字符。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输
出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。
11.答案:D
【解析】putchar(cl)输出1,putchar(c2)输出2,printf("%c%c\n",c5,c6)输出45。
12.答案:B
【解析】scanf函数的一般格式是:
scanf(格式控制,地址表列)
该格式中,地址表列中应是从终端读入一个字符。
13.答案:B
【解析】getchar函数的作用是从终端读入一个字符。
二.填空题
1.答案:09|
【解析】因为字符0的ASCII码值等于48,而从键盘输入48,就相当于给字符cl赋值0,
再执行cl加9,得到c2的值等于9,所以输出结果为09。
2.答案:2008|
【解析】整型变量a的值为200,b的值"010"是用八进制表示的"10"即十进制的"8",最后输
出格式均为%d,即十进制格式,所以输出为"2008"。
3.答案:15|
【解析】可以指定输入数据所占列宽,系统自动按所指定的格式截取所需数据。%2d即将
输入数据的2个列宽的数据赋给变量x,因为输入的为“1234567",所以前两个列宽的数据
为12,即x的值为12,同理%Id即把输入数据中前两个列宽所在数据后的一个列宽的数据
赋给变量y,所以y的值为3,所以x+y的值为15。
4.答案:a=%d\nb=%d\n|
【解析】"%d"表示按十进制整型输出,"\n"表示回车换行。
5.答案:1234|
【解析】本题scanf函数的输出格式说明中,变量a和b的格式控制都为%2d,即a和b都
只获取两个字符的输入。输入的前4个字符被分别赋给了a和b,其值分别为12和34。
第4章选择结构程序设计
一.选择题
1.答案:B
【解析】在本题中,选项B)实际是先计算关系表达式,"Ay=c"的值是0还是1,再比较该值
与字符Z之间的大小关系。显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。
故本题答案为B)。
2.答案:D
【解析】因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中
表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式
的结果为假,即等于0。
3.答案:A
【解析】当A==l时,(A=1)||(A!=1)为真;当A!=l时,(A=1)||(A!=1)也为真,故正确答案
为A。
4.答案:C
【解析】根据题目所给条件可知,x||y为1,w<H为结果为1。因此正确答案为C)。
5.答案:B
【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6
时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,
选项B)中表达式的值都为"真"。正确答案为B)。
6.答案:B
【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确
定它的ASCII码在A和Z之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一
个字符是否为字母,大写字母的ASCII码值的范围为65〜90,所以如果一个字母的ASCH
码小于91,那么就能确定它是大写字母。
7.答案:D
【解析】在C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、11(逻辑或)、&&(逻辑
与)、-(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,
在表达式x=(a&&b)&&(c〈E);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即
a和b都成立,当然c<B是成立的,显然,该表达式的值为1。
8.答案:D
【解析】字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCH
码表中都是连续的。大写字母A〜Z是从65〜90,所以只要变量cl大于A并且小于Z就能
保证其为大写字母。
9.答案:D
【解析】C语言中if(表达式)中表达式的值可以是任意合法的表达式,如果表达式的值为0
表示条件为假,如果表达式的值非0表示条件为真。
10.答案:B
【解析】if—else控制结构中,else总是与最近的未配对的if匹配。本题的执行过程为:如
果输入整数小于3则不进行任何操作,否则判断是否不等于10,若为真则进行输出。因此
程序输出的数据为大于3且不等于10的整数。
11.答案:A
【解析】该题考查if条件语句,当条件为真时,将b值赋给a,c值赋给b:当条件为假时,
将a值赋给c。该题中if条件为假,所以将a的值赋给c,故a=10b=50c=10。
12.答案:B
【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值
等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为选项B)。
13.答案:B
【解析】对于选项B)来说,若x的值小于0,则有两次调用sqrt()函数,这很明显不符合题
意。通过分析可知,本题答案为B)。
14.答案:C
【解析】本题考查简单的if…else语句。先执行条件if(a<b),显然不成立,再执行else语句。
15.答案:D
【解析】x=l,if和elseif的条件都不满足,故y值不改变输出。
16.答案:C
【解析】程序首先执行第一个判断语句,a==l成立;b++==2,先判断b是否为2,再进行
b加1操作,执行后b的值为3。继续执行第二个判断语句,注意程序此时进行逻辑或运算,
b!=2的值为真,因此条件表达式b!=2||c-!=3的值为真,程序便不再执行第二个逻辑语
句c-!=3,而直接进行输出操作。因此,本题正确答案为C)。
17.答案:D
【解析】该题目考查if条件语句。else语句和最近的一个if语句配对。由于x>y为假,所
以直接执行最后一行代码。
18.答案:D
【解析】if...else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达
式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式
的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语
法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个
if-else相当于嵌套在第一个if子句里,相当于x<y&&y>0时,z=0;当x<y&&y>=0时,z=z+l。
19.答案:A
【解析】函数调用相当于《2,3),程序运算应得结果为"-1"。
20.答案:C
【解析】该题目测验考生对if…elseif结构的理解,比较简单。x的值满足x<10.0的关系,
所以程序将执行y=1.0/x;语句,y的值应该等于0.5。最后,用printf函数输出时,%f的输
出格式为小数点后保留6位。
21.答案:A
【解析】表达式k=a>b?(b>c?1:0):0表示:如果(a>b)条件为真,则k取值(b>c?1:
0),否则k取值0:当a>b的情况下,如果b>c,则k值为1,否则为0。所以该表达式与选
项A)功能相同。
22.答案:B
【解析】当表达式EXP为非0值时条件成立,即执行语句计+;,当EXP等于0时执行语句
j-;o这就等同于条件表达式"(EXP!=0)?i++:j--;"。故本题答案为B)。
23.答案:C
【解析】switch。中括号内的变量类型应该与下面case语句后的常量保持类型一致。使用
(int)x,可以将x强制转换成整型,然后与整型2做取余运算还是整型数据。若与数据2.0
做取余运算,按照转换原理:向高精度的数据类型进行转换,结果就变成了实型数据。综上
所述,本题C)正确,B)错误。A),D)均不满足switch语句的原则。
24.答案:B
【解析】switch(a==l)语句中,若a等于1,贝IIa=l为"真",则应该进行a=b的操作,故选
项B)错误。
25.答案:D
【解析】本题考查了switch结构的内容。在C语言中,程序执行完一个case标号的内容后,
如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是
起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继
续执行了外部switch结构的case2分支。最后a和b的值分别为2和1。
26.答案:C
【解析】C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰且直观。
switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式
中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。
27.答案:C
【解析】本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构
后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入
口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各
case都不匹配时,则执行default后面的语句。本题中ch为字符H,所以caseH条件中的语
句将被执行,由于没有break语句,所以caseG后的语句也被执行,由于同样的缺少break
语句,所以default后的语句也被执行了。
28.答案:A
【解析】switch语句的条件是"a%3=15%3=0",所以执行case0后面的语句,m++;m=l,然
后就执行break,跳出switch语句,所以最后输出m的值为1。
二.填空题
1.答案:(x%3==0)&&(x%7==0)|
[解析]x%3==0能保证x是3的倍数,x%7=0能保证x是7的倍数,(x%3==0)&&(x%7=0)
能保证x是3的倍数并且x是7的倍数。
2.答案:10|
【解析】第个printf语句输出的结果是逻辑表达式(x>0]|x<20)的值,显然为真,即为1;
第二个printf语句输出的是逻辑表达式(x>0&&x<20)的值,该值为假,即为0。
3.答案:0|
【解析】字符空格的ASCH码不为0,所以本题中表达式!C的值为0,b=0&&l的结果显然
为0。
4.答案:1,0|
【解析】与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a〈0)&&!(b->=0))
时,a、b的值已经发生了变化。
5.答案:1|
【解析】在执行逻辑表达式"j=!ch&&i++"时,首先判断j=!ch的值,因为"ch=$"不为0,所
以"j=!ch=0",编译系统便不再计算表达式"i++"的值,i的值不变,仍为1。
6.答案:(a+b>c)&&(a+c>b)&&(b+c>a)|
【解析】三角形的条件是两边之和大于第三边。要用"&&"指令连接三个条件,表示三个条
件都要满足。
7.答案:4]
【解析】a==l为真,b!=2为假,c!=3为假,所以d=4。
8.答案:3|
【解析】C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大
于y,所以执行printf("%d\n",z);语句。
9.答案:7|
【解析】此表达式为三目运算符,++a的值为6,b-的值为6,则整个表达式的值为++a的值,
++a的值为7。清注意前缀++、--和后缀的区别。
10.答案:a=2,b=l|
【解析】本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,
如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是
起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继
续执行了外部switch结构的case2分支,最后a和b的值分别为2和1
第5章循环结构程序设计
选择题
1.答案:B
【解析】当y减为1时判断while(y-),此时满足条件,但是y变成0。下次循环判断while(y-)
时,因为y为0不满足条件跳出循环,但是此时也要执行y-,所以y变成了-1。打印输出
时输出-1。
2.答案:D
【解析】本题考查逻辑运算符的"短路"现象,山于k的值为0,表达式首先去求k++的值,
因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过
nH>2,不再对它进行求值,即k的值加1,n的值不变。
3.答案:D
【解析】在本题中,程序每执行一次循环x的值就减2,循环共执行4次。当x的值为8,4,2
时,printf语句先输出x的值,再将x的值减1。而当x为6时,if语句条件成立,程序先
将x的值减1,再将其输出。所以输出结果为选项D)。
4.答案:A
【解析】选项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n<=0不
成立,跳出循环。所以正确答案为A)。
5.答案:C
【解析】本题考查变量的自加"++"和自减"-"问题。当y的值为9、6或3时,if语句的条件
成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句的执行,故输出结果
为852。因此,本题答案为C)。
6.答案:B
【解析】t=l是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t==l,
注意"="与"=="的用法。
7.答案:D
【解析】选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,
所以在循环体内表达式i%100+l的值永远不大于100,break语句永远不会执行,所以是死
循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行k++,
使k=10001,从而使循环陷入死循环。
8.答案:B
【解析】本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符"!"的优先级大于不
等于运算符"!="的优先级。
9.答案:A
【解析】整个程序中只有对i增加的语句而没有对i减少的语句,所以2、3都不可能出现,
选项B)和D)错误。而i=5时第一个if语句的表达式为假,所以选项C)也错误。
10.答案:A
【解析】这道试题主要考查了switch和break语句,当变量s的值为1时,执行case1、case
2两条语句,输出65;当变量s的值为2时,执行case2语句,输出6;变量S的值为3时,
执行case3、default两条语句,输出64;变量s的值为4时,执行default语句,输入5;变
量s的值为5时;执行default语句,输出6;变量s的值为0时,程序运行结束。
11.答案:D
【解析】当产生的随机数n为。时,执行case。:exit(O)这条语句,结束程序的运行。
12.答案:A
【解析】第一次循环时,k=l,在switch语句中,先执行default后面的语句,即c=c+k
=1,因为没有break语句,所以不会跳出switch结构,会接着执行case2后面的语句,即c
=c+l=2,然后跳出switch;第二次循环时,k=2,直接执行case2后面的语句,即c=c+l
=3,然后跳出switch语句,结束循环,执行输出语句。
13.答案:B
【解析】循环变量i从。依次递增到5,依次输出字母A,b,C,d,E,f。
14.答案:C
【解析】根据程序顺序执行的次序,当程序执行到while这条语句,根据while语句中的结
束循环的条件是"输入回车键时,结束循环",所以当按回车键后,程序才执行while语句的
下-一条语句。
15.答案:D
【解析】A)项每进行一次循环判断一个字符是否为回车,如果不是就进行下一次判断,因
此可以统计出输入字符个数;B)项与A)项的判断相似,仅为是否将读入的数据赋值给一个
变量,因此并不影响判断结果;C)项用for循环来判断,与B)项的判断完全相同,可以统计
出输入字符个数;D)项中ch=getchar()是给变量ch赋初值,如果输入回车,则程序只循环
一次,如果输入一个非回车的字符,则程序进入死循环。因此,本题正确答案为D)。
16.答案:D
【解析】初始值a=l,b=2,第一次循环:b=b+a=2+l=3,a=a+2=1+2=3,a=a+l=3+l=4;第
二次循环:b=b+a=3+4=7,a=a+2=4+2=6,a=a+l=6+l=7;第三次循环:b=b+a=7+7=14,
a=a+2=7+2=9,a=a+l=9+l=10,故本题答案选D)。
17.答案:D
【解析】本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达
式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1〜49之间满足这
个条件的只有15、30和45,因为s的初始值为1,所以s=l+15+30+45=91。
18.答案:D
【解析】本题考查for循环语句,注意第二个for语句的后面有一个分号,即printf函数不
属于循环体,无论循环执行多少次,printff*")语句只执行一次。因此,本题正确答案为D)。
19.答案:B
【解析】本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为
"jv=i",而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j
都等于3时才会执行一次。m的值为55对3取模,计算结果为1。故本题答案为B)o
20.答案:A
【解析】第一次循环i=Lj=3和j=2时都能执行m*=i*j,此时得到m的值为6;然后进行
第二次循环i=2,j=3时会执行break语句,内部循环直接结束,此时i再加1,也会导致退出
外部循环,所以最终结果m的值为6。
21.答案:A
【解析】本题考查了continue和break语句在循环语句中的作用。break语句的作用是结束
本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。
22.答案:B
【解析】此程序考查了for循环和x++。对于大循环,有两个xH,其中循环3次,对于小循
环,循环三次,但是运行了两次x++,所以最后结果是6+2=8。
23.答案:D
【解析】continue语句的作用是结束本次循环,直接进入下次循环。
24.答案:C
【解析】本题考查变量的自加"++"和自减"一"问题。当y的值为9、6或3时,if语句的条件
成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句执行,故输出结果为
852o
25.答案:A
【解析】本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结
构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为
入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各
case都不匹配时,则执行default后面的语句。
26.答案:A
【解析】本题考查用于多分支选择的switch语句。
27.答案:A
【解析】因为变量的初始值分别为"k=5,n=0",所以程序第一次进入循环时,执行default
语句,这时k=4,执行"case4:"这个分支,结果是"n=2,k=3",打印出2;程序然后进行第
二次循环,这时"n=2,k=3",执行"case3:"这个分支,结果是"n=3,k=2",打印出3;程序
进行第三次循环,这时"n=3,k=2",执行"case2:case4:"这两个分支,结果是"n=5,k=l",
打印出5,这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束,故输出结
果为235。
28.答案:D
【解析】本题考查用于多分支选择的switch语句。
—.填空题
1.答案:不能|
【解析】cl,c2被定义为字符类型,当输入65时是以字符形式读入,只能读到字符6,6的
ASCH码值是54,满足while(cl<6511c2>90),所以执行scanf("%c",&cl),即不能输出结果。
2.答案:4]
【解析】执行调用语句prt('*',24)后,函数prt中的形参变量n的值等于24,而在1到24
之间是6的倍数的整数有:6,12,18,24,所以共输出4行*号。
3.答案:lAbCeDf2dF|
【解析】本题考查逻辑运算和ASCII码。While循环的功能是对输入的第偶数个且为小写字
母的字符进行处理,将小写字母转化为大写,因此答案为lAbCeD£2dF。
4.答案:54321|
【解析】将一个正整数对10进行取模运算的结果就是该整数的个位数字,被10整除的结果
则是除去个位的其余数位。本题通过一个while循环反复取n的个位并将其输出,依次输出
为54321。
5.答案:k<=n;k++|
【解析】本题要求将一个fbr循环改成while循环。这首先要保证循环条件相同,在fbr循
环中,每次执行循环之后,循环控制变量k都会加1。而while循环则没有,故需在循环增
加改变k的数值的语句"k++;%
6.答案:
【解析】在for循环语句中,自变量k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025上海市安全员考试题库及答案
- 2025-2030年中国金卤灯行业十三五规划与发展前景分析报告
- 2025-2030年中国辣椒红色素市场运营状况及发展前景预测报告
- 2025-2030年中国软包装复合膜行业运行动态及发展前景预测报告
- 2025-2030年中国超高频RFID市场发展现状规划研究报告
- 2025-2030年中国船用液压舵机行业运行状况及发展趋势分析报告
- 2025-2030年中国聚氯乙烯用阻燃剂行业运行态势及投资战略研究报告
- 2025-2030年中国纳米二氧化钛市场运行现状及投资发展前景预测报告
- 2025-2030年中国硫酸镍市场运营状况与发展潜力分析报告
- 2025-2030年中国男士化妆品市场规模分析及发展建议研究报告
- 2024-2025年第二学期学校教导处工作计划(二)
- 2025年苏州卫生职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 二零二五年度博物馆场地租赁与文物保护合作协议3篇
- 2025年春新人教版历史七年级下册全册课件
- 2024年钟山职业技术学院高职单招语文历年参考题库含答案解析
- 《汽车空调工作原理》课件
- 骆驼祥子-(一)-剧本
- 2024年郑州黄河护理职业学院单招职业技能测试题库及解析答案
- 魏晋南北朝时期中外文化的交流
- 渔业行业智能化海洋牧场养殖方案
- 2025届广东省佛山一中石门中学高考冲刺押题(最后一卷)数学试卷含解析
评论
0/150
提交评论