已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章参考答案及解析一. 选择题1.答案:B【解析】在本题中,选项B)实际是先计算关系表达式A=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=1时,(A=1)|(A!=1)为真;当A!=1时,(A=1)|(A!=1)也为真,故正确答案为A。4.答案:C【解析】根据题目所给条件可知,x|y为1,w2& c6)的整型变量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码值的范围为6590,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。7.答案:D【解析】在C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、(逻辑或)、&(逻辑与)、(异或)。在位运算里面还有(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=(a&b)&(cB);中,先判断a&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然cB是成立的,显然,该表达式的值为1。8.答案:D【解析】字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的。大写字母AZ是从6590,所以只要变量c1大于A并且小于Z就能保证其为大写字母。9.答案:D【解析】 C语言中if(表达式)中表达式的值可以是任意合法的表达式,如果表达式的值为0表示条件为假,如果表达式的值非0表示条件为真。10.答案:B【解析】 ifelse控制结构中,else总是与最近的未配对的if匹配。本题的执行过程为:如果输入整数小于3则不进行任何操作,否则判断是否不等于10,若为真则进行输出。因此程序输出的数据为大于3且不等于10的整数。11.答案:A【解析】该题考查if条件语句,当条件为真时,将b值赋给a,c值赋给b;当条件为假时,将a值赋给c。该题中if条件为假,所以将a的值赋给c,故a10 b50 c10。12.答案:B【解析】两个if语句的判断条件都不满足,程序只执行了ca这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为选项B)。13.答案:B【解析】对于选项B)来说,若x的值小于,则有两次调用sqrt()函数,这很明显不符合题意。通过分析可知,本题答案为B)。14.答案:C【解析】本题考查简单的ifelse语句。先执行条件if(ay为假,所以直接执行最后一行代码。18.答案:D【解析】ifelse语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x0时,z=0;当x=0时,z=z+1。19.答案:A【解析】函数调用相当于f(2,3),程序运算应得结果为-1。20.答案:C【解析】该题目测验考生对ifelse if结构的理解,比较简单。x的值满足xb?(bc?10)0表示:如果(ab)条件为真,则k取值(bc?10),否则k取值0;当ab的情况下,如果bc,则k值为1,否则为0。所以该表达式与选项A)功能相同。22.答案:B【解析】当表达式EXP为非0值时条件成立,即执行语句i+;,当EXP等于0时执行语句j-;。这就等同于条件表达式(EXP!=0)?i+:j-;。故本题答案为B)。23.答案:C【解析】switch()中括号内的变量类型应该与下面case语句后的常量保持类型一致。使用(int)x,可以将x强制转换成整型,然后与整型2做取余运算还是整型数据。若与数据2.0做取余运算,按照转换原理:向高精度的数据类型进行转换,结果就变成了实型数据。综上所述,本题C)正确,B)错误。A),D)均不满足switch语句的原则。24.答案:B【解析】switch(a=1)语句中,若a等于1,则a=1为真,则应该进行a=b的操作,故选项B)错误。25.答案:D【解析】本题考查了 switch结构的内容。在C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2分支。最后a和b的值分别为2和1。26.答案:C【解析】C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰且直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。27.答案:C【解析】本题主要对switch语句进行了考查。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。本题中ch为字符H,所以case H条件中的语句将被执行,由于没有break语句,所以case G后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。28.答案:A【解析】switch语句的条件是a%3=15%3=0,所以执行case 0后面的语句,m+;m=1,然后就执行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.答案:1 0|【解析】 第一个printf语句输出的结果是逻辑表达式(x0|x0&x20)的值,该值为假,即为0。3.答案:0|【解析】字符空格的ASCII码不为0,所以本题中表达式!C的值为0,b=0&1的结果显然为0。4.答案:1,0|【解析】与运算两边的语句必须同时为真时,结果才为真。当执行完if(+a=0)时,a、b的值已经发生了变化。5.答案:1|【解析】在执行逻辑表达式j=!ch&i+时,首先判断j=!ch的值,因为ch=$不为0,所以j=!ch=0,编译系统便不再计算表达式i+的值,i的值不变,仍为1。6.答案:(a+bc)&(a+cb)&(b+ca)|【解析】三角形的条件是两边之和大于第三边。要用&指令连接三个条件,表示三个条件都要满足。7.答案:4|【解析】a=1为真,b!=2为假,c!=3为假,所以d=4。8.答案:3|【解析】C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf(%dn,z);语句。9.答案:7|【解析】此表达式为三目运算符,+a的值为6,b-的值为6,则整个表达式的值为+a的值,+a的值为7。请注意前缀+、-和后缀+,-的区别。10.答案:a=2,b=1|【解析】本题考查了 switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2分支,最后a和b的值分别为2和1。第六章参考答案及解析一. 选择题1.答案:B【解析】当y减为1时判断while(y-),此时满足条件,但是y变成0。下次循环判断while(y-)时,因为y为0不满足条件跳出循环,但是此时也要执行y-,所以y变成了-1。 打印输出时输出-1。2.答案:D【解析】 本题考查逻辑运算符的短路现象,由于k的值为0,表达式首先去求k+的值,因为表达式k+的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n+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,再进行循环条件判断,此时循环条件n0不成立,跳出循环。所以正确答案为A)。5.答案:C【解析】本题考查变量的自加+和自减-问题。当y 的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句的执行,故输出结果为8 5 2。因此,本题答案为C)。6.答案:B【解析】t=1是将t赋值为1,所以循环控制表达式的值为1。判断t是否等于1时,应用t=1,注意与的用法。7.答案:D【解析】选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,所以在循环体内表达式i%100+1的值永远不大于100,break语句永远不会执行,所以是死循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行k+,使k=10001,从而使循环陷入死循环。8.答案:B【解析】本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符!的优先级大于不等于运算符!=的优先级。9.答案:A【解析】整个程序中只有对i增加的语句而没有对i减少的语句,所以2、3都不可能出现,选项B)和D)错误。而i5时第一个if语句的表达式为假,所以选项C)也错误。10.答案:A【解析】这道试题主要考查了switch和break语句,当变量s的值为1时,执行case 1、case 2两条语句,输出65;当变量s的值为2时,执行case 2语句,输出6;变量S的值为3时,执行case 3、default两条语句,输出64;变量s的值为4时,执行default语句,输入5;变量s的值为5时,执行default语句,输出6;变量s的值为0时,程序运行结束。11.答案:D【解析】当产生的随机数n为0时,执行case 0:exit(0)这条语句,结束程序的运行。12.答案:A【解析】 第一次循环时,k1,在switch语句中,先执行default后面的语句,即cc+k1,因为没有break语句,所以不会跳出switch结构,会接着执行case2后面的语句,即cc+12,然后跳出switch;第二次循环时,k2,直接执行case2后面的语句,即cc+13,然后跳出switch语句,结束循环,执行输出语句。13.答案:B【解析】循环变量i从0依次递增到5,依次输出字母A,b,C,d,E,f。14.答案:C【解析】根据程序顺序执行的次序,当程序执行到while这条语句,根据while语句中的结束循环的条件是输入回车键时,结束循环,所以当按回车键后,程序才执行while语句的下一条语句。15.答案:D【解析】A)项每进行一次循环判断一个字符是否为回车,如果不是就进行下一次判断,因此可以统计出输入字符个数;B)项与A)项的判断相似,仅为是否将读入的数据赋值给一个变量,因此并不影响判断结果;C)项用for循环来判断,与B)项的判断完全相同,可以统计出输入字符个数;D)项中chgetchar()是给变量ch赋初值,如果输入回车,则程序只循环一次,如果输入一个非回车的字符,则程序进入死循环。因此,本题正确答案为D)。16.答案:D【解析】初始值a=1,b=2,第一次循环:b=b+a=2+1=3,a=a+2=1+2=3,a=a+1=3+1=4;第二次循环:b=b+a=3+4=7,a=a+2=4+2=6,a=a+1=6+1=7;第三次循环:b=b+a=7+7=14,a=a+2=7+2=9,a=a+1=9+1=10,故本题答案选D)。17.答案:D【解析】本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,149之间满足这个条件的只有15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。18.答案:D【解析】 本题考查for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(*)语句只执行一次。因此,本题正确答案为D)。19.答案:B【解析】本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为j=i,而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。故本题答案为B)。20.答案:A【解析】第一次循环i=1,j=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+。对于大循环,有两个x+,其中循环3次,对于小循环,循环三次,但是运行了两次x+,所以最后结果是6+2=8。23.答案:D【解析】continue语句的作用是结束本次循环,直接进入下次循环。24.答案:C【解析】本题考查变量的自加+和自减-问题。当y 的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句执行,故输出结果为852。25.答案:A【解析】本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。26.答案:A【解析】本题考查用于多分支选择的switch语句。27.答案:A【解析】因为变量的初始值分别为k=5,n=0,所以程序第一次进入循环时,执行default语句,这时k=4,执行case 4:这个分支,结果是n=2,k=3,打印出2;程序然后进行第二次循环,这时n=2,k=3,执行case 3:这个分支,结果是n=3,k=2,打印出3;程序进行第三次循环,这时n=3,k=2,执行case 2: case 4:这两个分支,结果是n=5,k=1,打印出5,这时因为n=5不满足n5的循环条件,因此退出循环,程序运行结束,故输出结果为235。28.答案:D【解析】本题考查用于多分支选择的switch语句。二. 填空题1.答案:不能|【解析】c1,c2被定义为字符类型,当输入65时是以字符形式读入,只能读到字符6,6的ASCII码值是54,满足while(c190),所以执行scanf(%c,&c1),即不能输出结果。2.答案:4|【解析】执行调用语句prt(*,24)后,函数prt中的形参变量n的值等于24,而在1到24之间是6的倍数的整数有:6,12,18,24,所以共输出4行*号。3.答案:1AbCeDf2dF|【解析】本题考查逻辑运算和ASCII码。While循环的功能是对输入的第偶数个且为小写字母的字符进行处理,将小写字母转化为大写,因此答案为1AbCeDf2dF。4.答案:54321|【解析】将一个正整数对10进行取模运算的结果就是该整数的个位数字,被10整除的结果则是除去个位的其余数位。本题通过一个while循环反复取n的个位并将其输出,依次输出为54321。5.答案:k1,循环继续;第二次循环执行后,b1,a5,不满足条件b1,结束循环。所以输出的a值为5。8.答案:n/=10或n=n/10;|【解析】每次循环把n除以10所得的商赋给n。9.答案:0|【解析】本题考查的是dowhile循环。第一次执行循环体,因为k=1,r=1,n=20,所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4,所以k的值为0。10.答案:0 1 123|【解析】 第一个printf语句输出结果为0 1。循环体总共循环三次,第一次循环结果为f1,f11,f21;第二次循环结果为f2,f11,f22;第三次循环结果为f3,f12,f23。11.答案:ACE|【解析】在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为a,执行一次循环后变为c,之后再变成e,当其变为g时,循环条件便不满足,循环终止。故本题共输出3个字符。表达式i-a+A即表示输出i对应的大写字母,结果为ACE。12.答案:b=i+1|【解析】本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和; b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。13.答案:852|【解析】循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式-y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。14.答案:return 0|return 1|【解析】如果a能被i整除,则a是素数,返回值为0。如果a不能被i整除,则a不是素数,返回值为1。15.答案:7|【解析】执行while(mn)的循环,得到m=7,n=7。此时所有循环结束,m=7。16.答案:1/n|【解析】在循环中当i3、2、1时,j分别为1、2、3;1、2;1。sum值即为每个i值和它对应的j值相乘之后全部相加的和。17.答案:1,-2|【解析】题中外层while循环的循环条件是y-!=-1,即y=0;内层dowhile循环的循环条件是y-,即y-0,y=1。18.答案:30|【解析】题目中for(;)表示:for循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行for循环和for循环的终止都没有限制。19.答案:s=0|【解析】continue语句用于跳出本次循环,直接进行下一次循环。进行if判断时k的值为1不能够被2整除,因此执行continue退出本次循环,不对s进行任何操作,直接进行循环条件判断,此时k的值为1不满足循环条件,退出while循环,输出s的值为0。第六章参考答案及解析一. 选择题1.答案:D【解析】在进行数组的定义时,不能使用变量对数组的长度进行定义。其他选项均符合数组定义标准。2.答案:D【解析】选项A)不符合C语言的语法要求;选项B)中没有指定数组的大小;选项C)中数组大小不能用变量来指定。3.答案:C【解析】当i=0时ab0=1;当i=1时ab1=3;当i=2时ab2=2;当i=3时ab3=4;当i=4时ab4=1。将以上各数值相加得11,故选C。4.答案:C【解析】在for(i0;i=0 & tcj),这个语句是控制排序的关键语句,它既实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的数据或到数据的上界为止。二. 填空题1.答案:k=p;|【解析】为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素sp比临时最大元素sk更大时,应该用p更新k,所以在空框处应填入代码k=p;。2.答案:i=1|xi-1|【解析】对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空11处应填入i=1。相邻的两个数相加取和,放在数组a中,x0与x1的和存放在a0中,所以空12处应填入xi-1。3.答案:3 7 15|【解析】由题意知,数组n相邻元素之间满足关系:ni+1=ni*2+1,数组n在定义时只初始化了第一个元素n0=1,随后通过for循环逐个计算n1、n2和n3的值,并将其输出,通过计算可得n1=3,n2=7,n3=15。4.答案:123569|【解析】当i=0时,j=0、1、2时满足条件,则打印a00、a01、a02;当i=1时,j=1、2时满足条件,则打
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年融媒体产品运营岗位能力测试题库及答案
- 2026年免疫试剂储存规范培训考核试题附答案
- 2025年下半年教师资格证《小学教育教学知识与能力》试卷及答案
- 2026年国家义务教育质量监测考试及答案
- 2026年法考被害人自陷风险题库(含答案)
- 2025年体育足球单招试卷及答案
- 2026年阿里地区事业单位考试真题及答案
- 2025年全国计算机等级考试《三级网络技术》试题与答案
- 高中生需知的烘焙师考试题目及答案
- 2026年海南省烟草公司考试试题及答案解析
- T∕SFYJK 003-2025 托育机构医育融合服务规范
- 发酵饲料销售合同
- 游戏音乐外包合同
- 2025年全国体育单招政治真题
- 2026-2027学年初高中物理衔接教材
- 2026-2026学年小学六年级数学上册全册教案
- 公司付款审批流程制度
- CNCA-C13-01:2026 强制性产品认证实施规则 安全玻璃(试行)
- 2026年考试题清算结算业务流程与规范
- 2025年政工师职称考试题库及答案2025版
- 生产安全事故应急救援预案演练计划
评论
0/150
提交评论