C语言题集二答案_第1页
C语言题集二答案_第2页
C语言题集二答案_第3页
C语言题集二答案_第4页
C语言题集二答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 顺序结构1. B解析: 在C语言中,当一次输入多个数据的时候,数据之间要用间隔符,合法的间隔符可以是空格、制表符和回车符。逗号不是合法的间隔符。2. B解析: 本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于ss*s。3. C解析: printf函数的浮点数缺省输出格式:在printf函数的输出中,若无输出宽度限制,每种数据都有一个缺省的输出宽度,一般浮点数的小数位数则是6位,不管输出格式是%f或%lf皆如此。printf函数的浮点数宽度限制输出:以%mf或%mlf格式输出浮点时,如果指定的宽度大于实际数据宽度,按指定宽度输出,且多余数补以空格;如果指定的宽度小于实际数据宽

2、度,浮点数的整数部分将以实际数据(位数)输出。小数部分按指定数输出,且对数据做四舍五入处理。printf的整数限宽输出:没有宽度制的整数原数输出。在宽度限制于数的实际位数时,宽度说明无效,按数的实际位数输出。4. D解析: 在C语言所有的运算符中,逗号运算符的优先级最低。C语中区分大小,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。5. C解析: 本题中,程序先执行语句 x=1.2;,根据赋值运算

3、的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后及3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。6. C解析: 在C语言中,对于不同类型的数据用不同的格式字符,

4、其中,“%d”是按整型数据的实际长度输出,“%md”中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。7. D解析: 整型变量的输出形式有:%d,%o,%x,%u等,%x是以十六进制无符号形式输出整数。十六进制数同样也可以想%md一样按%mlx输出指定宽度的长整型数。8. A解析: 该题考查的是C语言中自减运算符和逗号表达式的应用。自减运算符位于变量之前时,先使变量的值减1,再进行赋值运算。逗号表达式的一般形式为:表达式1,表达式2,其求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。9. B解析: 本题中,“%d %d

5、 %d”表示按整型数形式输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。选项B)中不应该使用逗号。10. B解析: scanf函数的一般格式是:scanf(格式控制,地址表列)该格式中,地址表列中应是变量地址,而不是变量名。11. D解析: 在C语言中,自增1运算符记为“+”,其功能是使变量的值自增1。自减1运算符记为“-”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:+i i 自增1后再参及其他运算。-i i 自减1后再参及其他运算。i+ i 参及运算后,i的值再自增1。i- i 参及运算后,i的值再自减1。

6、在理解和使用上容易出错的是i+和i-。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细解析。12. B解析: 对于逗号表达式中的第一个表达式等价为a=15;第二个表达式的值为154=60,此时变量a的值仍未改变还是15,第三个表达式的值为b的值。13. A解析: 此题考查有关标准设备的知识。在多数C语言版本中,stdio.h文件至少定义了四种标准设备文件,可以直接引用不必含有打开操作,包括:标准输入文件指针 stdin缺省为键盘;标准输出文件指针 stdout缺省为显示器;标准错误输出文件指针 stderr缺省为显示器;标准打印输出文件指针 stdprn指打印机;此外,还可

7、能包括如辅助设备等标准文件指针,且多数文件指针可以被重新定向到其他设备。14. C解析: 在使用scanf函数时,我们必须要注意以下问题:在用scanf函数给普通变量输入数据时,在变量名前没有写地址运算符&。如scanf(dd, x, y);是错误的。正确的应为scanf(dd, &x, &y);。2)在scanf函数调用语句中,企图规定输入实型数据的小数位。如执行以下语句:scanf(6.2f, &a);C语言规定是不允许指定输入数据的宽度的。3)是错误不允许输入数字宽度。用scanf函数输入数据时,必须注意要及scanf语句中的对应形式匹配。如:scanf(d,d,&x, &y);若按以下

8、形式输入数据:2 4是不合法。数据2和4之间应当有逗号。本题选项A)中后面省略了符号&,其他选项也有省略逗号的错误,只要明白了以上解析,可以说,scanf函数的重要用法已经在我们掌握之中了。15. A解析: 本题中,x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x的类型不变,仍为float型16. B【命题目的】考查格式化输出函数的掌握情况。【解题要点】表达式n=(k%m,k/m)实际上是将k/m的结果赋值给了n。【错解分析】逗号表达式中最后一个表达式的值是该逗号表达式的值,所以输出结果为k/m。17. C【命题目的】考查格式化输入函数的掌握情

9、况。【解题要点】若在scanf的格式控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。【错解分析】由于scanf的格式控制串中插入了a、逗号和b=等字符,所以输入时候应该一一对应地在对应位置上输入这些字符。【考点链接】格式化输出也是在对应的位置上输出对应的插入的其他字符。填空题:1. 解析: 在%及格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。2. 16解析: 赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:a+=(a=8)此时,a的值由于赋值为8,而不是0a+=8a=

10、a+8a=16第4章 选择结构选择题:1. A解析: 该题目的关键是要搞清楚该程序执行了哪几条语句。由于x的值等于1,所以switch结构中,程序从case 1后面的语句开始执行,又因为case 1后面的语句没有以break结束,所以程序要继续往下执行case 2后面的语句。所以,该程序共执行了这三条语句:a+;a+;b+;因此,变量a和b最后的值应该为2和1。2. C解析: 该题目的关键是要搞清楚“&”和“|”两个逻辑运算符的运算功能。运算符“&”和“|”是双目运算符,要求有两个运算量。且规定逻辑及运算中,只有前面运算量的值为真时,才需要判别后面的值。只要前面为假,就不必判别后面的值。而逻辑

11、或则为只要前为真,就不必判别后面的值;只有前为假,才判别后。本题中j+值为真,不进行k+的运算,所以k的值保持不变。3. C解析: 该题目测验考生对if.else if结构的理解,比较简单。x的值满足x12的结果为假,所以执行的语句是x-12,最终y的值应该是0。6. A解析: 在C程序中,判断逻辑值时,用非0表示真,用0表示假。逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。7. C解析: 此题综合考查多种运算符的使用;首先计算表达式a=25 &b-=2 &c的值,很容易看出b-=2的值为假,因此表达式为假;根据三目运算的特点,由于前面的表达式为假,应执行p

12、rintf(“#a=%d,b=%d,c=%dn”,a,b,c),应注意a的值依然为25,b的值经过b-运算后改变为13,而c的值仍为19。8. D解析: 本题考查if语句中的一种表达方式,即:ifelse if。该表达式的语句是:if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else语句4本题执行else y=1.0,并且以“%f”输出。9. D解析: 选项D)为两条语句。10. D解析: 本题考查C语言的逻辑表达式及逻辑或(“|”)运算符的用法。“|”表示或的意思,“|”是按位或的意思,“&”是并且的意思,C语言中没有“or”。11. C解析: if语

13、句嵌套使用时,应当注意if 及else的配对关系,else总是及它上面的最近的if配对。因此,本题中先判断(ab),表达式值为0,则不执行下面的if语句,直接跳到printf语句中(c的值不变)。12. D解析: 该题考查逻辑及“&”和逻辑或“|”以及逻辑非“!”符号的用法。选项A)即3&4为真,选项B)即3=4为真,选项C)是一个逻辑或及逻辑及的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。13. B解析: 条件运算符要求有三个操作对

14、象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意+、-的用法。14. A解析: 本题考查的是逻辑及“&”,逻辑或“|”,逻辑非“! ”,表达式的应用。逻辑及运算符“&”,当参及运算的两个量都为真时,结果才是真,否则为假;逻辑或运算符“|”,当参及运算的两个量有一个为真时,结果是真,否则为假;逻辑非运算符“! ”,当参及运算的量为真时,结果才是假,否

15、则为真。15. B解析: 本题考查逻辑及运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假后,计算机将不再执行后面表达式的运算。本题中,由于前一个表达式的值为“假”,所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。16. C解析: 逻辑或表达式是先执行左边,再执行右边语句。如果左边等式为真,则不执行右边语句,本题中+x成立,不执行+y语句,所以,y的值不变。17. C解析: 本题考查简单的ifelse语句。先执行条件if(ab),显然不成立,则执行else语句。18. D解析: 解答本题时,先判断if语句,因为a=b+c不成立

16、,则执行else语句。19. B【命题目的】考查逻辑运算符的掌握情况。【解题要点】&,|在某种情况下会实行“短路规则”,即当逻辑及前面一个表达式的值为假的时候,后面一个表达式就不需要计算,这个逻辑表达式一定为假;当逻辑或前面一个表达式为真的时候,后面一个表达式就不需要计算,这个逻辑或表达式一定为真。【错解分析】选项A)是将n的值赋值给m和k。选项C)就是进行了短路规则,当m=k赋值后,m得到的新值不为0,即为真,逻辑或后面的表达式就不被计算,所以n没有被赋值。D)答案没有什么意义。【考点链接】C语言中,没有专门的逻辑值,而是用非零值来表示真,用零表示假。20. D【命题目的】考查对于if-el

17、se语句的掌握情况。【解题要点】if-else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。【错解分析】C语言的语法规定,else子句总是及前面最近的不带else的if匹配,及书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于xy&y0时,z=0;当x=0时,z=z+1。【考点链接】else不是一条独立的语句,它只能及if同时使用。填空题1. 【命题目的】考查对于if语句的掌握情况。

18、【解题要点】C语言的语法规定:else子句总是及前面最近的不带else的if相结合。因为x不大于y,所以执行printf(%dn,z);语句。第5章 循环结构选择题1. B解析: t=1是将t赋值为1,所以循环控制表达式的值为1,而判断t是否等于1时应用t=1注意“”及“”的用法。2. B解析: 该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n-运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环体时输出为6,由此可以排除

19、选项C)。3. D解析:选项A)的循环表达式的条件永久为1,并且小于100的数及100取余不超过99,所以在循环体内表达式i%100+1的值永远不大于100,break语句永远不会执行,所以是死循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行k+,使k=10001,从而使循环陷入死循环。4. B解析: 本题中,“!”表示逻辑非运算符,“!=”等于运算符,逻辑非运算符比等于运算符的优先级低。5. C解析: do-while语句的一般形式为:do 循环语句while(表达式);本题中,执行“语句”一次后,表达式的值为假,停止执行。6. D解析: 本题涉及break语句

20、,重在循环次数的判定。本题的循环由于无出口,只能借助break语句终止。鉴于题目要求说明判断ij的执行次数,只需考查经过i+=k运算如何累计i的值,i值分别是i=2,4,6,8,10,12时,判断ij为真,程序输出s的值并结束,共循环6次。7. D解析: do.while语句的一般形式是:do 语句while (表达式);特点是:“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”非0,再执行“语句”,直到“表达式”的值为0时停止执行语句。在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当while后面的“表达式”一

21、开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k%11的值为0时,则不必执行循环,将执行j=k/11语句,输出结果,所以该表达式合理的条件是k%11。8. D解析: 本题考查“+”和“-”运算符,运算符“+”是操作数加1, 而“-” 则是操作数减1。例如:x=x+1可写成x+, 或+xx=x-1可写成x-, 或-xx+(x-)及+x(-x)在上例中没有什么区别, 但x=m+和x=+m却有很大差别。x=m+ 表示将m的值赋给x后, m加1。x

22、=+m 表示m先加1后, 再将新值赋给x。当y=2时,首先执行y-,使y值变为1。接着执行y,y值变为0,循环结束。最后执行输出语句,注意先输出此时y的值0,在再使y值自减1变为-1。9. B解析: 本题考查两个知识点:自加自减运算符和do.while循环语句。题中b-=a等价于b=b-a;a+的含义是在使用a之后,使a的值加1;b-的含义是在使用b之后,使b的值减1。10. B解析: 解答本题,当然先要清楚do.while语句的执行过程:先执行一次指定的循环体语句,本题中执行x-后判断表达式,表达式的值为!x为假,程序结束循环。11. C解析: 除了考查基本的for循环结构外,本题还考查自加

23、运算的相关知识,但均为基础。注意:for语句中的表达式可以部分或全部省略,但两个“;”不能省略。12. D解析: 本题中需要填空的是for循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并及9取余为0即可满足本题的条件。13. C解析: 本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。14. B解析: 本题中,省略了for语句的第二个表达式,C语言规定如果省略了第二个表达式,则表示为真,即为1。15. A解析: 本题考查用于多分支选择的switch语句, 其一般形式为:switch(表达式) case常量表

24、达式1: 语句1; case常量表达式2: 语句2; case常量表达式n: 语句n; default : 语句n+1;其语义是:计算表达式的值。并逐个及其后的常量表达式值相比较,当表达式的值及某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句。如表达式的值及所有case后的常量表达式均不相同时,则执行default后的语句。16. B解析: do-while 语句的一般格式为:do 循环体语句 while(表达式);先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行printf(“%dn”,x=-2)后,值

25、为x=x-2,即为1。判断表达式的值,!(-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式!(x)的值为0,结束循环。17. B解析: 根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等(相等时结束循环),也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为a!=b。18. D解析: 选项A)for循环可以用于循环次数不确定的情况;选项B)for循环是先判断表达式,后执行循环体语句;选项C)在for循环中,可以用break语句跳出循环体,从而接着执行循环体后面的语句。19. B解析: 该题是一个for循环嵌套语句。第一层fo

26、r循环循环2次,第二层循环3次,但当j等于0和1时,将执行continue语句,不执行x+运算,所以每次执行完内循环后,x的增量为1。最后一个x+运算将每次累加起来就是x的值。20. B解析: 本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符“!”的优先级大于不等于运算符“!=”的优先级。21. A解析: 和都属于无实际作用语句,但又都符合语法要求,因为条为1,是无限循环。中省略了全部的表达式,也代表真,因此也是无限循环。22. C解析: do-while语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有

27、分号作为语句的结束,在dowhile循环中,不可以省略while。23. A解析: 此题中for循环的执行次数取决于关系表达式(i=9&!=876)的结果。只要i9,或者x=876,只要在执行scanf语句时,从终端输入876,循环就将结束。如果从终端一直未输入876,则将由i值的增加使i9,从而结束循环。按照题中所给定的for语句,每执行一次循环,i自增1,因此执行10次循环后,i的值为10,循环最终也将结束。24. A解析: while是先判断条件再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。解析: while是先判断条件

28、再执行语句;do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。25. A【命题目的】考查对于while循环的理解情况。【解题要点】while循环是先判断循环条件之后再进入循环体。【错解分析】这个题目的循环体是空语句,每次做的仅仅是判断循环的条件,由于+运算优先于,所以每次都先+,后比较。【考点链接】do-while循环是先执行循环体,之后判断循环条件。26. C【命题目的】考查for循环的掌握情况。【解题要点】for后一对括号中的表达式可以是任意有效的C语言表达式。【错解分析】该题目的循环体部分为空语句,循环控制条件为mn,每一次m增3,n减

29、1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。【考点链接】for后一对括号中,允许出现各种形式的及循环控制无关的表达式,虽然在语法上合法,但这样会降低程序的可读性。27. B【命题目的】考查循环嵌套的掌握情况。【解题要点】这个题目中的k,每一次外层的for循环后都会被初始化为0,这样输出的k是最后一次做内部循环所得到的值。【错解分析】最后一次做内部的循环时,m的值为3,所以内部的循环做两次。【考点链接】for,while,do-while都可以相互嵌套,循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。28. B【命题目的】主要考查continue语句的掌握情况。【解题

30、要点】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。【错解分析】当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i+,判断循环条件。【考点链接】continue语句并没有使整个循环终止,而break语句则是终止整个循环。第6章 字符型数据选择题:1. A解析: C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“”开头的字符。其中“ddd”表示用ASCII码(八进制数)表示一个字符,本题中的char c=72即表示占一个字符的变量c的ASCII码值。2. D解析: C语言的转义字符见下表所示

31、。转义字符转义字符的意义n回车换行t横向跳到下一制表位置v竖向跳格b退格r回车f换页反斜线符“”单引号符a鸣铃ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符3. C解析: 为便于表示各种数据类型,机器中采用了BCD码(表示十进制数)、ASCII码(字符型)、汉字机内码等等各种码。数据采用了补码、原码和反码为表示形式。实型数据表示方法有浮点法和定点法等,考生需熟练掌握各种码的含义,并用之来计算、比较。需要提出的是,在机器内部,所有码都是由二进制编码而成的,它都是以二进制存储在机器之中的。字符“5”和“7”的ASCII的值分别为53和55,其二进制形式分别为和。4. C解析: 本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:switch语句的语法格式为:switch (表达式) case 常量表达式1:语句组1; case 常量表达式2:

温馨提示

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

评论

0/150

提交评论