C++第二章与第三章答案.docx
- 文档编号:9889029
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:13
- 大小:23.50KB
C++第二章与第三章答案.docx
《C++第二章与第三章答案.docx》由会员分享,可在线阅读,更多相关《C++第二章与第三章答案.docx(13页珍藏版)》请在冰豆网上搜索。
C++第二章与第三章答案
第二章顺序结构
一选择题
1,答案是C
随意使用空语句会导致逻辑上出现错误,不要随便使用。
2,答案是B
语句必须以分号结尾,A,C,D表达式后面均没有分号。
3,答案是C
intx=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3,把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。
4,答案是A
a,b均为整型,a/b是取a÷b所得商的整数部分,所以是0,再把0赋值给c,所以是c的值是0。
5,答案是D
A注释语句可以放在代码的任何位置
B将r定义为整型不会在编译时出错,会自动进行类型转换
C变量s为浮点型,格式描述符%f时正确的
Dπ是非法的变量
6,答案是D
(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的个数是相等的。
并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。
7,答案是A
m是十进制整数以十进制有符号的形式输出,即照原样输32767,n=032767,032767是八进制的整数以八进制无符号形式输出,去掉前面的0。
见教材P34
8,答案是C
m,n的值都是十六进制数0xabc,m-=n即是m=m-n,把m-n的值赋给m,
即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制
数不用在前面0x或者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的值为1。
a对应的输出格式为%d,即输出1;c对应的输出格式为%d,输出65,f对应的输出格式%3.1f,即输出控制宽度为3位,保留小数点后一位小数,即输出1.5,x对应的输出格式也为%3.1f,输出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+1,即把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以%c(字符)形式输出所以为输出“a”,以%d(整数)形式输出为,字符转换为整型要使用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以十进制整数形式输出,中间以空格分开,所以输出为252137。
5,n1=%d\nn2=%d
除了n1,n2的值之外,还必须加入“n1=”“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在ASCII码中派在A的后面A为65,那么B为66。
11,10
012为八进制数,转换为十进制为10。
12,1234
在scanf函数中指定了宽度为2,输入123456,a=12,b=34,后面的567无效。
13,12
程序运行时输入12,getchar()函数只能接受单个字符,所以ch1=’1’,ch2=’2’。
n1=ch1-‘0,转化为ASCII码计算n1=50-49,n1的值为1。
n2=n1*10+(ch2-‘0’)转化为ASCII码计算n2=1*10+(51-49),n2的值为12。
第三章选择结构
一、选择题
1、D此题主要是考语句的特征。
一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。
2、C此题主要是考真假条件的等价。
题目中的E为非0时条件为真,为0时为假。
那么把非0和0带到选项中可知,C项正好是E为0时表达式为真,非0时为假,所以选C。
3、D任意合法的表达式都可以作为逻辑运算符的运算对象
4、D此题主要是考逻辑运算和关系运算的优先级别.只要掌握!
、算术运算和&&的优先级别便可选对.这几种运算符的具体优先级关系见见教材P188,附录三。
5、A此题主要是考逻辑运算符!
、&&和||之间的优先级别。
!
最高,&&次之,||最低。
先求得!
a为0,所以不必计算!
b的值,即!
a&&!
b的值为0,由c=0,!
c=1,而0||1=1,所以选A。
6、A此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和算术运算的优先级别后,就不难了。
A选项中!
a为0,所以!
a==1为假,那么就不用计算&&后面的表达式了,因为0与任何数均为假;B项中先计算出a
c也为假,而0||1=1;C项中a和b均为真,所以a&&b的值为1;D项中先计算出(b+b)&&(c-a)=1,又a=2,2||1=1所以选A。
7、D此题考到了++运算符以及逻辑运算。
当计算机碰到a&&b时,先计算表达式a的值,若为真才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=0,则0&&b必为0;而a||b则正好是相反的,即先计算表达式a的值,若a为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则1||b的值必为1,理解了这两点后,我们在看题目:
i++==1的值为1,此时i为2,所以计算&&后的表达式,首先计算++j==3的值为1,j的值为3,由上面的原理我们可知,||后面的表达式不用再计算,所以此时i,j,k的值分别为2,3,3。
8、D此题和题2非常的相似,也是考真假条件的转换,其中D项中只有k为0时,!
k%2==1才成立,显然和A、B、C三项不同。
9、C此题主要是考if和else的配对问题。
见教材P51。
10、D此题主要是考if和else的一般形式。
if后面的语句要么是单条语句,要么是由{}扩起来的复合语句,不能是if后有两条语句的,所以本题程序在运行的时候会出错。
11、C此题考到了关系运算和逻辑运算及一定数学知识。
|x-y|<10可等价为-10 12、D此题也是考到了真假条件的变换和if-else语句。 A、B、C三项都是表示a为真时输出x,为假时输出y,而D则是a为假时输出x,为真时输出y。 13、D此题考查了赋值表达式的一般格式,=的左边是变量名,右边是表达式,所以D项错误。 14、C此题主要是考查逻辑运算符||,当计算机碰到a||b,先计算表达式a的值,若为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则0||b必为0。 题中b>a为真,所以(n=b>a)为1,那么将不会去计算m=a 15、C此题主要是考查if-else-if和if语句。 具体分析见教材第49页例7。 16、C此题主要是考查if-else-if以及关系表达式的运算。 首先判断第一个条件a>b>c的值为0,所以不执行第一条语句;在判断第二个条件,c-1>=c表达式的结果为假,所以也不执行其下面的语句,因此执行最后一条语句,将输出d+2的值为4。 17、C此题主要是考查条件表达式和条件运算符。 首先要注意条件表达式的结合方向,它是从右至左的(可参照附录三)第一个条件表达式的值为a,第二个条件表达式的值为c,而c=6,所以答案选C 。 18、A此题主要是考查if-else语句和条件表达式的转化。 只要理解了if-else语句和条件表达式的运算规则的话,就很容易选出A 19、D此题主要是考查在switch语句中break和default的作用及break的适用范围。 详细说明可参看教材第三章P53对switch的说明部分。 20、B 此题考查的是条件表达式求解问题。 先看第一个条件表达式语句,ac为假,所以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语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在’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==0||x==1为真,所以执行y=1,然后执行 y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以选择A。 26答案是B 当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时执行语句j--;。 这就等同于条件表达式“(EXP! =0)? i++: j—”。 所以本题选择B。 27答案是D C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在’A’和’Z’之间就可以了,选项B的书写格式错误,而选项C不符合要求。 大写字母的ASCII码值的范围为65到90,所以A选项不符合要求,小写字母的ASCII码比大写字母的ASCII码大32,所以只有D是正确的。 28答案是D 奇数和2求余一定不为0,所以当x为奇数时,x%2==0是不成立的,值为0,此题选择D。 29答案是B 两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没有变化,程序输出的结果是3,5,3。 所以本题选择B。 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=1,执行内嵌的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<1)||(a/b>1).这是将后面一个逻辑表达式的值给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,连续三次输出58。 8、答案是: 0 分析: 本题的关键在于关系运算符的运算次序,a=5,b=4,c=3.a>b>c看起来是真的,但是这这是数学里面是这样的,这里我们要一步一步的计算,先算a>b,a确实大于b,所以为真,逻辑值为1,后面的计算就变成了1>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=1,与case相配以后,执行完后面的语句(即里面的这个switch结构),然后没有遇到break语句,所以并不跳出结构体,而是继续执行case2后面的语句。 所以最后得到的结果应该是21,而不是10。 11、答案是: 0 字符空格的ASCII码不为0,所以本题中表达式! c的值为0,b=0&&1的结果显然为0。 12、答案是: 1 执行“j=! ch&&i++”时,首先判断j=! ch的值,因为ch=’$’不为0,所以j=! ch=0,编译便不再计算表达式i++的值,i的值不变仍为1。 13、答案是: -4 表达式! n的值为1,所以执行x-=1后x=1;表达式m的值为非0值,所以执行其后的语句x-=2后x的值为-1,表达式x的值也为非0,所以执行其后的语句后x的值为-4,最后输出x的值即为-4。 14、答案是: #& 表达式c==5的值为真,所以表达式的值等于1,因此输出符号“#”,然后执行“break”,继而去执行“default: printf(“&”);”语句,输出符号“&”。 15、答案是: 1 因为在条件表达式(a b中,比较表达式a 后面两个条件表达式中的比较表达式都真,所以最终x的值等于1。 16、答案是: a: bc: t1 条件表达式类似于if语句,根据“? ”前面子表达式的逻辑值来判断应该计算“: ”前面的子表达式还是后面的作为整个条件表达式的结果。 题目要求输出a、b、c3个变量中的最小值,所以当a b。 同理,后一空应填c: t1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 第二 第三 答案