C语言基础知识 参考答案.docx

上传人:b****5 文档编号:29306810 上传时间:2023-07-22 格式:DOCX 页数:45 大小:43.22KB
下载 相关 举报
C语言基础知识 参考答案.docx_第1页
第1页 / 共45页
C语言基础知识 参考答案.docx_第2页
第2页 / 共45页
C语言基础知识 参考答案.docx_第3页
第3页 / 共45页
C语言基础知识 参考答案.docx_第4页
第4页 / 共45页
C语言基础知识 参考答案.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

C语言基础知识 参考答案.docx

《C语言基础知识 参考答案.docx》由会员分享,可在线阅读,更多相关《C语言基础知识 参考答案.docx(45页珍藏版)》请在冰豆网上搜索。

C语言基础知识 参考答案.docx

C语言基础知识参考答案

第一章 C语言基础知识参考答案

一,选择题

1   C    2D   3  A     4 C  5 A      6 D              

7C 分析:

C答案以数字开头了 

8D 分析:

int 是关键字

9 C       10D               11B   

12D 分析:

VisualC++6.0中int类型的变量占的字节数为4。

13B 分析:

B中出现了8,而八进制只能有0到7组成

14D 分析:

答案D中开头是0不是o

15A       16D           17B           

18D 分析:

3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本题目考察算术运算符,需要注意整数除

以整数结果只能是整数

19  A    20 C      21 A      22   C    23   D

24    C分析:

考察的是强制类型转换,正确的是k%(int)f  

25   B    26   C    27   C    28   B

29   A分析:

本题目主要考察n++表达式的值是n变化之前的值,然后使n的值增加1

30   A

31  D分析:

(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000同样a,b的类型是

double型的

32   D分析:

long和short不能相互修饰

33  A     34  C     35  B

36  B分析:

C语言的标识符中只能包含字线、数字和下划线,没有连接符。

37   D分析:

不同的计算机系统或者编译系统,对3种整数类型所占用的字节数有不同的

规定。

38  B

39    A分析:

++运算符有前缀和后缀两种形式,本题中的选项C就是前缀形式,其表达

式的值为增1后的值,而选项A为后缀形式,其表达式的值为增1之前的值。

而选项B和D

的表达式都是k加1之后的值

40    D分析:

字符常量是用单引号括起来的单个字符,所以选项B错误;此外还有一种特殊的字符专为控制设计,称为转义字符,有三种转义字符:

一种是由一个“\”开头加一个普通字符组成,代表一个字符。

如’\’’表示一个单引号字符,所以选项D正确;’\\’表示一个斜杠字符,而选项C中的’\’则是错误的;用“\”与其后的1~3位八进制数字构成的字符序列,表示ASCII码等值于该八进制数的字符;用“\x”与其后的1~2位十六进制数字构成的字符序列,表示ASCII码等值于该十六进制数的字符;所以选项A错误。

41   B分析:

字符常量是用单引号括起来的单个字符,所以选项A正确;此外还有一种特殊的字符专为控制设计,称为转义字符,有三种转义字符:

一种是由一个“\”开头加一个普通字符组成,代表一个字符。

如’\n’表示一个换行符,所以选项D正确;用“\”与其后的1~3位八进制数字构成的字符序列,表示ASCII码等值于该八进制数的字符,所以选项B错误,因为9不是八进制数字;用“\x”与其后的1~2位十六进制数字构成的字符序列,表示ASCII码等值于该十六进制数的字符;所以选项C正确。

42   D    43   B    44   A

45   B分析:

选项A中字符’0’的ASCII码值为48,所以A的结果不为1;选项B中’\0’代表空值,空值NULL的ASCII码值为0所以结果为1;选项C中字符’1’的ASCII码值为49,所以结果不为1;选项D相当于用0-48结果也不为1。

46    D

如果要表示十六进制字符,则要用’\x’开头,所以选项A错误;如果要表示八进制,则’\0’开头,后面跟1~3位的八进制数,八进制数由0~7组成,不包含8,所以选项B错误;用单引号括起来的单个字符才是字符常量,所以C错误;而’\n’是转义字符,用来表示回车符。

47   C    先将c1变量中的字符的ASCII码值输出,即为65,将变量c2中字符的ASCII

码值减2后输出,即为66。

48             A变量c1和c2中的值相同,所以转换成二进制数后,对应的二进制位上的值也相同,

当两值相同时,只有进行异或运算,结果才为0,所以c1^c2值为0。

所以本题的正确答案为A。

 

二,填空题

1  位   0  1

2  关键字  预定义标识符   用户标识符

3  8

4  八   十   十六

5  int       float           double

6  5+3.6/2=5+1.8=6.8

7   15  16  a++表达式的值是a变化之前的值,当然a本身增加了1

8  把10赋给变量B                  

9  print('****a=%d,b=%d****')

  10  3

整个表达式是一个逗号表达式,变量n和i赋值为2后,通过++i将i的值增加1变为3,

然后再通过i++为i增加1,整个逗号表达式的值为i++的值,此时是后缀,所以整个i++

表达式的值为3,而变量i的值为2。

第二章 顺序结构 参考答案

一选择题

1.C解析:

结构化程序的算法可以解决任何复杂的问题。

2.C解析:

C程序的基本组成单位是函数,在C程序中每行可以写多条语句,每条语句以分号结束,每条语句可以占用几行,在几行内写完。

3.C解析:

随意使用空语句会导致逻辑上出现错误,不要随便使用。

4.B    5.D    6.C    7.A    8.C

9.B解析:

在printf语句中,格式控制的个数只有一个,即%d,而输出项有两项,即a和b。

而得到的结果应该只有一个,所以应该输出第一个变量的值,即变量a的值。

10.C解析:

m=0256,即m是八进制的数0256,要以八进制无符号的形式输出,即输出256;n=256,即n是十进制的数256,也要以八进制无符号的形式输出,首先要把十进制数转化为八进制数,256转化为八进制为0400,以无符号形式输出,即输出400。

11.C解析:

第一个数据的输出控制宽度是2位,但是x的值是102,占3位,要输出的数据宽度大于规定的输出宽度,由于数据时右对齐方式,所以按数据的实际宽度输出,输出102。

第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是八进制数,所以要转换成十进制数10后再输出。

12.C   13.A

14.D解析:

floatx=-123.456;说明x为单精度浮点数据,单精度浮点数据对应的输出格式应该为%f。

15.D

16.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。

17.B解析:

输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位的数,而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的值为6.000000,后面输入的543则没有赋值给变量。

18.B   19.B       20.A

21.A解析:

从键盘输入数据的格式必须与输入控制要求的格式一样,B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。

22.C

23.C解析:

x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后的数实现了小数位到整数位的四舍五入。

最后再除以100.0,把数字变回原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。

24.C   25.A

26.D解析:

第1个输出语句要求ch以%c(字符)形式输出所以为输出“a”,以%d(整数)形式输出为,字符转换为整型要使用ASCII码所以为“97”,k没有对应的输出符所以没有输出,第2个输出语句要求以整型方式输出k得到“12”。

结果为“a,97,k=12”。

27.B   28.D

 

二.填空题

1.结构化

2.一条语句  分号

3.88

4.10

5.25  21   37

6.2

7.4

8.09

9.i=10,j=20

10.16

11.A空格B回车

12.B 65

13.34579

14.123

15.12

 

 

 

 

 

 

 

第三章选择结构参考答案

一、选择题

1、D逻辑运算符两侧运算对象可以是任意合法的表达式,应该是两条语句,所以选D。

2、A此题主要是考查C语言中if语句的合法条件表达式描述,在C语言中“不等于”用“!

=”描述而不是用“<>”描述。

B、C、D选项都是合法的表达式。

3、Dif语句的表达式可以是任意合法的表达式

4、D此题主要是考逻辑运算和关系运算的优先级别.只要掌握!

、算术运算和&&的优先级别便可选对.这几种运算符的具体优先级关系见见教材P188,附录三。

5、A此题主要是考逻辑运算符!

、&&和||之间的优先级别。

最高,&&次之,||最低。

先求得!

a为0,所以不必计算!

b的值,即!

a&&!

b的值为0,由c=0,!

c=1,而0||1=1,所以选A。

6、答案是B

C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在’A’和’Z’之间就可以了,选项A和C符合要求。

大写字母的ASCII码值的范围为65到90,所以D选项符合要求,所以只有C是错误的。

7、D此题考到了++运算符以及逻辑运算。

当计算机碰到a&&b时,先计算表达式a的值,若为真才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=0,则0&&b必为0;而a||b则正好是相反的,即先计算表达式a的值,若a为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则1||b的值必为1,理解了这两点后,我们在看题目:

i++==1的值为1,此时i为2,所以计算&&后的表达式,首先计算++j==3的值为1,j的值为3,由上面的原理我们可知,||后面的表达式不用再计算,所以此时i,j,k的值分别为2,3,3。

8、C此题主要是从概念上考if和else的配对问题

9、A此题主要是从实际应用上考if和else的配对问题,a=1,则!

a的值是假,程序执行第一个if下的第一个else语句,在判断a==0显然条件为假查看第二个if是否有其配对的else,发现没有,则执行最后一条printf语句输出b的值,因为在整个过程中程序没有对b的值做任何改变,所以答案选择A.

10、D此题主要是考if和else的一般形式。

if后面的语句要么是单条语句,要么是由{}扩起来的复合语句,不能是if后有两条语句的,所以本题程序在运行的时候会出错。

11、C此题考到了关系运算和逻辑运算及一定数学知识。

|x-y|<10可等价为-10

12、D此题也是考到了真假条件的变换和if-else语句。

A、B、C三项都是表示a为真时输出x,为假时输出y,而D则是a为假时输出x,为真时输出y。

13、D此题考查了赋值表达式的一般格式,=的左边是变量名,右边是表达式,所以D项错误。

14、C此题主要是考查逻辑值用整数值替代的结果,数0代表逻辑假,非零值代表逻辑真。

15、C此题主要是考查if-else-if和if语句。

具体分析见教材第49页例7。

16、C此题主要是考查if-else-if以及关系表达式的运算。

首先判断第一个条件a>b>c的值为0,所以不执行第一条语句;在判断第二个条件,c-1>=c表达式的结果为假,所以也不执行其下面的语句,因此执行最后一条语句,将输出d+2的值为4。

17、C此题主要是考查条件表达式和条件运算符。

首先要注意条件表达式的结合方向,它是从右至左的(可参照附录三)第一个条件表达式的值为a,第二个条件表达式的值为c,而c=6,所以答案选C。

18、A此题主要是考查if-else语句和条件表达式的转化。

只要理解了if-else语句和条件表达式的运算规则的话,就很容易选出A。

19、D此题主要是考查在switch语句中break和default的作用及break的适用范围。

详细说明可参看教材第三章P53对switch的说明部分。

20、B此题考查的是条件表达式求解问题。

先看第一个条件表达式语句,ac为假,所以k=k=2选B

21、C此题考查逻辑与&&的运算工作特性,&&运算的是从左至右,当左边表达式的值为假时,右边的表达式则不执行,因本题中k1=k1>k2的值为0亦为假,该表达式是一个赋值语句,且此时k1的值为0,因而右边的表达式k2=k2>k1不执行,因此K2的值没有做任何改变。

值依然是20,所以本题选选B。

22、C此题考查的是真假条件的等价问题。

x-y为真表示x-y是非0的,也即x-y<0或x-y>0即选C。

23答案是B

满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。

当变量c的值不为2,4,6

时,其值只能为3或5,所以表达式c!

=3和c!

=5中至少有一个为真,即不论c为何值,B

选项中的表达式的值都为真,所以B选项正确。

24答案是D举个例子 如x=3带入得出结果为0的选项是D选项。

25答案是D

条件x==0||x==1为真,所以执行y=1,然后执行

y=x*x-(x-2)*(x-2)=1-(-1)*(-1)=1-1=0,所以选择A。

26答案是B

此题考查if语句条件表达式后的语句块区分问题。

题中第一条if语句之后有两条赋值语句,但他们不在一个复合语句之内,所以只有a=b是直接附属于第一条if语句的,因此当a=3,b=5,c=7,则a>b为0,程序不执行a=b,但执行c=a此时c的值是3,在第二条if语句的条件表达式中c!

=a条件值为0,则不执行c=b因此最终a、b、c的值为3、5、3,因此选B

 

27答案是D

C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在’A’和’Z’之间就可以了,选项B的书写格式错误,而选项C不符合要求。

大写字母的ASCII码值的范围为65到90,所以A选项不符合要求,小写字母的ASCII码比大写字母的ASCII码大32,所以只有D是正确的。

28答案是B,此题考查三目运算符的运算特性。

29答案是B,此题考查switch语句运算过程。

30答案是C,表达式y%3==0的值为1,所以执行下面的输出语句,表达式—y的值为8,所以输出结果是8。

选择C。

31答案是C,表达式x%3的值为2,非0所以执行下面的输出语句,将x--的值8输出,此时x的值变为7,然后再执行下一个输出语句,将--x的值6输出,x的值也变为6,所以选择C。

32答案是D,这是嵌套形式的switch语句,因为break结构影响较大,而此程序中的第一个case后没有break语句,程序执行时,x=1,执行内嵌的switch语句,因y=0,执行a++,使变量a的值为1并终止内层switch结构,回到外层。

程序继续执行case2后面的语句a++;b++;,这使变量a,b的值分别为2和1,外层switch语句结束。

所以此题选择D。

33答案是C,switch语句中开关条件必须是整型、字符型和float类型,此外强制类型转

换的格式C选项正确。

 

二、填空题

1、答案是:

(x%3==0)&&(x%7==0)

2、答案是:

4

分析:

程序中是一个if—else结构。

分析时要理清if与else的配对情况。

3、答案是:

4,5,99

分析:

题中的重点在于两个if结构,大家要注意两点:

第一,如果if后面没有花括号,则它后面的第一条语句是它的结构体,并且只有一条语句。

(如果后面是一个结构,则整个结构都属于if结构的结构体)。

第二,变量在不断的被重新赋值,所以其值在不断的变化。

4、答案是:

yes,分析:

该题与第二题是同一回事。

5、答案是:

1。

分析:

这个题还上一个if—else结构,考查点仍然是考察考生是否能够正确识别if后面括号里的表达式p=a!

=0,根据运算符的优先级知道,这里应该先算a!

=0,这是一个逻辑运算,a的值为5,所以a!

=0为真,其逻辑值为1,将1赋值给p,所以条件为真,输出p的值,为1。

6、答案是:

非零

7、答案是:

585858。

分析:

题中有三个if结构,注意,这三个if结构是相互独立的,是互不相关的,只要他们的条件成立,就要执行其结构体(后面的输出语句)。

通过键盘输入,得a的值为58,所以a>50为真,输出58;然后判断a>40,仍然为真,再输出58,最后判断a>30,肯定为真,所以再输出58,连续三次输出58。

8、答案是:

0。

分析:

本题的关键在于关系运算符的运算次序,a=5,b=4,c=3.a>b>c看起来是真的,但是这这是数学里面是这样的,这里我们要一步一步的计算,先算a>b,a确实大于b,所以为真,逻辑值为1,后面的计算就变成了1>c,显然为假,逻辑值为0,并将它赋值给d,所以最后输出d的值为0。

9、答案是:

3。

分析:

这个题主要考察条件运算符。

程序要输出(P/3>0?

p/10:

p%3)这个条件表达式的值。

P为30,所以p/3=10,10>0显然为真,所以整个表达式的值应该是p/10的值,p/10得3。

10、答案是:

21。

分析:

题中是一个switch嵌套结构。

里面的switch是case1的语句,题的关键点在于这个语句(即里面的这个switch结构)的后面并没有跳出整个结构的break语句。

所以,当x=1,与case相配以后,执行完后面的语句(即里面的这个switch结构),然后没有遇到break语句,所以并不跳出结构体,而是继续执行case2后面的语句。

所以最后得到的结果应该是2 1,而不是1 0。

11、答案是:

0。

字符空格的ASCII码不为0,所以本题中表达式!

c的值为0,b=0&&1的结果显然为0。

12、答案是:

2。

此题考查逻辑或运算的运算特性,当||运算的左边的表达式值为1时则不进行右边表达式的计算。

此外对于自增运算a++的运算规则是先使用在自增。

13、答案是:

-4。

表达式!

n的值为1,所以执行x-=1后x=1;表达式m的值为非0值,所以执行其后的语句x-=2后x的值为-1,表达式x的值也为非0,所以执行其后的语句后x的值为-4,最后输出x的值即为-4。

14、答案是:

#&。

表达式c==5的值为真,所以表达式的值等于1,因此输出符号“#”,然后执行“break”,继而去执行“default:

printf(“&”);”语句,输出符号“&”。

15、答案是:

1217。

当从键盘输入x的值为12时,程序自上而下执行经过三个if条件判断第一个条件不满足,第二、第三两个都满足。

因此最终输出结果为1217。

16、答案是:

a:

b       c:

t1。

条件表达式类似于if语句,根据“?

”前面子表达式的逻辑值来判断应该计算“:

”前面的子表达式还是后面的作为整个条件表达式的结果。

题目要求输出a、b、c3个变量中的最小值,所以当a

b。

同理,后一空应填c:

t1。

第四章循环结构参考答案

一、选择题:

1.       B  

解析:

a的值为1,a<6为真,执行循环体,b的值加a后为3,a的值加2后为3,b的值与10求余运算后值为3。

①    a的值为3,a<6为真,执行循环体,b的值加a后为6,a的值加2后为5,b的值与10求余运算后值为6。

②    a的值为6,a<6为真,执行循环体,b的值加a后为11,a的值加2后为7,b的值与10求余运算后值为1。

③    a的值为7,a<6为假,不执行循环体,直接输出a、b的值为7,1。

2.       A 

解析:

k的值为5,进入循环,(--k)表达式的值为4(真),同时k的值改变为4,输出表达式k-=3的值1,同时k的值为1。

k为1,表达式(—k)的值为0,结束循环。

3.       A 

解析:

X=0,y=5,z=3,(z>0&&x<4)值为真,进入循环体,y值为4,z值为2,x值为1

1. (z>0&&x<4)值为真,进入循环体,y值为3,z值为1,x值为2

2. (z>0&&x<4)值为真,进入循环体,y值为2,z值为0,x值为3

3. (z>0&&x<4)值为假,结束循环。

4. 输出x,y,z的值3,2,0

4.       D 

解析:

当K的值为3时,只执行case 3后面的语句n+=k,n的值为3; 

当k的值为2时,先执行case 2后面的语句,但没有break,所以不会退出,继续执行case 3后面的语句n+=k,n的值为5;

当k的值为1时,先执行case 1后面的语句n+=k,n的值为6,先执行case 2后面的语句(没有),继续执行case 3后面的语句n+=k,n的值为7。

输出n的值7。

5.       B

解析:

在循环体中有“s+=1;”s的初始值为0,要让s的值等于2必须是循环体执行两遍。

当循环提执行两遍后a的值等于-3,所以在n=-3的时候循环体执行两遍后条件表达试(a!

=0)为假,会退出循环。

6.      B

解析:

程序开始时,y=10,while循环中执行y自减运算,值的注意的是他的循环体只是一个空语句,则由于自减运算y--的特点:

先使用后自减,因为当y的值减为0时,while循环结束,但y变量依然执行自减运算,此时y=-1。

因此最终输出的y的值为y=-1,因此选B。

7.       A 

 解析:

x=3;先执行循环体,输出表达式x-=2的值1,同时x的值也改变成1,再判断表达式的值(!

x),x的值为1(真),(!

x)为假,循环结束。

8.       B 

解析:

分析:

B选项每次进入循环体,都要先执行p=1;即1赋值给p.所以不能求出5!

的值。

9.       D

解析:

变量i每次增量为2,变化过程为:

1->3->5->7->9,语句s+=1每次执行使s增加的数为:

2,4,6,8,10,所以s的值为自然数1~10中偶数的值。

10.   C 

解析:

C项s=s+1/n,1/n首先运算,n为整型变量,1也是整型变量,当n=2…10时,1/n的值为整数0,故C不正确

11.    B分析过程与第6题类似。

12.   C

13.   A

从键盘输入123450后,程序从main函数开始执行,先将1读入到s变量中,while的判断条件s>0成立,则执行循环体。

循环体语句是一个switch结构的语句,依据s的值去执行相应的case语句,直到碰到break语句跳出switch结构。

第一次

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1