第1-4章习题答案_第1页
第1-4章习题答案_第2页
第1-4章习题答案_第3页
第1-4章习题答案_第4页
第1-4章习题答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、 第一章 C语言基础知识一,选择题 1 答案是A A正确 课本第2页11行 B 可以作为复合语句的标志 C main 函数不是用户命名的 D 分号是语句结束的标志,肯定是语句的一部分 做这个题目需要对书上的概念透彻的理解 2 答案是A A 错误 课本第4页关于用户标识符是这样介绍的-命名时,标识符 的选择由用户自定,但是不能与关键字相同,所以A选项错误。这个 题目考察用户标识符 3 答案是B 用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母, 数字,下划线其中一种。这个题目考察用户标识符的概念。 4 答案是B define 是预定义标识符,而预定义标识符可以是用户标识符,所以 de

2、fine可以是用户标识,if 是关键字,而关键字不能是用户标识符, 所以if不可以是用户标识符 5 答案是D sizeof 是关键字,参照附录二 注: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 答

3、案是A B答案中-max中-错误,C答案中3COM以字母3开头了,D答案中 int 是关键字,不是用户标识符 14 答案是B A答案中15. 后面不应该有点,C答案中出现了逗号,D中字母B有 问题 15 答案是B 课本第8页倒数8行 16 答案是B B中出现了8,而八进制只能有0到7组成 17 答案是D 答案D中开头是0不是o 18 答案是C 答案A中E后面是整数,0.5是小数 答案B 中E后面不能为空 答案D中E前面不能为空 本题目考察指数的表示形式 19 答案是C 答案A中2.0有问题,不能为小数形式 答案B中E前面不能为空 答案D中E后面不能为空 本题目考察指数的表示形式 20 答案是A

4、 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答案中x+1=y是赋值表达式,左边只能是变 量,而这里是x=1, 同理答案C中x+10也是错误的,在D答案中, 考察的是强制类型转换, 正确的是(double)x/10 27

5、 答案是 A 本题考察的是注释需要注意的地方,具体解答见课本第2页中间部分 28 答案是B 答案A中n2没有定义,答案C中在定义f之前不能使用它,答案D 中E后面必须是整数 29 答案是 C 考察的是强制类型转换,正确的是k%(int)f 30 答案是 D 本题目类似与课本第16页的例15,解题方法是要抓住+m,-n,-m, 表达式的值是变量变化之后的值,而n-表达式的值是变量n变化之 前的值 31 答案是B 本题目是课本第10页的例9,具体解答见课本,本题目考察的是负 整数与无符号正整数在计算机中存放的格式的一样的,但表示的不 同的两个数 32 答案是C A答案中%运算对象不能为实型,26.

6、8错误,B答案中考察的赋值 运算符,赋值运算符左边必须是变量,所以赋值运算符左边1+2错 误,同理答案D错误 33 答案是 C 本题目考察的是课本第15页的关于自加与自减运算符的第一点说 明,即增量运算符的运算对象只能是变量,而在C答案中+(i+1)中,i+1是表达式 34 答案是 B 本题目考察的是整数除以整数结果是整数,在B答案中1/2结果是0,导致整个表达式的值是0明显是错误的 35 答案是D 36 答案是A 本题目见课本第13页倒数第10行 本题目主要考察n+表达式的值是n变化之前的值,然后使n的值增加1 37 答案是 B c=a/b+0.4 c=8/5+0.4 c=1+0.4 c=1

7、.4 因为c 是int 型的,所以n的值是1 ,做此题目需要仔细阅读题目 38 答案是 D (int)a+b/b=(int)5.5+2.5/2.5=5+1.=b=6. 同样a,b的类型是double型的 39 答案是D 见课本第9页例8二,填空题 1 课本第9页倒数第7行 2 课本第3页倒数第5行 3 课本第9页倒数第6行 4 课本第7页倒数第5行 5 课本第8页整型变量和第11页实型变量的介绍 6 5+3.6/2=5+1.8=6.8 7 a+表达式的值是a变化之前的值,当然a本身增加了1 8 把10赋给变量B 第二章 顺序结构一 选择题1, 答案是 C 随意使用空语句会导致逻辑上出现错误,不

8、要随便使用。2, 答案是 B 语句必须以分号结尾,A,C,D表达式后面均没有分号。3, 答案是 C int x=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3, 把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。4, 答案是 A a,b均为整型,a/b是取ab所得商的整数部分,所以是0,再把0赋值给 c,所以是c的值是0。5, 答案是 DA 注释语句可以放在代码的任何位置B 将r定义为整型不会在编译时出错,会自动进行类型转换C 变量s为浮点型,格式描述符f时正确的D 是非法的变量6, 答案是 D(x,y)是逗号表达式,它的值只有一个,所以格式说明

9、符的个数和输出项的个数是相等的。并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。7, 答案是 Am是十进制整数以十进制有符号的形式输出,即照原样输32767,n=,是八进制的整数以八进制无符号形式输出,去掉前面的0。见教材P208, 答案是 C m,n的值都是十六进制数0xabc,m-=n即是m=m-n, 把m-n的值赋给m, 即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制 数不用在前面0x或者0X。见教材P219, 答案是 B 表达式i的值是在变量自减之前的值,i的初值为10,所以该表达式的 值也为1

10、0;表达式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位,要输出的数据

11、宽度大于规定的输出宽度,所以按数据的实际宽度输出,输出102。第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是八进制数,所以要转换成十进制数10后再输出。13, 答案是 B表达式af/=c*=(x=6.5),按从右到左结合,先把6.5赋值给x,再执行cc*6.5,c的值变为65,再执行ff/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.

12、5。14, 答案是 B long x=-L;说明x为长整型的数据,长整型数据对应的输出格式应该为ld。15, 答案是 C m=(k+=i*=k);按从右到左结合,先执行i=i*k;即i被赋值为4,再执行kk4;k被赋值为6,最后把6赋给m,输出m和i的值。16, 答案是 C 略(参考12题)17, 答案是 D m遵循从右向左结合的原则;m的值为m自增之前的值,所以执行完xm以后,x被赋值为3;表达式xx8/+n中有加号除号,先算8/+n,+n的值为自增之后的值为5,8/5取整为1,即xx8/+n转化为xx1,即把x1的值赋给x,x的值变为2。18, 答案是 D A 输入函数应为scanf();

13、 B,C 输入数据列表必须是地址表达式;19, 答案是 A 从键盘输入数据的格式必须与输入控制要求的格式一样 B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。20, 答案是 A 格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D两个输入数之间的回车换行可以忽略。21, 答案是 C x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后的数实现了小数位到整数位的四舍五入。最后再除以100.0,把数字变回

14、原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。22, 答案是 C 从键盘输入数据的格式必须与输入控制要求的格式一样。 23, 答案是 B输入控制中第一个数要求以“2d”形式输入,即要求输入一个两位的数,而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的值为6.,后面输入的543则没有赋值给变量。24, 答案是 D“”会输出一个“”,“d”会照原样输出,因为没有格式说明,m,n无法输出到屏幕。二 填空题1, 一条语句 分号 参见教材P182, 88首先将八进制数0210转化为十六进制的数0X88,输出格式

15、说明要以十六进制无符号的形式输出,所以省略0X,直接输出88。3, 11把十进制数转化为八进制数,以无符号的形式输出4, 25 21 37 b为八进制数025,c为十六进制数0X25,首先把b、c都转化为十进制的整数,分别为21、37,按照输出格式要求a、b、c以十进制整数形式输出,中间以空格分开,所以输出为25 21 37。5, n1%dnn2=%d除了n1,n2的值之外,还必须加入“n1”“n2”照原样输出的字符,很明显在两个数据之间还加了换行符。6, i=10,j=20格式控制中加入了格式说明以外的其他字符,则在输入数据时这些字符也要同样输入。输入格式控制为i=%d,j=%d,所以则应该

16、从键盘输入i=10,j=207, 261a为十进制数177转化为八进制的数为0261,以无符号的形式输出为2618, 16a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=aa,所以a最后被赋值为16,即输出a的第三章 选择结构一、选择题1、D 此题主要是考语句的特征。一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。2、C此题主要是考真假条件的等价。题目中的E为非0时条件为真,为0事为假。那么把非0和0带到选项中可知,C项正好是E为0时表达式为真,非0时为假,所以选C。3、D 任意合法的表达式都可以作为逻辑运算符的运算对象4、D 此题主要是考逻辑运算和

17、关系运算的优先级别.只要掌握!、算术运算和&的优先级别便可选对.这几种运算符的具体优先级关系见P26第7行。5、A 此题主要是考逻辑运算符!、&和|之间的优先级别。!最高,&次之,|最低。先求得!a为0,所以不必计算!b的值,即!a&!b的值为0,由c=0,!c=1,而0|1=1,所以选D。6、A 此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和算术运算的优先级别后,就不难了。A 选项中!a为0,所以!a=1为假,那么就不用计算&后面的表达式了,因为0与任何数均为假;B项中先计算出ab为假,则(ab)&!c也为假,而0|1=1; C项中a和b均为真,所以a&b的值为1;D项中先

18、计算出(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,理解了这两点后,我们在看题目:具体的分析在教材第一册第三章P26页的例2。8、D 此题和题2非常的相似,也是考真假条件的转换,其中D项中只有k为0时,!k%2=1才成立,显然和A、B、C三项不同。9、C 此题主要是考if和else的

19、配对问题。可在教材第一册第三章P32第4行找到答案。10、D 此题主要是考if和else的一般形式。if后面的语句要么是单条语句,要么是由 扩起来的复合语句,不能是if后有两条语句的,所以本题程序在运行的时候会出错。11、C 此题考到了关系运算和逻辑运算及一定数学知识。|x-y|10可等价为-10x-y10,首先选项A表示x-y的绝对值小于10,与题中的数学关系一样;将-10x-ya为真,所以(n=ba)为1,那么将不会去计算m=abc的值为0,所以不执行第一条语句;在判断第二个条件,c-1=d表达式的结果为真,所以执行其下面的语句,那么将输出d+1的值为3 ,所以选答案B。注意:本题中有一个

20、错误,就是最后一条语句掉了个“;”,请大家补上分号,再做此题 ,否则本题将选答案D (这是打印错误,出题者的本意不是要选D)17、C 此题主要是考查条件表达式和条件运算符。首先要注意条件表达式的结合方向,它是从右至左的(可参照附录三) 第一个条件表达式的值为a,第二个条件表达式的值为c ,而c=6,所以答案选C 。18、A此题主要是考查if-else语句和条件表达式的转化。只要理解了if-else语句和条件表达式的运算规则的话,就很容易选出A19、D 此题主要是考查在switch语句中break和default的作用及break的适用范围。详细说明可参看教材第一册第三章 P33对switch的

21、说明部分和第四章P45关于break语句的注意事项。20、B 此题考查的是条件表达式求解问题。先看第一个条件表达式语句,ac为假,所以k=k=2选 B21、A 此题考查的是条件表达式的求解顺序。参照附录三可知,它的结合方向是自右至左,所以先求得右边一个条件表达式的值为2,再求得左边一个的值为1,即选A22、C 此题考查的是真假条件的等价问题。x-y为真表示x-y是非0的,也即x-y0 即选C二、填空题1、答案是:10 20 0分析:多数同学得到的答案是10 20 1,显然是没有弄清楚第三条赋值语句:c=(a%b1).这是将后面一个逻辑表达式的值给c,那么关于逻辑表达式的考题,无非就是考察运算符

22、的优先级,也就上说先算哪个,后算哪个的问题。在这个题里面,先计算第一个圆括号里面的内容,a%b的值是10,所以101为假。在逻辑或运算的时候,两个运算对象都为假,则结果为假。所以c的值为0.答案是:10 20 02、答案是: 1 分析:程序中是一个ifelse结构。这个题最容易出错的地方在于if的条件,注意,里面的是c=a是一个赋值表达式,不是将c与a的值进行比较。所以条件为真,输出赋值以后c的值,为1。3、答案是:4,5,99 分析:题中的重点在于两个if结构,大家要注意两点:第一,如果if后面没有花括号,则它后面的第一条语句是它的结构题,并且只有一条语句。(如果后面是一个结构,则整个结构都

23、属于if结构的结构体)。第二,变量在不断的被重新赋值,所以其值在不断的变化。4、答案是:yes 分析:该题与第二题是同一回事。5、答案是:1 分析:这个题还上一个ifelse结构,考查点仍然是考察考生是否能够正确识别if后面括号里的表达式p=a!=0,根据运算符的优先级知道,这里应该先算a!=0,这是一个逻辑运算,a的值为5,所以a!=0为真,其逻辑值为1,将1赋值给p,所以条件为真,输出p的值,为1。6、答案是:20,0 分析:见第3题分析。7、答案是: 分析:题中有三个if结构,注意,这三个if结构是相互独立的,是互不相关的,只要他们的条件成立,就要执行其结构体(后面的输出语句)。通过键盘

24、输入,得a的值为58,所以a50为真,输出58;然后判断a40,仍然为真,再输出58,最后判断a30,肯定为真,所以再输出58,连续三次输出58。8、答案是:0 分析:本题的关键在于关系运算符的运算次序,a=5,b=4,c=3.abc看起来是真的,但是这这是数学里面是这样的,这里我们要一步一步的计算,先算ab,a确实大于b,所以为真,逻辑值为1,后面的计算就变成了1c,显然为假,逻辑值为0,并将它赋值给d,所以最后输出d的值为0。9、答案是:3 分析:这个题主要考察条件运算符。程序要输出(P/30?p/10:p%3)这个条件表达式的值。P为30,所以p/3=10,100显然为真,所以整个表达式

25、的值应该是p/10的值,p/10得3。10、答案是:2 1 分析:题中是一个switch嵌套结构。里面的switch是case 1的语句,题的关键点在于这个语句(即里面的这个switch结构)的后面并没有跳出整个结构的break语句。所以,当x=1,与case相配以后,执行完后面的语句(即里面的这个switch结构),然后没有遇到break语句,所以并不跳出结构体,而是继续执行case 2后面的语句。所以最后得到的结果应该是2 1,而不是1 0。 第四章 循环结构选择题:(1) 答案:B N的值为10,n7为真,执行循环体,n的值减1后为9,输出n的值9 N的值为9,n7为真,执行循环体,n的

26、值减1后为8,输出n的值8 N的值为8,n7为真,执行循环体,n的值减1后为7,输出n的值7 N的值为7,n7为假,结束循环。(2)答案:Ak的值为5,进入循环,(-k)表达式的值为4(真),同时k的值改变为4,输出表达式k-=3的值1,同时k的值为1。 k为1,表达式(k)的值为0, 结束循环。(3)答案:A1 X=0,y=5,z=3,(z0&x0&x0&x0&x3-5-7-9,语句s+=1每次执行使s增加的数为:2,4,6,8,10,所以s的值为自然数110中偶数的值。(10)答案:C分析:C项s=s+1/n, 1/n首先运算,n为整型变量,1也是整型变量,当n=210时,1/n的值为整数

27、0,故C不正确(11) 答案:A(12)答案:C(13)答案:C分析:x的值为15。执行while循环,(x10)为真,执行循环体。执行x+;x的值为16。再执行if语句。(x%3)为真,执行x+,x的值为17,再执行break;语句,退出循环体,结束while语句的执行。最后输出x的值17。(14)答案:D(15)答案:D分析:continue语句会提前结束此次循环体的执行,不会结束整个for语句的执行。 (16 )答案:D(17)答案:B2*i-1(18)答案:A(19)答案:D分析:变量i的值为0,执行while循环,表达式(i10)为真,进入循环体,执行if(i1) continue;

28、 表达式(i1)为真,执行continue; 提前结束此轮循环体的执行(后面两语句不执行),再判断表达式(i10)的值,为真,进入循环体,执行if(i1) continue; 因为i的值为1,没改变,表达式(i1)仍为真,执行continue; 提前结束此轮循环体的执行(后面两语句不执行),再判断表达式(i10)的值,为真,进入循环体。填空题:(1) 答案:1分析:此题的循环体是省略了大括号的空语句 ;,x的初值是2;执行while语句,先判断表达式的值,(x-)的值为1(真),同时x的值减1变为0,再执行循环体(空语句;),再判断表达式(x-)的值,表达式的值为0,同时x值减1,变为1,因为表达式的值为0(假),循环结束。最后输出x的值1。(2)答案:11(分析略)(3)答案:n=n/1

温馨提示

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

评论

0/150

提交评论