C语言预习及课后习题参考答案15.docx

上传人:b****6 文档编号:15411701 上传时间:2023-07-04 格式:DOCX 页数:14 大小:23.47KB
下载 相关 举报
C语言预习及课后习题参考答案15.docx_第1页
第1页 / 共14页
C语言预习及课后习题参考答案15.docx_第2页
第2页 / 共14页
C语言预习及课后习题参考答案15.docx_第3页
第3页 / 共14页
C语言预习及课后习题参考答案15.docx_第4页
第4页 / 共14页
C语言预习及课后习题参考答案15.docx_第5页
第5页 / 共14页
C语言预习及课后习题参考答案15.docx_第6页
第6页 / 共14页
C语言预习及课后习题参考答案15.docx_第7页
第7页 / 共14页
C语言预习及课后习题参考答案15.docx_第8页
第8页 / 共14页
C语言预习及课后习题参考答案15.docx_第9页
第9页 / 共14页
C语言预习及课后习题参考答案15.docx_第10页
第10页 / 共14页
C语言预习及课后习题参考答案15.docx_第11页
第11页 / 共14页
C语言预习及课后习题参考答案15.docx_第12页
第12页 / 共14页
C语言预习及课后习题参考答案15.docx_第13页
第13页 / 共14页
C语言预习及课后习题参考答案15.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言预习及课后习题参考答案15.docx

《C语言预习及课后习题参考答案15.docx》由会员分享,可在线阅读,更多相关《C语言预习及课后习题参考答案15.docx(14页珍藏版)》请在冰点文库上搜索。

C语言预习及课后习题参考答案15.docx

C语言预习及课后习题参考答案15

第一章C语言概述

课前预习题

1.函数2.main()函数3.单行注释、块注释、//xxx、*xxx*/4.函数首部、函数体

5.scanf()6.函数调用7.编译、连接8.有穷性、确定性、有0到多个输入、有1到多个输出、有效性

课后习题

1.A参考分析:

C语言总是从main函数开始,main函数结束。

但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。

如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。

2.C参考分析:

C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。

因此,如果注释中存在错误,系统是不可能发现的。

另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。

3.D参考分析:

C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。

C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。

4.C

5.B参考分析:

通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。

尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。

6.C7.B8.C9.C10.C

11.绘制NS算法流程图。

(1)输入10个数,求其中的最大值。

(2)输入3个数,将它们升序排列输出。

输入a、b、c

a>b

输出a,b,c

t=a,a=b,b=t

c>b

c

c,a,b

a,c,b

输入数m

max=m

k=1

k<10

输入m

m>max

max=m

输出max

 

(3)输入2个数,求它们的最大公约数。

(4)输入一元二次方程的系数a、b、c,判断其根。

输入数m,n

m>n

k=n

m、n不能同时被k整除

k=k-1

输出k

k=m

输入数a,b,c

c=0

无数根

无根

一实根

d=b*b-4*a*c

d>=0

d=0

两虚根

两不同实根

两同实根

a=0

b=0

 

第二章数据类型、运算符与表达式

课前预习题

1.变量在内存中所占的字节数、变量的表数范围、变量允许参与的运算2.1、4、83.float、double

4.八进制、十进制、十六进制5.16.267.12、48.6、4、29.-6010.2

11.10、612.5.513.3.514.415.116.017.9

18.字符、数字、下划线19.'f'20.8.021.int型22.m/10%10*100+m/100*10+m%10

课后习题

1.A分析:

在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:

char<=short<=int<=long<=float<=double,只有A符合16位PC机中的具体环境。

2.C参考分析:

逗号表达式的计算结果是最后一个表达式的值。

k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。

3.B参考分析:

逗号表达式的计算结果是最后一个表达式的值。

b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。

4.A参考分析:

是关键字的有:

char、case、while。

5.B参考分析:

不是关键字的:

include、scanf、type

6.C参考分析:

合法的有:

A、P_0、la0、_A、_123、temp、INT。

7.C参考分析:

教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。

8.A参考分析:

不合法的B2,C2,C3,D2。

解释:

A2:

-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:

0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:

0x显然后面缺少数值,但在TC中是允许的。

9.D参考分析:

不合法的A1,B3,C1,C3,D。

解释:

A1:

--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常量前面允许不允许加上--号,是否可以负负得正,显然不可以,--在C中是自减运算,它只适用于变量;B1:

0XcdfX大写也可以!

C3:

5e2是个实型数。

10.B参考分析:

不合法的有A3,B,D1。

部分解释:

A1,D2:

C语言中小数点前面或后面的0可以省略。

但是不能只有小数点自身;A3,B3,D1:

e的前后必须有合法数字。

1.e2.1e2合法,.e2不合法;B1:

123是整型数,不是浮点数。

11.B参考分析:

不合法的有A2:

阶码不能为小数;A3:

浮点数的尾数及阶码不能用八进制数表示;C1:

e后必须有整数,C2:

阶码不能为小数;D1:

缺少尾数。

12.A参考分析:

"\"后面的数字,c总是按照八或十六进制解释。

由于c支持扩展ASCII字符集,所以,八进制数范围在0~377,十六进制数范围在00~ff。

13.B参考分析:

不合法的有B1,B2,B3,C3,D1,D3;但B3和C3值得讨论。

C中只有少数字母是转义字符,大多数字母不是。

像'\c'就不是,它就是字符c自身,非转义字母加"\"也仅表示它本身。

C3'\}'也表示自身。

本题的命题人显然不知道'\a'也是转义字符。

14.C

15.D参考分析:

不正确的有A3:

非法八进制数;B1、D1、D2:

缺少x;D3是十进制数。

16.C参考分析:

不正确的有A1:

这是十进制数;B1、D1:

缺少x

17.D参考分析:

不正确的有A2、C4:

不是ox打头;A3:

e后不是整数;B1是字符串;B2:

2.5不是整数。

18.A参考分析:

与PASCAL不同,B)字符串内的单引号不需双写。

C语言中,在不引起误解的情况下,双引号界定的字符串里的单引号可以不加转义标志"\",单引号界定的双引号字符也可以不加转义标志"\"。

19.C20.C

21.A参考分析:

不符合C语法规定的只有A,因为X为实型数。

22.A参考分析:

B)表达式不能出现在赋值号右侧;C)x是实型数,不能进行取余运算;D)应将float用括号扩起来(强制类型转换)。

23.D参考分析:

整型变量可以输入实型数值,实型变量也可以输入整型数值

24.D参考分析:

注意它的描述,是只能用于整数运算,而不是整型数运算。

25.B参考分析:

C不是赋值表达式,是逗号表达式,赋值仅是其中的一部分。

严格说来,B也不是赋值表达式,它是由两个赋值表达式组成的逗号表达式。

26.A、B参考分析:

表达式中的各字符以各自的ASCII码参与运算。

27.D参考分析:

理论上++运算都是针对整型(含字符型)的,尽管现在很多系统提供了对实型变量的增量运算。

28.A参考分析:

注意sum和sUM不是一个变量(区分大小写)。

29.D参考分析:

参考答案很明确地表明了,C语言中各种类型在内存中所占用的字节数由所用机器字长决定。

通常在PC机中字符、整型、实型所占用的内存空间大小为1、2、4个字节。

30.A参考分析:

转义字符'\72'为字符':

'。

31.A参考分析:

计算时要注意其结合性和优先级。

32.B参考分析:

算术表达式的类型由表达式计算结果的类型决定

33.C参考分析:

实型只要参与运算就自动转换为double型。

34.A参考分析:

A3转义字符以十六进制描述时,前面不能加0。

非法的还有B3

35.A参考分析:

c语言中整型和实型的绝对值函数各自独立,为abs和fabs;pow为一系统函数pow(y,x)=>yx。

36.D参考分析:

以上两题均未说明x,y的类型,从表达式的性质可分析隐含为实型,因此应使用fabs。

37.D参考分析:

计算机系统不能存储字符本身,存储的是字符的ASCII码。

37.B参考分析:

m=n*100+0.5赋值过程中有实型转整型的自动转换。

39.C参考分析:

表达式的类型由表达式结果的类型决定。

40.D参考分析:

表达式的类型由表达式结果的类型决定。

虽然本题各变量没有具体的变量值,由于参与运算的变量中z变量为double型,表达式计算的结果肯定为double型。

41.D参考分析:

A的值为0,B、C两个表达式相同,值为2,只有D的值为3。

42.C参考分析:

经计算可知,只有C的值为12,不为7。

第三章顺序结构程序设计

课前预习题

1.函数调用2.输出一个字符3.格式输出数据4.格式修饰符、格式符5.d、c、s

6.左、尾部(后右侧)7.%c8.取址、变量a的内存地址9.;10.{}(或大括号)

课后习题

1.D参考分析:

putchar函数的作用是输出一个字符,可以是常量或变量。

2.D参考分析:

-:

数据左齐,右补空格。

3.B、C

4.D参考分析:

答案B基本上是正确的,但是%x不能正确的输出长整型数据。

5.C参考分析:

0:

数据左侧必须充满,给定数据不足时,前面补0。

+:

数据前面显示符号位。

6.D参考分析:

#要求输出数据的类型特征符号。

7.A分析:

长整型数据输出应当加修正字符l,如果不加l仅能输出数据的低两个字节,高字节数据不能输出。

8.D参考分析:

A)首先读第一个十进制数赋给变量x,读第二个长十六进制数赋给变量y(此时有自动赋值转换),再读入格式规定的第二和第三个数据间的间隔符号逗号,最后读入第三个double型数据赋给变量z。

B)首先读入2个宽度的十进制数赋给变量x,再读入格式规定的第一和第二数据间的间隔符号星号,然后读入第二个十进制整数赋给变量y,然后读入第三个double型数据赋给变量z。

C)读入第一个十六进制数赋给变量x,然后虚读一个十进制数不赋给任何变量,最后读入一个八进制数赋给变量y。

D)%6.2f不符合格式规定,即不能规定读入数据的小数点后的数字位数。

9.A

10.BB参考分析:

读取数据格式中规定域宽时,系统仅读取指定宽度的数据。

11.D参考分析:

A)a1为1020,a2为随机值,c1为A,c2为B。

B)a1为10,a2为20,c1为,c2为A。

C)a1为10,a2为20,c1、c2均为□。

12.D13.B

14.D参考分析:

由于提供数据的格式与规定格式不一致,变量y,z不能获取正确的数据,均为随机值,故三变量之和也是随机数。

15.B16.D

17.A参考分析:

字符控制格式中有无空格对数据的读取有影响,B)ch1读取A,ch2和ch3为随机字符。

C)三个变量分别为A、B、C。

D)ch3为随机字符。

18.D19.C

20.A参考分析:

B)为转义字符。

C)为7和9两个字符ASCII码值之和的字符。

D)为码值为14的字符(控制字符)。

21.B

22.B参考分析:

这里强调的是赋值语句,请注意赋值表达式与赋值语句的区别。

23.B24.A

25.D参考分析:

本题有些偏,其他选项错误的原因为A)fabs(x),x不是double型。

B)pow(y)其格式原型为doublepow(doubley,doublex)。

C)y-z为负数。

26.*3.,3.142*分析:

不能输出的位会向前一位四舍五入输出。

27.c:

dec=120,oct=170,hex=78,ASCII=x

28.*d

(1)=3.50000e+00*d

(2)=3.500e+00*d(3)=□3.500e+00*

*d(4)=-3.50000e+00*d(5)=-3.50000e+00*d(6)=-3.5000e+00□*

参考分析:

通过本题应注意%f和%e在规定小数点后位数的区别。

%e小数位后面位数含e标志。

29.x=1y=2*sum*=3

10Squaredis:

100

30.

(1)10

(2)□□□□10

(3)56.

(4)□□□□□□3.

(5)5.68100e+02

(6)□□□3.14160e+00

(7)3.1416

(8)□□□□□□3.1416

参考分析:

采用g格式输出数据时,当数据<=10-5或>=107时,按指数方式输出(缺省正数11位,负数12位),否则按小数方式输出(缺省含小数点总宽度最多7位)。

且不输出无意义的0(后面)和小数点。

31.

(1)123.

(2)□□□□□□□123.456

(3)123.4560

(4)8765.

(5)□□□□□□8765.456

(6)8765.4560

(7)8765.4560

32.

(1)输出数据左对齐

(2)□□□□12##

12□□□□##

□□3.##

3.□□##

33.a=+00325x=+3.14159e+00

34.b、b、b

35.t=a、c=t;

36.-14

37.读入数据后不赋给相应的变量、把10给a1,把20不给任何变量,把30给a2,把40给a3

38.格式字符不正确、缺少&符号、scanf("%f",&k);

39.A□□□B□□□参考分析:

读取字符数据指定数据宽度时,系统读取第一个字符

40.a=3□b=7x=8.5□y=71.82c1=A□c2=a

第四章选择结构程序设计

课前预习题

1.0参考分析:

计算过程如下,a>b计算为真,然后计算真

(1)>c,结果为假

2.13.非0的数值。

4.y%2==1、y%2!

=0、y%2、(y-1)%2==0、!

(y%2==0)

5.&&、||、!

6.x=0&&((x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0))

参考分析:

原书提供的答案是(x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0),但当三个变量均为负数时不合适,后来本人思考了一个试图简化一些的答案,即x*y*z>0&&(x<0||y<0||z<0)可是若有一个变量为零,其他为负数时也不合适,只有参考答案才无懈可击。

8.0参考分析:

在本表达式的计算过程中A

9.110.011.012.113.014.115.x>2&&x<3||x<-10

16.0、117.1,0参考分析:

本题采用短路算法,由于x为真,后面的或和与运算均被短路。

18.119.1320.【1】ch>='A'&&ch<='Z'【2】ch=ch-3221.'x'22.5

课后习题

1.D参考分析:

c语言中没有专用的逻辑量,任何数值类型的数据都可以作为逻辑数据使用,判断时0为假,非零为真,计算时真置1,假置0。

2.C3.B

4.B参考分析:

C语言中实际上与运算和或运算优先级相等,由于C采用短路算法,所以不会影响B的结果,即不需要改成((x>=1)&&(x<=10))||((x>=200)&&(x<=210))

5.C6.C7.D8.C9.C

10.B参考分析:

本题为标准的短路算法,由于第一个表达式m=a>b为真,故第二个表达式n=c>d被短路不再计算。

因此,n值仍然保持原来的值2不变。

11.D12.B

13.CB参考分析:

c语言在计算表达式时采用短路算法。

14.AC15.B

16.C参考分析:

注意条件表达式不是a==b+c。

17.C参考分析:

m先与5进行关系比较,然后进行增量运算,m值为6,因比较结果为假,执行else,输出为6,m为7。

18.B19.C20.B21.B

22.B参考分析:

在C语言中,当一个表达式不等于0时,可以将不等于部分省略,其效果完全一样。

23.A参考分析:

x>12为假,取x-12。

24.B参考分析:

首先x进行--操作,x为9,然后与y进行等于比较,即9==9,然后y++为10。

由于比较结果为真,故计算--x,为8,赋给a。

25.A26.D27.C

28.【1】2

29.【1】a==0或者fabs(a)<1e-4【2】b==0【3】disc<0

30.【1】a+b>c&&b+c>a&&c+a>b【2】a==b&&b==c【3】a==b||b==c||a==c

31.【1】t==c【2】c>t【3】c>=50

32.【1】c

33.【1】mark/10【2】default:

【3】case9:

case10:

34.60-69

<60

error!

35.**1**

**3**

36.【1】x<0【2】x/10【3】y!

=-2

37.#&

38.a=2,b=1

39.【1】a/500【2】r=0.08

40.【1】r1=1.35【2】'e'【3】a*r1*(1-r2)

第五章循环结构程序设计

课前预习题

1.先判断条件,再执行循环体,最少执行次数为0;先执行循环体,再判断条件,最少执行次数为1

2.03.;4.;5.终止其所在的语句的执行、switch、循环

6.中止当前轮次的循环,转向下一轮次的循环条件判断7.3次8.**

9.【1】i%3==2&&i%5==3&&i%7==2【2】j%5==0

10.【1】c!

='\n'【2】c>='0'&&c<='9'

课后习题

1.C2.B3.A4.A5.D6.C7.【1】A【2】D8.B

9.C10.A11.C12.C13.C14.【1】B【2】D15.D

16.B17.D18.B19.B20.C21.D22.C23.D

24.D25.B26.C27.B28.B29.A30.A

31.【1】s%10【2】s/10参考分析:

本题各位数的分离,没有什么新意,一个十进制大数的人为“高位溢出”这种技巧,值得学习和模仿。

32.2*x+4*y==90

33.【1】e=1【2】new>1e-6

34.【1】100-5*i-2*j【2】k>=0

35.【1】j=1【2】k<7

36.31-1

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2