您好,欢迎访问三七文档
1第一章C语言基础知识一,选择题1答案是AA正确课本第2页11行B{}可以作为复合语句的标志Cmain函数不是用户命名的D分号是语句结束的标志,肯定是语句的一部分做这个题目需要对书上的概念透彻的理解2答案是AA错误课本第4页关于用户标识符是这样介绍的---命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。这个题目考察用户标识符3答案是B用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,数字,下划线其中一种。这个题目考察用户标识符的概念。4答案是Bdefine是预定义标识符,而预定义标识符可以是用户标识符,所以define可以是用户标识,if是关键字,而关键字不能是用户标识符,所以if不可以是用户标识符5答案是Dsizeof是关键字,参照附录二注:6--13考察用户标识符概念6答案是DD答案以数字2开头了,不符合标识符定义7答案是CC答案以数字开头了8答案是Dint是关键字9答案是B答案A是关键字,答案C是以数字开头了,不符合概念,答案D出现了小数点10答案是A答案A出现了小数点11答案是C答案C以数字开头了12答案是AB答案中float是关键字,C答案中3c以数字3开头了,D答案中-5d中-不属于字母,数字,下划线中一种13答案是AB答案中-max中-错误,C答案中3COM以字母3开头了,D答案中int是关键字,不是用户标识符14答案是BA答案中15.后面不应该有点,C答案中出现了逗号,D中字母B有问题15答案是B课本第8页倒数8行16答案是B2B中出现了8,而八进制只能有0到7组成17答案是D答案D中开头是0不是o18答案是C答案A中E后面是整数,0.5是小数答案B中E后面不能为空答案D中E前面不能为空本题目考察指数的表示形式19答案是C答案A中2.0有问题,不能为小数形式答案B中E前面不能为空答案D中E后面不能为空本题目考察指数的表示形式20答案是AB中八进制中不能出现数字8,C中e后面不能是小数,D中e后面不能为空21答案是BB中0.4是小数,不正确22答案是CC中0.5是小数,不正确23答案是D3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本题目考察算术运算符,需要注意整数除以整数结果只能是整数24答案是D%不能用于实型的计算25答案是DD答案中$不属于字母,数字,下划线26答案是AA答案是逗号表达式,B答案中x+1=y是赋值表达式,左边只能是变量,而这里是x=1,同理答案C中x+10也是错误的,在D答案中,考察的是强制类型转换,正确的是(double)x/1027答案是A本题考察的是注释需要注意的地方,具体解答见课本第2页中间部分28答案是B答案A中n2没有定义,答案C中在定义f之前不能使用它,答案D中E后面必须是整数29答案是C考察的是强制类型转换,正确的是k%(int)f30答案是D本题目类似与课本第16页的例15,解题方法是要抓住++m,--n,--m,表达式的值是变量变化之后的值,而n--表达式的值是变量n变化之前的值31答案是B本题目是课本第10页的例9,具体解答见课本,本题目考察的是负整数与无符号正整数在计算机中存放的格式的一样的,但表示的不同的两个数332答案是CA答案中%运算对象不能为实型,26.8错误,B答案中考察的赋值运算符,赋值运算符左边必须是变量,所以赋值运算符左边1+2错误,同理答案D错误33答案是C本题目考察的是课本第15页的关于自加与自减运算符的第一点说明,即增量运算符的运算对象只能是变量,而在C答案中++(i+1)中,i+1是表达式34答案是B本题目考察的是整数除以整数结果是整数,在B答案中1/2结果是0,导致整个表达式的值是0明显是错误的35答案是D36答案是A本题目见课本第13页倒数第10行本题目主要考察n++表达式的值是n变化之前的值,然后使n的值增加137答案是Bc=a/b+0.4c=8/5+0.4c=1+0.4c=1.4因为c是int型的,所以n的值是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见课本第9页例8二,填空题1课本第9页倒数第7行2课本第3页倒数第5行3课本第9页倒数第6行4课本第7页倒数第5行5课本第8页整型变量和第11页实型变量的介绍65+3.6/2=5+1.8=6.87a++表达式的值是a变化之前的值,当然a本身增加了18把10赋给变量B第二章顺序结构一选择题1,答案是C随意使用空语句会导致逻辑上出现错误,不要随便使用。2,答案是B语句必须以分号结尾,A,C,D表达式后面均没有分号。3,答案是Cintx=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3,把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。4,答案是Aa,b均为整型,a/b是取a÷b所得商的整数部分,所以是0,再把0赋值给c,所以是c的值是0。5,答案是DA注释语句可以放在代码的任何位置B将r定义为整型不会在编译时出错,会自动进行类型转换4C变量s为浮点型,格式描述符%f时正确的Dπ是非法的变量6,答案是D(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的个数是相等的。并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。7,答案是Am是十进制整数以十进制有符号的形式输出,即照原样输32767,n=032767,032767是八进制的整数以八进制无符号形式输出,去掉前面的0。见教材P208,答案是Cm,n的值都是十六进制数0xabc,m-=n即是m=m-n,把m-n的值赋给m,即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制数不用在前面0x或者0X。见教材P219,答案是B表达式i--的值是在变量自减之前的值,i的初值为10,所以该表达式的值也为10;表达式j++的值是变量自加之后的值,j初值为1,所以该表达式在值是2。10,答案是Cm=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,答案是Blongx=-123456L;说明x为长整型的数据,长整型数据对应的输出格式应该为%ld。15,答案是Cm=(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。518,答案是DA输入函数应为scanf();B,C输入数据列表必须是地址表达式;19,答案是A从键盘输入数据的格式必须与输入控制要求的格式一样B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。20,答案是A格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D两个输入数之间的回车换行可以忽略。21,答案是Cx乘以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无法输出到屏幕。二填空题1,一条语句分号参见教材P182,88首先将八进制数0210转化为十六进制的数0X88,输出格式说明要以十六进制无符号的形式输出,所以省略0X,直接输出88。3,11把十进制数转化为八进制数,以无符号的形式输出4,252137b为八进制数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=207,261a为十进制数177转化为八进制的数为0261,以无符号的形式输出为26168,16a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=a+a,所以a最后被赋值为16,即输出a的第三章选择结构一、选择题1、D此题主要是考语句的特征。一条语句只包含一个分号,D项有两个分号,应该是两条语句,所以选D。2、C此题主要是考真假条件的等价。题目中的E为非0时条件为真,为0事为假。那么把非0和0带到选项中可知,C项正好是E为0时表达式为真,非0时为假,所以选C。3、D任意合法的表达式都可以作为逻辑运算符的运算对象4、D此题主要是考逻辑运算和关系运算的优先级别.只要掌握!、算术运算和&&的优先级别便可选对.这几种运算符的具体优先级关系见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项中先计算出(b+b)&&(c-a)=1,又a=2,2||1=1所以选A。7、D此题考到了++运算符以及逻辑运算。当计算机碰到a&&b时,先计算表达式a的值,若为真才会计算表达式b的值,否则将不会去计
本文标题:第1-4章习题答案
链接地址:https://www.777doc.com/doc-2241439 .html