C语言题集答案Word下载.docx
- 文档编号:7845943
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:16
- 大小:27.51KB
C语言题集答案Word下载.docx
《C语言题集答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言题集答案Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
表达式1,表达式2,其求解过程是:
先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。
11.B解析:
本题中,“%d%d%d”表示按整型数形式输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。
选项B)中不应该使用逗号。
12.B解析:
scanf函数的一般格式是:
scanf(格式控制,地址表列)该格式中,地址表列中应是变量地址,而不是变量名。
13.D解析:
在C语言中,自增1运算符记为“++”,其功能是使变量的值自增1。
自减1运算符记为“--”,其功能是使变量值自减1。
自增1,自减1运算符均为单目运算,都具有右结合性。
可有以下几种形式:
14.++ii自增1后再参与其他运算。
15.--ii自减1后再参与其他运算。
16.i++i参与运算后,i的值再自增1。
17.i--i参与运算后,i的值再自减1。
18.在理解和使用上容易出错的是i++和i--。
特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细解析。
19.B解析:
对于逗号表达式中的第一个表达式等价为a=15;
第二个表达式的值为15×
4=60,此时变量a的值仍未改变还是15,第三个表达式的值为b的值。
20.A解析:
此题考查有关标准设备的知识。
在多数C语言版本中,文件至少定义了四种标准设备文件,可以直接引用不必含有打开操作,包括:
21.标准输入文件指针stdin缺省为键盘;
22.标准输出文件指针stdout缺省为显示器;
23.标准错误输出文件指针stderr缺省为显示器;
24.标准打印输出文件指针stdprn指打印机;
25.此外,还可能包括如辅助设备等标准文件指针,且多数文件指针可以被重新定向到其他设备。
26.C解析:
在使用scanf函数时,我们必须要注意以下问题:
27.①在用scanf函数给普通变量输入数据时,在变量名前没有写地址运算符&
。
如scanf(″%d%d″,x,y);
是错误的。
正确的应为scanf(″%d%d″,&
x,&
y);
28.2)在scanf函数调用语句中,企图规定输入实型数据的小数位。
如执行以下语句:
scanf(″%6.2f″,&
a);
C语言规定是不允许指定输入数据的宽度的。
29.3)是错误不允许输入数字宽度。
用scanf函数输入数据时,必须注意要与scanf语句中的对应形式匹配。
如:
scanf(″%d,%d″,&
y);
30.若按以下形式输入数据:
24是不合法。
数据2和4之间应当有逗号。
本题选项A)中后面省略了符号&
,其他选项也有省略逗号的错误,只要明白了以上解析,可以说,scanf函数的重要用法已经在我们掌握之中了。
31.A解析:
本题中,x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x的类型不变,仍为float型
32.B【命题目的】考查格式化输出函数的掌握情况。
【解题要点】表达式n=(k%m,k/m)实际上是将k/m的结果赋值给了n。
【错解分析】逗号表达式中最后一个表达式的值是该逗号表达式的值,所以输出结果为k/m。
33.C【命题目的】考查格式化输入函数的掌握情况。
【解题要点】若在scanf的格式控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。
【错解分析】由于scanf的格式控制串中插入了"
a\\"
、逗号和"
b="
等字符,所以输入时候应该一一对应地在对应位置上输入这些字符。
【考点链接】格式化输出也是在对应的位置上输出对应的插入的其他字符。
填空题:
1.解析:
在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。
2.16解析:
赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:
3.a+=(a=8)此时,a的值由于赋值为8,而不是0
a+=8
a=a+8
a=16
第4章选择结构
选择题:
1.A解析:
该题目的关键是要搞清楚该程序执行了哪几条语句。
由于x的值等于1,所以switch结构中,程序从case1后面的语句开始执行,又因为case1后面的语句没有以break结束,所以程序要继续往下执行case2后面的语句。
所以,该程序共执行了这三条语句:
a++;
b++;
因此,变量a和b最后的值应该为2和1。
2.C解析:
该题目的关键是要搞清楚“&
&
”和“||”两个逻辑运算符的运算功能。
运算符“&
”和“||”是双目运算符,要求有两个运算量。
且规定逻辑与运算中,只有前面运算量的值为真时,才需要判别后面的值。
只要前面为假,就不必判别后面的值。
而逻辑或则为只要前为真,就不必判别后面的值;
只有前为假,才判别后。
本题中j++值为真,不进行k++的运算,所以k的值保持不变。
该题目测验考生对if...elseif结构的理解,比较简单。
x的值满足x<
的关系,所以程序将执行y=x;
语句,y的值应该等于。
最后,用printf函数输出时,%f的输出格式为小数点后保留6位。
4.B解析:
C语言规定的运算优先级由高到低分别是逻辑非、算术运算、逻辑或。
所以先计算!
x,值是0,然后再计算y--,由于是后缀运算符,所以y在本次运算中的值仍然是1,最后计算0||1,值为1。
5.A解析:
本题考查的是三目运算符的用法,三目运算符的形式为(表达式1)(表达式2):
(表达式3)。
当(表达式1)的值为真时,求(表达式2)的值为整个表达式的值;
如果(表达式1)的值为假,则求(表达式3)的值为整个表达式的值。
题中,表达式x>
12的结果为假,所以执行的语句是x-12,最终y的值应该是0。
6.A解析:
在C程序中,判断逻辑值时,用非0表示真,用0表示假。
逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。
此题综合考查多种运算符的使用;
首先计算表达式a<
=25&
b--<
=2&
c的值,很容易看出b--<
=2的值为假,因此表达式为假;
根据三目运算的特点,由于前面的表达式为假,应执行printf(“###a=%d,b=%d,c=%d\n”,a,b,c),应注意a的值依然为25,b的值经过b--运算后改变为13,而c的值仍为19。
8.D解析:
本题考查if语句中的一种表达方式,即:
if…elseif…。
9.该表达式的语句是:
10.if(表达式1)
11.语句1
12.elseif(表达式2)
13.语句2
14.elseif(表达式3)
15.语句3
16.else
17.语句4
18.……
19.本题执行elsey=,并且以“%f”输出。
20.D解析:
选项D)为两条语句。
21.D解析:
本题考查C语言的逻辑表达式及逻辑或(“||”)运算符的用法。
“||”表示或的意思,“|”是按位或的意思,“&
”是并且的意思,C语言中没有“or”。
22.C解析:
if语句嵌套使用时,应当注意if与else的配对关系,else总是与它上面的最近的if配对。
因此,本题中先判断(a<
b),表达式值为0,则不执行下面的if语句,直接跳到printf语句中(c的值不变)。
23.D解析:
该题考查逻辑与“&
”和逻辑或“||”以及逻辑非“!
”符号的用法。
选项A)即3&
4为真,选项B)即3<
=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&
-1为真。
选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。
24.B解析:
条件运算符要求有三个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。
条件表达式的一般形式为:
表达式1表达式2:
表达式3其求解顺序是:
先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
并且注意++、--的用法。
25.A解析:
本题考查的是逻辑与“&
”,逻辑或“||”,逻辑非“!
”,表达式的应用。
逻辑与运算符“&
”,当参与运算的两个量都为真时,结果才是真,否则为假;
逻辑或运算符“||”,当参与运算的两个量有一个为真时,结果是真,否则为假;
逻辑非运算符“!
”,当参与运算的量为真时,结果才是假,否则为真。
26.B解析:
本题考查逻辑与运算的运算规则。
其规则是:
当运算符前后两个条件表达式都满足时,其最终结果才为真。
当发现第一个表达式的值为假后,计算机将不再执行后面表达式的运算。
27.本题中,由于前一个表达式的值为“假”,所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。
28.C解析:
逻辑或表达式是先执行左边,再执行右边语句。
如果左边等式为真,则不执行右边语句,本题中++x成立,不执行++y语句,所以,y的值不变。
29.C解析:
本题考查简单的if…else语句。
先执行条件if(a<
b),显然不成立,则执行else语句。
30.D解析:
解答本题时,先判断if语句,因为a=b+c不成立,则执行else语句。
31.B【命题目的】考查逻辑运算符的掌握情况。
【解题要点】&
||在某种情况下会实行“短路规则”,即当逻辑与前面一个表达式的值为假的时候,后面一个表达式就不需要计算,这个逻辑表达式一定为假;
当逻辑或前面一个表达式为真的时候,后面一个表达式就不需要计算,这个逻辑或表达式一定为真。
【错解分析】选项A)是将n的值赋值给m和k。
选项C)就是进行了短路规则,当m=k赋值后,m得到的新值不为0,即为真,逻辑或后面的表达式就不被计算,所以n没有被赋值。
D)答案没有什么意义。
【考点链接】C语言中,没有专门的逻辑值,而是用非零值来表示真,用零表示假。
32.D【命题目的】考查对于if---else语句的掌握情况。
【解题要点】if---else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;
若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。
【错解分析】C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x<
y&
y<
0时,z=0;
当x<
y>
=0时,z=z+1。
【考点链接】else不是一条独立的语句,它只能与if同时使用。
填空题
1.【命题目的】考查对于if语句的掌握情况。
【解题要点】C语言的语法规定:
else子句总是与前面最近的不带else的if相结合。
因为x不大于y,所以执行printf("
%d\n"
z);
语句。
第5章循环结构
选择题
t=1是将t赋值为1,所以循环控制表达式的值为1,而判断t是否等于1时应用t==1注意“=”与“==”的用法。
该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。
第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。
由循环条件n>
6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环体时输出为6,由此可以排除选项C)。
3.D解析:
选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,所以在循环体内表达式i%100+1的值永远不大于100,break语句永远不会执行,所以是死循环;
选项B)的括号内没有能使循环停下来的变量增量,是死循环;
选项C)中先执行k++,使k=10001,从而使循环陷入死循环。
本题中,“!
”表示逻辑非运算符,“!
=”等于运算符,逻辑非运算符比等于运算符的优先级低。
5.C解析:
do-while语句的一般形式为:
6.do
7.循环语句
8.while(表达式);
9.本题中,执行“语句”一次后,表达式的值为假,停止执行。
10.D解析:
本题涉及break语句,重在循环次数的判定。
本题的循环由于无出口,只能借助break语句终止。
11.鉴于题目要求说明判断i>
j的执行次数,只需考查经过i+=k运算如何累计i的值,i值分别是i=2,4,6,8,10,12时,判断i>
j为真,程序输出s的值并结束,共循环6次。
12.D解析:
do...while语句的一般形式是:
13.do语句
14.while(表达式);
15.特点是:
“直到型”循环结构。
先执行一次“语句”,判“表达式”,当“表达式”非0,再执行“语句”,直到“表达式”的值为0时停止执行语句。
在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。
但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。
这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。
16.本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k%11的值为0时,则不必执行循环,将执行j=k/11语句,输出结果,所以该表达式合理的条件是k%11。
17.D解析:
本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。
18.例如:
19.x=x+1可写成x++,或++x
20.x=x-1可写成x--,或--xx++(x--)与++x(--x)在上例中没有什么区别,但x=m++和x=++m却有很大差别。
21.x=m++表示将m的值赋给x后,m加1。
22.x=++m表示m先加1后,再将新值赋给x。
23.当y=2时,首先执行y--,使y值变为1。
接着执行--y,y值变为0,循环结束。
最后执行输出语句,注意先输出此时y--的值0,在再使y值自减1变为-1。
本题考查两个知识点:
自加自减运算符和do...while循环语句。
题中b-=a等价于b=b-a;
a++的含义是在使用a之后,使a的值加1;
b--的含义是在使用b之后,使b的值减1。
25.B解析:
解答本题,当然先要清楚do...while语句的执行过程:
先执行一次指定的循环体语句,本题中执行x--后判断表达式,表达式的值为!
x为假,程序结束循环。
除了考查基本的for循环结构外,本题还考查自加运算的相关知识,但均为基础。
注意:
for语句中的表达式可以部分或全部省略,但两个“;
”不能省略。
27.D解析:
本题中需要填空的是for循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并与9取余为0即可满足本题的条件。
本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。
解答本题的关键是掌握while语句。
29.B解析:
本题中,省略了for语句的第二个表达式,C语言规定如果省略了第二个表达式,则表示为真,即为1。
30.A解析:
本题考查用于多分支选择的switch语句,其一般形式为:
31.switch(表达式)
32.{
33.case常量表达式1:
语句1;
34.case常量表达式2:
语句2;
35.…
36.case常量表达式n:
语句n;
37.default:
语句n+1;
38.}
39.其语义是:
计算表达式的值。
并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
40.B解析:
do-while语句的一般格式为:
do循环体语句while(表达式);
先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。
本题中,先执行printf(“%d\n”,x=-2)后,值为x=x-2,即为1。
判断表达式的值,!
(--x)为真,x=0,继续循环。
再次执行循环体语句后,x=-2,此时表达式!
(--x)的值为0,结束循环。
41.B解析:
根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等(相等时结束循环),也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为a!
=b。
42.D解析:
选项A)for循环可以用于循环次数不确定的情况;
选项B)for循环是先判断表达式,后执行循环体语句;
选项C)在for循环中,可以用break语句跳出循环体,从而接着执行循环体后面的语句。
43.B解析:
该题是一个for循环嵌套语句。
第一层for循环循环2次,第二层循环3次,但当j等于0和1时,将执行continue语句,不执行x++运算,所以每次执行完内循环后,x的增量为1。
最后一个x++运算将每次累加起来就是x的值。
44.B解析:
本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符“!
”的优先级大于不等于运算符“!
=”的优先级。
45.A解析:
Ⅰ和Ⅱ都属于无实际作用语句,但又都符合语法要求,Ⅰ因为条为1,是无限循环。
Ⅱ中省略了全部的表达式,也代表真,因此也是无限循环。
46.C解析:
do-while语句的一般形式为:
,其中循环体语句可以是复合型语句,但必须用花括号括起来。
while后必须要有分号作为语句的结束,在dowhile循环中,不可以省略while。
47.A解析:
此题中for循环的执行次数取决于关系表达式(i<
=9&
!
=876)的结果。
只要i<
=9且x!
=876,循环就将继续执行。
结束循环取决于两个条件:
或者i>
9,或者x=876,只要在执行scanf语句时,从终端输入876,循环就将结束。
如果从终端一直未输入876,则将由i值的增加使i>
9,从而结束循环。
按照题中所给定的for语句,每执行一次循环,i自增1,因此执行10次循环后,i的值为10,循环最终也将结束。
48.A解析:
while是先判断条件再执行语句;
do-while则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。
解析:
49.A【命题目的】考查对于while循环的理解情况。
【解题要点】while循环是先判断循环条件之后再进入循环体。
【错解分析】这个题目的循环体是空语句,每次做的仅仅是判断循环的条件,由于++运算优先于<
,所以每次都先++,后比较。
【考点链接】do---while循环是先执行循环体,之后判断循环条件。
50.C【命题目的】考查for循环的掌握情况。
【解题要点】for后一对括号中的表达式可以是任意有效的C语言表达式。
【错解分析】该题目的循环体部分为空语句,循环控制条件为m<
n,每一次m增3,n减1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。
【考点链接】for后一对括号中,允许出现各种形式的与循环控制无关的表达式,虽然在语法上合法,但这样会降低程序的可读性。
51.B【命题目的】考查循环嵌套的掌握情况。
【解题要点】这个题目中的k,每一次外层的for循环后都会被初始化为0,这样输出的k是最后一次做内部循环所得到的值。
【错解分析】最后一次做内部的循环时,m的值为3,所以内部的循环做两次。
【考点链接】for,while,do---while都可以相互嵌套,循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。
52.B【命题目的】主要考查continue语句的掌握情况。
【解题要点】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。
【错解分析】当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。
【考点链接】continue语句并没有使整个循环终止,而break语句则是终止整个循环。
第6章字符型数据
C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\”开头的字符。
其中“\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc=′\72′即表示占一个字符的变量c的ASCII码值。
2.D解析:
C语言的转义字符见下表所示。
转义字符
转义字符的意义
\n
回车
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 答案